반응형

공부/컴퓨터구조 7

[ 컴퓨터구조 ] 보조기억장치

1. 다양한 보조기억장치 1.1 하드디스크 하드디스크는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다. 그러기에 자기 디스크의 일종으로 지칭하기도한다. 하드디스크는 CD와 비슷하게 생긴 동그란 원판에 데이터를 저장한다. 이를 플래터(platter)라고 한다. 플래터는 자기 물질로 덮여있어 수많은 0과 1의 역할을 하는 N극과 S극을 저장한다. 이는 양면다 사용가능하고 여러개가 붙어있는 상태이다. 이 플래터를 회전시키는 구성요소를 스핀들(spindle)이라고 한다. 스핀들이 플래터를 돌리는 속도는 분당 회전수를 나타내는 RPM이라는 단위로 표현된다. 이런 플러터의 데이터를 읽는 구성요소는 헤드(head)이다. 이런 헤드를 이동시키는 것은 디스크 암(disk arm)이다. 플래터의 한 면당 헤드가 달려..

[ 컴퓨터구조 ] 메모리와 캐시메모리

1. RAM의 특징과 종류 1.1 RAM의 특징 RAM은 전원을 끄면 내용이 사라지는 휘발성 저장장치이다. RAM에는 보통 실행할 대상을 저장한다. CPU는 실행하고 싶은 프로그램이 있다면 RAM으로 복사하여 저장한 뒤 실행한다. 1.2 RAM의 용량과 성능 RAM이 작다면 실행할 프로그램이 있을때마다 복사하여 저장해야하지만 RAM의 용량이 크다면 여러개의 프로그램을 저장해놓고 사용할 수 있다. 하지만 RAM이 큰수록 무한으로 성능이 좋아지는것은 아니다. 1.3 RAM의 종류 DRAM DRAM는 Dynamic RAM 의 준말이다. 이는 저장된 데이터가 동적으로 변하는 RAM을 의미한다. DRAM은 시간이 지나면 데이터가 사라지기 때문에 소멸을 막으려면 일정 주기로 데이터를 다시 저장해야한다. 우리가 일반..

[ 컴퓨터구조 ] CPU 성능 향상 기법

1. 빠른 CPU를 위한 설계 기법 1.1 클럭 컴퓨터 부품들은 클럭신호에 맞춰 움직인다. 그렇기 때문에 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다. 클럭 속도는 헤르츠(Hz) 단위로 측정한다. 이는 1초에 클럭이 몇 번 반복되는지를 나타난다. 보통 클록의 속도는 일정하지 않고 고성능리 필요할 때는 클럭속도를 높이고 그렇지 않을 때는 유연하게 속도를 낮춘다. 1.2 코어와 멀티코어 클럭속도를 아무리 올려도 CPU의 성능을 올리기엔 한계가 있다. 이에 대한 해결방법으로 CPU의 코어와 스레드 수를 늘리는 방법이 있다. 지금까지는 한 CPU에 1코어만 있다고 생각했지만, 요즘에는 '명령어를 실행하는 부품'을 코어라고 부르고 CPU에는 이 코어가 여러개 있기도하다. 이렇게 코어를 여러개 포함하고 있는 ..

[ 컴퓨터구조 ] CPU의 작동원리

1. ALU와 제어장치 이번에는 CPU 내부에 있는 ALU와 제어장치에 대해 알아 볼 것이다. 1.1 ALU ALU는 레지스터를 통해 피연산자를 받아드리고, 제어장치로부터 수행할 연산을 제어 신호를 받아드린다. 이렇게 받은 정보들로 연산을 수행하고 결과를 레지스터에 저장한다. 매번 메모리에 저장하면 속도를 저하 시킬 수 있으므로 CPU안에 있는 레지스터에 우선 저장한다. 또, ALU는 음수와 양수를 구별하기 위한 플래그도 내보낸다. 플래그는 연산 결과에 대한 추가적인 정보를 가지고 있다. 부호 플로그 음수일때는 1 , 양수일때는 0이된다. 제로 플로그 연산결과가 0이면 1 , 0이 아니면 1이 된다. 캐리 플래그 올림수나 빌림수가 발생했을 때 1 , 발생하지 않았을 때 0이 된다. 오버플로우 플래그 오버..

[ 컴퓨터구조 ] 명령어

1. 소스 코드와 명령어 우리가 작성하는 소스코드는 컴퓨터 내부에서 명령어로 변환되어 컴퓨터를 작동시킨다. 1.1 고급언어와 저급언어 C, C++, JAVA와 같은 프로그래밍 언어들은 모두 사람들이 이해하기 쉽게 만든 고급언어이다. 반대로 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급언어라고 한다. 저급언어는 명령어로 이루어져 있다. 저급언어는 0과1로 이루어진 기계어와 0과1을 전역한 어셈블리어가 있다. 짜피 컴퓨터가 고급언어에서 저급언어로 바꿔주는데 왜 저급언어를 알아냐하냐!!라고 할 수 있지만 하드웨어랑 밀접한 임베디드 개발자, 게임개발자, 정보보안 전문가 등의 개발자들은 어셈블리어를 많이 사용한다. 어셈블리어를 잘 관잘하면 프로그램이 어떤 절차로 작동하는지 이해할 수 있기 때문에 개발자라면 ..

[ 컴퓨터구조 ] 데이터

1. 0과 1로 숫자를 표현하는 방법 컴퓨터는 0과 1로 모든 정보를 표현하고 이해한다. 1.1 정보단위 컴퓨터는 0과1밖에 이해하지 못한다. 0과 1을 나타낸느 가장 작은 정보 단위를 비트라고한다. n개의 비트가 있을 때 2^n개의 정보를 표현할 수 있다. 우리가 실핸하는 모든 프로그램은 수십, 수백만 비트로 미루어져있다. 하지만 우리가 프로그램의 용량을 말할때 23238432981비트야! 라고 말하지는 않는다 ㅋ 1바이트(byte) - 8비트 1킬로바이트(kB) - 1000비트 1메가바이트(MB) - 1000킬로바이트 1기가바이트(GB) - 1000메가바이트 1테라바이트(TB) - 1000기가바이트 * 워드(word) : CPU가 한번에 처리할 수 있는 데이터의 크기이다. 대부분의 컴퓨터는 32비트혹..

[ 컴퓨터구조 ] 컴퓨터구조 시작하기

1. 컴퓨터구조를 알아야하는 이유 컴퓨터구조를 왜 배워야할까? 배워야하는 이유를 모르면 공부가 노잼이다. 근데 공부해야하는 이유를 공부하는것도 노잼이다 ㅋㅋ 컴퓨터구조는 야매개발자들은 잘 모르는!! 실력자 개발자들이 되려면 알아야하는! 기본 지식이다. 1.1 문제해결 공부를 좀 해본사람은 알테지만 예제코드를 그대로 쳐도 코드가 제대로 안돌아갈 때가 있다. 이런 상황은 실무에서도 일어난다. 이런 경우레는 코드의문법적인 이유는 아닐 것이다. 하지만 코딩의 문법만 아는사람은 이를 해결할 수 없다.. 하지만 컴퓨터구조를 이해하고 있다면 문제상황을 빠르게 진단할 수 있고, 문제해결의 실마리를 다양하게 찾을 수 있다. 글구 이를 기업들도 알고있기 때문에 기술면접에서 많이 물어보기도한다. 컴퓨터구조는 코더가 아닌 개..

반응형