본문 바로가기

CS

(53)
[컴퓨터구조] 명령어 실행 (명령어 인출, 실행 사이클) 김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다. 1. 명령어 실행 - CPU는 명령어가 저장된 기억장치에서 명령어를 인출해 실행하여 작업을 수행한다. - CPU가 한 개의 명령어를 실행하는 데 필요한 과정을 명령어 사이클(instruction cycle)이라고 한다. 이 명령어 사이클은 CPU 프로그램이 실행된 순간부터 전원을 끄거나 회복 불가능한 오류가 발생하여 중단되기 전까지 계속 반복된다. - 명령어 실행은 크게 두 부분으로 나뉜다. CPU가 기억장치로부터 명령어를 읽어오는 단계를 명령어 인출(instruction fetch), 명령어를 실행하는 단계를 명령어 실행(instruction excution)로 나뉜다. 2. CPU ..
[컴퓨터구조] CPU의 기본 구조 김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다. 1. CPU 기본 구조 CPU는 산술논리연산장치(Arithmetic and Logical Unit : ALU)와 레지스터 세트(register set)와 제어 유니트(controll unit)으로 이루어져 있다. 1-1) ALU - 산술 및 논리 연산들을 수행하는 회로들로 이루어진 하드웨어 모듈이다. 산술은 덧셈, 뺄셈, 곱셈, 나눗셈을 말하며 논리 연산은 AND, OR, NOT, XOR 등등이 있다. 1-2) 레지스터 - CPU 내부에 있는 메모리이다. 레지스터는 CPU 내에 있는 메모리로 엑세스 속도가 컴퓨터 내부 장치들 중에서 가장 빠르다. 하지만 레지스터는 내부 회로가 복잡하고 ..
[컴퓨터구조] 컴퓨터시스템 개요 (3) 김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다. 1. CPU - 메모리 접속 1-1) 시스템 버스 CPU는 컴퓨터의 뇌와 같다. 뇌(CPU)가 컴퓨터의 다른 주요 구성요소들과 어떻게 접근하고 제어할까. 사실 CPU와 기억장치 즉 메모리는 직접적으로 연결되어 있지 않다. CPU는 데이터를 교환하는 통로, 즉 버스를 통해서 메모리에 있는 데이터를 이동하고 메모리에 저장도 할 수 있다. 이 통로를 시스템 버스(system bus)라 한다. CPU는 아래의 그림과 같이 시스템 내의 다른 요소들과 시스템 버스를 통해 데이터를 주고 받는다. 1-2) 주소 버스(address bus)란? - 주소 버스는 CPU가 발생하는 주소 정보를 전송하는 신..
[컴퓨터구조] 컴퓨터시스템 개요 (2) 김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다. 1. 컴퓨터가 받아들이고 처리하는 정보의 종류는 프로그램 코드(Program Code)와 데이터(datat)가 있다. 디지털 컴퓨터에서는 그러한 모든 정보들은 2진수를 나타낼 수 있는 비트(bit)들의 조합으로 표현된다. 2. 컴퓨터 프로그램은 C, C++, Python과 같은 고급 언어(high-level language)를 이용해 작성된다. 사람이 보고 만들기에는 쉽지만 고급 언어를 기계가 이해할 수는 없다. 따라서 고급 언어로 만든 프로그램을 컴파일러(compiler)라고 부르는 소프트웨어에 의해 기계가 이해할 수 있게 번역한다. 이렇게 번역된 언어를 기계어(machine lang..
[컴퓨터구조] 컴퓨터시스템 개요 (1) 김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다. 1. 컴퓨터 시스템은 하드웨어와 소프트웨어로 구성된다. 1-1) 하드웨어(Hardware) 컴퓨터에서 각종 정보의 전송 통로를 제공하고 정보에 대한 처리가 일어나는 물리적인 실체를 하드웨어라고 한다. 예를 들어 메인보드, CPU, 램(DDR5...), 키보드, 마우스, 모니터 등 1-2) 소프트웨어(Software) 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고 그러한 동작들이 수행될 시간을 지정해주는 명령어들의 집합이다. 시스템 소프웨어는 Window, Unix, Linux와 같은 운영체제이고 응용 소프트웨어는 워드프로세서, 웹 브라우저 등을 들 수 있다. 2. 컴퓨터는 프로..
[자료구조] 트리(tree) 1. 트리(tree)란? 계층적 형태의 자료구조를 뜻한다. 트리라고 부르는 이유는 나무를 거꾸로 엎어놓은 모양을 하고 있기 때문이다. 2. 용어 정리 (1) 노드(node) : 트리의 구성요소 (2) 루트(root) : 트리의 가장 윗 부분 노드 (3) 서브트리(subtree) : 트리 안에서 다시 어떤 노드를 루트로 정하고 그 자손으로 이루어진 트리 (4) 간선(edge) : 투르와 서브트리를 연결하는 선 (5) 부모(parent) : 어떤 노드에서 가지로 연결된 위쪽 노드 (6) 자식(child) : 어떤 노드로부터 가지로 연결된 아래쪽 노드 (7) 형제(sibling) : 같은 부모를 가지는 노드 (8) 조상(ancestor) : 어떤 노드에서 가지로 연결된 위쪽 노드 모두 (9) 자손(descen..
[자료구조] 이중연결리스트(Double Linked List) - 이중연결리스트는 앞 노드를 가리키는 rlink와 뒤 노드를 가리키는 llink 두 개의 링크가 더해진 구조이다. 이렇게 함으로써 양방향으로 검색이 가능해진다. - 이중연결리스트는 head라는 노드 포인터를 가지지 않고 데이터가 없는 빈 노드 구조체인 head를 가진다. head 구조체의 오른편에 리스트를 연결시킨다. 따라서 맨 처음 초기화 단계에서 head 구조체의 rlink와 llink 모두 head 자신을 가리킨다. //head 초기화 함수 void init(DListNode* head){ head->rlink = head; head->llink = head; } - 삽입할 때는 head 구조체의 오른쪽에 삽입할 것이다. //노드 삽입 함수 DListNode* insert_node(DListNod..
[자료구조] 연결리스트로 구현한 큐(queue) 1. 연결된 큐(Linked queue) 연결리스트로 구현한 스택과 마찬가지로 큐 자료구조를 배열이 아닌 연결리스트로 구현한 것이다. 기본적인 큐 구조는 Last In First Out : LIFO 로 동일하며 큐의 rear단에서 삭제가 일어나고, front단에서 삽입이 일어난다. 2. 삽입 연산(enqueue) 삽입할 경우 큐의 rear의 링크가 새로운 노드를 가리키게 한다. 큐가 공백 상태일 경우에는 새로 만든 노드가 큐의 front, rear 모두 가리키게 한다. //큐가 공백 상태인지 확인하는 함수 int is_empty(LinkedQueueType *q){ return q->front == NULL; } //삽입 함수 void enqueue(LinkedQueueType *q){ int data;..