본문 바로가기
[개발자 로드맵]/C

[따배씨] 컴퓨터의 작동 원리

by Ramrider 2022. 7. 19.
728x90
반응형

홍정모 따배씨에서 배운 것들을 개인적으로 정리한 내용입니다


 

0.1 컴퓨터의 구성 요소들

사용자> 입력장치> 컴퓨터 본체> 출력장치> 사용자... 순으로 이뤄진다.

*중앙처리장치(CPU) : 모든 연산을 담당

*주기억장치(메모리, RAM) : 전원을 끄면 데이터가 모두 사라짐(이유는 속도가 빠르기 때문에 사용하게 되었음, 이를 보조하기 위해 보조기억장치를 사용함), Random Access Memory로 임의 접근이 가능함(순차적 접근)

*보조기억장치 : 전원을 꺼도 데이터가 유지, 단점은 느림, 빅데이터를 다룰 경우에는 보조기억장치를 고려해야 할 수도 있음. ex) HDD, SSD, FDD, 자기테이프

그래픽스 카드(Graphics Card) : 그래픽스 카드 안에 CPU를 GPU라고 한다. 그래픽스 카드에는 메모리도 있고 CPU가 있기도 한다. 딥러닝의 경우 그래픽스 카드를 여러 개 꽂아서 하는 경우가 일반적.

디스플레이, 전원 공급장치, 입출력 장치

0.2 컴퓨터를 켤 때 일어나는 일들

부팅 절차 : 전원 공급> 전원 공급장치 > 메인보드 > 메인보드의 ROM BIOS 접근하여 부트 프로그램 실행 : 컴퓨터가 처음 시작할 때의 절차를 모두 갖고 있음 이것을 부트 프로그램이라고 함 > 하드웨어 검사 : 하드웨어 새로 달린 것이 있는지 없어진 것이 없는지 체크 > 운영체제 로드 : 보조기억장치에 운영체제는 저장되어 있음, 뿐만 아니라 그 외의 응용프로그램 데이터 등이 저장되어 있음 > 운영체제 실행(CPU는 주기억장치와만 일하기 때문에 보조기억장치의 운영체제 프로그램을 주기억장치에 복사를 하고 그것을 갖고 CPU와 왔다 갔다 하면서 연산처리함)

0.3 운영체제가 해주는 일들

사용자 <> 시스템 프로그램(ex 컴퓨터 바탕화면 변경), 응용프로그램(ex 그림판, 웹브라우저 등) 

하드웨어를 어떻게 사용할지를 운영체제에서 미리 만들어서 프로그래머들에게 제공함. 운영체제의 커널이 하드웨어를 담당하며 이를 중계해주는 역할을 한다.

여러 개의 프로그램이 작동하고 있다면 각각의 프로그램이 단 한 개의 CPU를 사용하게 되는데 무엇이 우선순위가 되는지 중재를 하고 그 컴퓨터의 자원들을 관리해주는 것도 운영체제의 역할이다.

프로그램을 만들 때 하드웨어에 관련된 것들과 그 외 잡다한 것들을 편하게 사용할 수 있는 인터페이스 도구들을 제공해주는 역할도 한다.

0.4 컴퓨터는 왜 2진수를 사용할까?

컴퓨터는 다양한 정보(소리, 사진, 영상 등)를 숫자로 바꿔 저장한다. 그때 사용하는 숫자가 2진수이다.

에디슨이 전구를 만드면서 발견한 에디슨 효과(리처드슨 효과, 열전자 방출)에서 기원된다. 전자가 이동하는 것이 전류, 즉 전기가 흐르게 되는데 에디슨 효과를 이용해서 진공관을 만든다. 전자가 음극에서 양극으로 가는데 껐다 켰다 해서 흐르는 것을 제어할 수 있게 하는 것이 진공관의 포인트이다.(컨트롤 그리드에 약한 전기를 넣었다가 뺐다가 하면서 케소드와 플레이트 판 간의 전자의 움직임을 제어할 수 있게 함) 이 껐다 켰다가 컴퓨터가 2진수를 사용하게 되는 근원이 되었다 함.

최근에는 트랜지스터를 개발하여 이를 대체하고 있는데 이를 매우 작게 만들어서 집적한 회로를 집적회로라고 한다. 

0.5 현대적 컴퓨터의 기본 구조

폰 노이만 구조(내장형 프로그램 방식의 컴퓨터)로 입력장치> 기능 수행(CPU(컨트롤 유닛, 산술계산 유닛, 논리 연산 유닛), 메모리)>출력장치 

CPU, 메모리, 입출력 장치(프로그래머는 신경 덜 쓰게 됨, 운영체제가 처리해주므로)가 분리되어 있음. 시스템 버스(데이터 버스(2진수), 컨트롤 버스, 어드레스 버스)를 통해 주고받음

0.6 컴퓨터 메모리의 기본 구조

CPU < 캐시 메모리 > 주기억장치-메모리

메모리에서 자주 갖고 오는 것들은 캐시 메모리에 저장해서 CPU에 왔다 갔다 하면서 일을 하게 함.

순차 접근(Sequential access) : 하나하나 모든 메모리를 뒤져서 데이터 찾는 방식

임의 접근(Random access) : 주소를 알면 바로 가서 찾을 수 있는데 그 주소로 바로 가서 접근하는 방식.

0, 1을 하나 저장할 수 있는 것을 1 비트라고 한다.

CPU와 RAM이 데이터를 주고받을 때는 시스템 버스(데이터, 컨트롤, 어드레스)를 통해 주고받는다. 주소 버스와 데이터 버스가 따로 나눠져 있다. 메모리는 CPU에게 데이터를 보내는 일과 CPU로부터 데이터 결과를 받아 저장하는 것 2가지 일만 한다. 이 주소 때문에 포인터가 있고 이 랜덤 접근을 하려면 포인터가 필요하다. 주소를 접근해서 데이터를 왔다 갔다 하게 할 수 있다. 임의 접근이 굉장히 효율적이다.

0.7 CPU의 기본 구조

CPU <> 주기억장치-메모리 < 보조기억장치

만들어진 프로그램은 보조기억장치에 저장된다. 프로그램 실행은 내부적으로 운영체제에 부탁을 해서 프로그램 실행이 된다. 보조기억장치의 프로그램은 주기억장치에 복사되어 저장된다. CPU는 기계어(101010...)로 이뤄져 있다. CPU의 기본적인 명령어는 숫자를 더한다던가 비교한다던가 저장한다 던가 기본적인 작업들을 조합해서 복잡한 일들을 하게 된다.

CPU의 구성요소들은 산술 논리 장치(ALU), 제어장치(Control Unit), 여러 가지 레지스터들(Registers)로 이뤄져 있다. 레지스터 종류에는 주소 레지스터, 프로그램 카운터, 데이터 레지스터, 명령어 레지스터, 어큐뮬레이터가 있다. 레지스터는 메모리와 가깝게 일을 한다.

0.8 CPU가 일하는 방법

프로그램 카운터(PC) 레지스터에 프로그램의 첫 번째 명령어가 어느 주소에 들어있는지를 넣는다. 항상 이 CPU가 실행시켜야 할 다음번 프로그램 명령어의 주소가 들어가 있다. 이 데이터를 메모리 주소 레지스터에 옮겨간다. 그다음 메모리 주소에 있는 주소에 접근해서 그 메모리 데이터를 메모리 데이터 레지스터에 메모리 내용을 저장한다. 그다음에 명령어 레지스터에 데이터가 옮겨간다. 그 다음에 프로그램 카운터가 올라간다(그 다음 프로그램 준비). 그 다음에 명령어 레지스터에 있는 명령어가 제어장치로 들어간다. 제어장치가 명령어를 디코드(해독)한다. 메모리 주소 레지스터를 통해 주소에 접근하여 메모리 내용을 메모리 데이터 레지스터에 넣고 데이터를 어큐뮬레이터에 넣는다. 그 다음 해독이 끝났으니 다음 줄의 PC 내용을 진행한다. 이것이 반복되는 방식

0.9 정보의 단위

데이터(data) > 처리과정 > 정보(information)

비트 bit(binary digit)는 정보의 최소 단위이다. 1바이트 = 8비트로 메모리 주소의 기본 단위이다. 16비트는 워드로써 CPU 데이터를 다루는 기본단위로 레지스터의 크기이다.

0.10 2진수

컴퓨터는 8비트 16비트 32비트 64비트의 메모리가 있다. 부호가 있는 8비트 정수의 경우 10진수 5를 -5를 만들고자한다면, 5를 2진수로 만들어 0000 0101로 만들고 이에 보수를 취하여 1111 1010로 만든다. 이후 1을 더하여 1111 1011로 만든다. 이렇게 되었을 때 첫 비트가 1이면 음수 0이면 양수가된다.

1111 1011+0000 0101 이 0이되면 -5를 만든 것이된다. 2의 보수의 장점은 -0과 0은 같다.

1001 1110에 대해서 부호가 있는(signed) 정수 일 경우 -98이 되지만 부호가 없는(unsigned) 정수일 경우 158이 되므로 조심해야한다.

정수의 범위도 달라진다. 8비트 기준으로  부호가 있는 정수일 경우 -128~127이 되고 부호가 없는 정수의 경우 0~ 255까지가 된다.

728x90
반응형

댓글