Book 8

Chapter 8. 입출력장치

장치 컨트롤러와 장치 드라이버 장치 컨트롤러와 장치 드라이버라는 개념을 통해 다양한 외부 장치가 컴퓨터 내부와 어떻게 연결되고 소통하는지를 알아보겠습니다. 장치 컨트롤러 입출력장치에는 종류가 너무나도 많습니다. 장치가 다양하면 장치마다 속도, 데이터 전송 형식 등도 다양합니다. -> 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기 어렵습니다. 일반적으로 CPU와 메모리 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮습니다. 전송률(Transfer Rate) : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신중개 오류 검출 데이터 버퍼링 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받은 데이터를 버퍼라는 임시 저장 공간에 저장..

Chapter 7. 보조기억장치

다양한 보조기억장치 보조기억장치에는 다양한 종류가 있습니다. 그중 가장 대중적인 보조기억장치 하드 디스크와 플래시 메모리를 이야기해보자 합니다. 하드디스크(HDD : Hard Disk Drive) RPM(Revolution Per Minute) : 분당 회전수 플래터(Platter) : 하드 디스크에서 실질적으로 데이터가 저장되는 곳(동그란 원판) 스핀들(Spindle) : 플래터를 회전시키는 구정요소 헤드(Head) : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소 디스크 암(Disk Arm) : 헤드가 원하는 위치로 이동시킬 수 있도록 도와주는 것 트랙(Track) : 플래터를 여러 동심원으로 나누었을 때, 그중 하나의 원 섹터(Sector) : 하드 디스크의 가장 작은 전송 단위 실린더(Cylin..

Chapter 6. 메모리와 캐시 메모리

RAM의 특징과 종류 주 기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, '메모리'라는 용어는 그 중 RAM을 지칭하는 경우가 많다. RAM의 특징 RAM : 휘발성 저장 장치이고, 보조기억장치는 비휘발성 저장 장치입니다. 휘발성 저장 장치(volatile memory) : 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날라가는 저장 장치 비휘발성 저장 장치(non-volatile memory) : 전원이 꺼져도 저장된 내용이 유지되는 저장 장치 ex) HDD, SSD, CD-ROM, USB.. RAM의 용량과 성능 RAM이 커지면, 프로그램 실행 속도가 증가합니다. 하지만, 어느정도 RAM의 용량이 커지면 프로그램의 속도가 그에 비례하여 증가하지 않습니다. RAM의 종류 DRAM(Dyn..

Chapter 5. CPU 성능 향상 기법

빠른 CPU를 위한 설계 기법 클럭, 멀티코어, 멀티스레드가 각각 무엇인지 알아보고, 이들이 CPU 속도와 어떤 관계가 있는지 알아보겠습니다. 클럭 클럭은 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위입니다. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 클럭 속도 : 헤르츠(Hz) 단위로 측정 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수 Q) 클럭 신호를 마냥 높이면 CPU가 무지막지하게 빨라질까요? A) 꼭 그런건 아닙니다. 필요 이상으로 클럭을 높이면 발열이 심각해집니다. 코어와 멀티코어 그래서, 클럭 속도를 늘리는 방법 이외에는 뭐가 있을까요? 코어 수를 늘리는 방법('듀얼 코어', '멀티..

Chapter 4. CPU의 작동 원리

ALU와 제어장치 ALU 먼저, ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들입니다. ALU : 연산한 결과값과 플래그를 내보냅니다. 플래그 종류 의미 사용 예시 부호 플래그 연산한 결과의 부호를 나타냅니다. 부호 플래그가 1일 경우 계산 결과는 음수, 0일 경우 계산 결과는 양수를 의미합니다. 제로 플래그 연산결과가 0인지 여부를 나타냅니다. 제로 플래그가 1일 경우 연산 결과는 0, 0일 경우 연산 결과는 0이 아님을 의미합니다. 캐리 플래그 연산 결과 올림수나 빌림수가 발생했는지를 나타냅니다. 캐리 플래그가 1일 경우 올림수나 빌리수가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미합니다. 오버플로우 플래그 오버플로우가 발생했는지를 ..

Chapter3. 명령어

소스 코드와 명령어 모든 소스 코드는 컴퓨터 내부에서 명령어로 변환됩니다. 소스 코드 : 프로그래밍 언어로 만든 코드입니다. 고급 언어와 저급 언어 고급 언어(High-Level Programming Language) : 개발자가 이해하기 쉽게 만든 언어 입니다. 저급 언어(Low-Level Programming Language) : 컴퓨터가 이해하고 실행하는 언어입니다. 기계어(Machine Code) : 0과 1의 명령어 비트로 이루어진 언어입니다. 어셈블리어(Assembly Language) : 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어입니다. 컴파일 언어와 인터프리터 언어 컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어입니다. 인터프리터 언어 : 인터프리트 방식으로 ..

Chapter2. 데이터

[2-1] 0과 1로 숫자를 표현하는 방법 정보 단위 먼저, 컴퓨터는 0또는 1밖에 이해하지 못합니다. 따라서 0과 1을 나타내는 가장 작은 정보 단위를 비트(Bit)라고 합니다. n비트로 2^n가지의 정보 표현 가능합니다. 프로그램은 수많은 비트로 이루어져 있습니다. 비트보다 더 큰 단위를 사용합니다. 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 ... 워드(Word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위 하프 워드(Half Word) : 워드의 절반 크기 풀 워드(Full Word) : 워드 크기 더블 워드(Double Word) : 워드의 두 배 크기 이진법 이진법은 1을 넘어가는 시점에 자리 올림을 하여 0과 1만으로 모든 수를 표현하는 방법입니다. 0과 1로 수를 표..

Chapter 1. 컴퓨터 구조 시작하기

[1-1] 컴퓨터 구조를 알아야 하는 이유 컴퓨터 구조를 알지 못하고 프로그램을 개발하여도 큰 지장이 없어보긴 합니다. 하지만, 컴퓨터 구조를 이해하고 개발하는 것과 알지 못하고 개발하는 것에는 큰 차이가 있습니다. 이 차이를 '문제 해결'과 '성능, 용량, 비용' 두가지 관점에서 알아보도록 하겠습니다. 문제 해결 강의 또는 책에 나와있는 코드를 자신의 컴퓨터에서 똑같이 따라 쳤는데, 코드가 제대로 작동하지 않는 경우가 종종 있습니다. 이러한 문제가 발생 하였을 때, 컴퓨터 구조에 대한 이해가 있지 않는다면 해결하기 어려울 가능성이 있습니다. 또한 실무에서도 개발할 때는 문제 없이 작동했던 코드가 실제 사용자들에게 선보이는 자리에서는 작동하지 않는 경우가 있습니다. 이러한 상황에서는 코드상의 문법적 오류..