[C] 1. 컴퓨터의 작동 원리

Taeil Nam·2022년 6월 8일
0

C

목록 보기
1/18
post-thumbnail

1. 컴퓨터의 구성요소

1.1 CPU(Central Processing Unit)

  • 연산 및 계산을 수행.

1.2 Memory(Computer memory)

  • 데이터를 저장하는 곳.
  • RAM, ROM 두 종류로 나눠짐.
    1) RAM(Random-Access Memory)
    - 컴퓨터 전원이 꺼지면, 저장되어 있던 데이터가 사라짐.
    2) ROM(Read-Only Memory)
    - 컴퓨터 전원이 꺼져도, 저장되어 있던 데이터가 사라지지 않음.
    - 저장되어 있는 데이터 수정 불가능. (Read-Only)

1.3 GPU(Graphics Processing Unit)

  • 그래픽 계산을 위해 그래픽 카드에 들어있는 CPU.
  • 또한, 그래픽 카드에도 전용의 메모리가 포함되어 있음.
  • 즉, 그래픽 카드는 또 다른 하나의 컴퓨터 라고 볼 수 있음.

1.4 HDD, SSD

  • 데이터를 저장하는 곳.
  • 컴퓨터 전원을 꺼도 데이터가 사라지지 않음.
  • Memory보다 훨씬 많은 데이터를 저장할 수 있지만, 속도가 훨씬 느림.
  • HDD(Hard Disk Drive)는 내부에 물리적인 Disk를 사용하여 데이터를 저장.
  • SSD(Solid-State Drive)는 Flash Memory가 발전된 형태이며, 내부에 물리적인 Disk가 존재하지 않음.
  • SSD가 훨씬 빠르며, 가격이 비쌈.
💡 HDD(Hard Disk Drive) 이름의 유래
- FDD(Floppy Disk Drive)보다 겉 면이 두껍고 딱딱해서 붙여진 이름.
- FDD는 HDD 이전에 사용되었던 장치이며, HDD와 동일하게 물리적인 Disk를 사용하여 데이터를 저장.
- Drive란, 물리적인 Disk를 사용하여 데이터를 저장하는 것.

💡 C 드라이브의 유래
- FDD가 A, B 드라이브를 사용했기 때문에, HDD는 C 드라이브를 사용하게 됨.

2. 운영체제 (Operating System)

2.1 운영체제의 역할

  1. 하드웨어 관리
    • 하드웨어가 올바른 동작을 할 수 있도록 유지.
    • 하드웨어는 운영체제의 커널(Kernel)이 관리.
  2. 하드웨어 리소스 할당
    • 여러 개의 프로그램이 실행 중일 때, 프로그램 우선 순위에 맞게 하드웨어 리소스를 할당.
  3. 중재
    - 응용프로그램과 하드웨어 사이에서 중재.

2.2 운영체제의 종류

  1. UNIX
    • 소형 컴퓨터용으로 만들어진 OS.
  2. Linux
    • UNIX 계열의 오픈소스 OS.
  3. MacOS
    • Apple에서 만든 OS.
  4. Windows
    • Microsoft에서 만든 OS 이며, 현재 가장 많이 쓰임.
  5. iOS
    • Apple의 스마트폰에서 사용하는 OS.
  6. Android
    • 스마트폰에서 사용하는 오픈소스 OS.


3. 컴퓨터를 켰을 때 일어나는 일

  1. 전원 공급
    • 컴퓨터에 전원 공급.
  2. 부트 프로그램 실행
    • 메인보드 내부에 들어있는 ROM BIOS(Basic Input Output System) 실행.
    • ROM BIOS는, 컴퓨터가 처음 실행되었을 때 어떤 일을 수행할지 미리 정해놓은 일종의 프로그램.
  3. 하드웨어 검사
    • 실행된 부트 프로그램에 의해 하드웨어 상태를 검사.
  4. 운영 체제 로드
    • 하드웨어 검사를 마치고 운영체제를 로드.
    • 운영체제는 HDD, SDD에 저장되어 있음.
    • HDD, SSD에 있는 운영체제를 Memory로 복사.
  5. 운영 체제 실행
    - CPU가 Memory로 복사된 운영 체제를 실행한다. (부팅)

4. 현대 컴퓨터의 기본 구조

  • 현대 컴퓨터는 폰 노이만 구조.
  • 폰 노이만이 맨해튼 프로젝트에 필요한 컴퓨터를 만들 때 사용했던 구조.
  • 기존에 사용하던 컴퓨터인 에니악의 경우 외장 프로그램 방식이었으나, 폰 노이만 구조의 컴퓨터는 내장 프로그램 방식. (Stored-Program Computer)
  • 즉, 프로그램이 메모리에 저장되는 방식.

5. Memory

5.1 Memory의 기본 구조

  • Memory에는 데이터를 저장할 수 있는 수 많은 공간이 있음.
  • 공간 하나를 이라고 부르며, 한 개의 트랜지스터와 커패시터로 구성되어 있음.
  • 셀 한 개당 1 bit 저장 가능.

5.2 Memory 접근 방법

  1. 순차 접근(Sequential access)
    • 맨 처음부터 차례대로 접근하여 데이터를 찾는 방법.
  2. 임의 접근(Random Access)
    • 데이터가 위치한 곳으로 바로 접근하는 방법.
    • Memory에는 각 데이터가 저장된 위치를 나타내는 주소(Address)가 포함되어 있음.
    • 현대에는, 전부 임의 접근 방식의 Memory(RAM)를 사용.

5.3 Bus

  • 하드웨어간 데이터 통신을 위한 통로.
  1. Address bus
    • CPU가 Memory에 임의 접근을 하기 위해, Memory의 주소 값 필요.
    • Memory의 주소 값을 주고 받기 위해 Address bus를 사용.
    • C언어에서 포인터를 사용하는 이유.
  2. Data bus
    • 데이터가 통신하는 통로.
  3. Control bus
    - Address bus와 Data bus를 제어하기 위한 신호를 전송하는 통로.

6. CPU

6.1 CPU의 구성 요소

  1. 산술 논리 장치(ALU)
    • 덧셈, 뺄셈 등의 산술과 참, 거짓 등의 논리 연산을 수행한다.
  2. 제어 장치(Control Unit)
    • 신호를 통해 데이터 흐름을 제어한다.
  3. 레지스터(Registers)
    - CPU 내부의 저장장치 이다.

6.2 레지스터의 종류

  1. 주소 레지스터
    • 읽거나 쓸 메모리 주소 저장.
  2. 프로그램 카운터
    • 다음 명령어의 메모리 주소 저장.
  3. 데이터 레지스터
    • 메모리에서 읽어온 데이터 저장.
  4. 명령어 레지스터
    • 메모리에서 읽어온 명령어 저장.
  5. 어큐뮬레이터
    • 연산에 사용되는 데이터 저장.

6.3 프로그램 실행시 CPU 동작 과정

프로그램 내용

  • 변수 "A"의 메모리 주소 = "10"
  • 변수 "B"의 메모리 주소 = "11"
  • 변수 "C"의 메모리 주소 = "12"
  • "10" 메모리 주소에 "3" 데이터 저장.
  • "11" 메모리 주소에 "4" 데이터 저장.
  • "100" 메모리 주소에 "LOAD 10" 명령어 저장.
  • "101" 메모리 주소에 "ADD 11" 명령어 저장.
  • "102" 메모리 주소에 "STORE 12" 명령어 저장.

프로그램 실행 과정

1) 운영체제에서 처음으로 실행해야 하는 명령어의 메모리 주소를 CPU의 "프로그램 카운터 레지스터"에 저장한다. ("100")



2) "프로그램 카운터 레지스터"에 저장된 주소를 "메모리 주소 레지스터"에 복사한다. ("100")



3) "메모리 주소 레지스터"에 저장된 주소의 데이터를 "메모리 데이터 레지스터"로 복사한다. ("LOAD 10")



4) "메모리 데이터 레지스터"로 복사된 데이터를 "명령어 레지스터"로 복사한다. ("LOAD 10")



5) "프로그램 카운터 레지스터"에 다음에 실행해야 하는 명령어가 들어있는 메모리 주소 값이 저장된다.



6) "명령어 레지스터"에 저장된 데이터를 "제어 장치"로 보낸다.



7) "제어 장치"는 받은 데이터를 해독(Decode)한다.
8) "LOAD 10" 명령어의 뜻은 "10" 주소의 데이터를 가져오라는 뜻이므로, "메모리 주소 레지스터"에 "10"을 저장한다.



9) "10" 주소의 값인 "3"을 "메모리 데이터 레지스터"에 복사한다.



10) 복사된 "3"을 "어큐뮬레이터 레지스터"로 복사한다.



11) "프로그램 카운터 레지스터"에 저장된 주소를 "메모리 주소 레지스터"에 저장한다. ("101")



12) "메모리 주소 레지스터"에 저장된 메모리 주소의 데이터를 "메모리 데이터 레지스터"에 저장한다. ("ADD 11")



13) "메모리 데이터 레지스터"에 저장된 명령어를 "명령어 레지스터"에 저장한다.



14) "프로그램 카운터 레지스터"에 다음에 실행해야 하는 명령어가 들어있는 메모리 주소 값이 저장된다. ("102")



15) "명령어 레지스터"에 저장된 데이터를 "제어 장치"로 보낸다.



16) "제어 장치"는 받은 데이터를 해독(Decode)한다.
17) "ADD 11" 명령어의 뜻은 "11" 주소의 데이터를 더하라는 뜻이므로, "메모리 주소 레지스터"에 "11"을 저장한다.



18) "어큐뮬레이터 레지스터"에 저장되어 있던 값을 "산술 논리 장치(ALU)"에 저장한다. ("3")



19) "11" 주소의 값인 "4"을 "메모리 데이터 레지스터"에 복사한다.



20) 복사된 "4"을 "어큐뮬레이터 레지스터"로 복사한다.



21) "어큐뮬레이터 레지스터"에 저장되어 있던 값을 "산술 논리 장치(ALU)"에 저장한다. ("4")
22) "제어 장치"에 "ADD 11"이 저장되어 있으므로, "산술 논리 장치(ALU)"가 "3"과 "4"를 더한다. (3 + 4 = "7")



23) 계산 결과를 "어큐뮬레이터 레지스터"에 저장한다. ("7")



24) "프로그램 카운터 레지스터"에 저장된 주소를 "메모리 주소 레지스터"에 저장한다. ("102")



25) "메모리 주소 레지스터"에 저장된 메모리 주소의 데이터를 "메모리 데이터 레지스터"에 저장한다. ("STORE 12")



26) "메모리 데이터 레지스터"에 저장된 명령어를 "명령어 레지스터"에 저장한다.



27) "프로그램 카운터 레지스터"에 다음에 실행해야 하는 명령어가 들어있는 메모리 주소 값이 저장된다. ("103")



28) "명령어 레지스터"에 저장된 데이터를 "제어 장치"로 보낸다.



29) "제어 장치"는 받은 데이터를 해독(Decode)한다.
30) "STORE 12" 명령어의 뜻은 "12" 주소에 데이터를 저장하라는 뜻이므로, "메모리 주소 레지스터"에 "12"을 저장한다.



31) "어큐뮬레이터 레지스터"에 저장되어 있는 데이터를 "메모리 데이터 레지스터"에 저장한다. ("7")



32) "제어 장치"에 "STORE 12"가 저장되어 있으므로, "메모리 데이터 레지스터"의 값인 "7"을 "메모리 주소 레지스터"에 저장된 주소에 저장한다. ("12" 주소에 "7" 저장)



33) 프로그램을 전부 실행했으므로 종료한다.


7. 컴퓨터가 사용하는 언어

7.1 데이터와 정보

  • 데이터 : 현실에서 측정, 관찰을 통해 얻는 값.
  • 정보 : 데이터를 어떤 처리 과정을 거쳐서 유용한 형태로 바꾼 것.
    Ex1) 매일 날씨를 측정했다 = 데이터.
    Ex2) 여름에는 날씨가 대체로 덥다 = 정보.

7.2 정보의 표현

  • 사람은 정보 전달을 위해 사진, 소리, 동영상 등을 이용.
  • 컴퓨터는 전기를 사용하므로, 정보 전달을 위해 오직 01을 이용.
  • 컴퓨터는 트랜지스터를 이용하여 전기 신호가 없으면 0, 있으면 1로 표현.

7.3 정보의 단위

  • 정보의 기본 단위 = bit(binary digit).
  • 1 bit = 0 or 1.

7.4 메모리 주소의 단위

  • 메모리 주소의 기본 단위 = byte.
  • 1 byte = 8 bits.

7.5 레지스터의 단위

  • 레지스터의 기본 단위 = word.
  • word = 2 bytes = 16 bits.
  • dword = 4 bytes = 32 bits.
  • qword = 8 bytes = 64 bits.
  • CPU에 따라 레지스터의 용량이 다름.
  • 최근에는 대부분 64 bit의 레지스터를 사용하며, 이를 64비트 프로세서 혹은 64비트 운영체제 라고 부름.

7.6 2진법(Binary Numerical System)

  • 01로 숫자를 표현하는 방법.
  • 컴퓨터가 정보를 표현하기 위해 사용하는 방법.
  • 2진법으로 만들어진 수 = 2진수.

7.7 2진수(Binary Number)

10진수

  • 10개의 숫자로 수를 표현하는 것. (0 ~ 9)
  • 사람이 숫자를 표현하는데 사용.

2진수

  • 2개의 숫자로 수를 표현하는 것. (0, 1)
  • 컴퓨터가 정보를 표현할 때 사용.


2의 보수

  • 컴퓨터에서 음의 정수를 표현하기 위해 사용.
  • 기존 2진수에 보수를 취하고 (0 ->1, 1->0 으로 변경) 1을 더함.
  • 맨 처음 bit는 부호를 나타내는 bit이며, 1이면 음수 0이면 양수를 뜻함.

정수의 범위

  • 부호가 있는 정수인지, 없는 정수인지에 따라 범위가 다름.
  • 8비트 정수의 경우, 표현할 수 있는 정수의 개수는 256개로 동일하지만, 범위는 다름.

🚩 출처 및 참고자료 - 홍정모의 따라하며 배우는 C 언어 (따배씨)

0개의 댓글