컴퓨터구조와 운영체제

2. 컴퓨터 구조의 큰 그림(2)

waterclean101 2023. 11. 2. 09:48

2강. 컴퓨터 구조의 큰 그림

 

메모리

메모리는 현재 실행되는 프로그램(프로세스)의 명령어 데이터를 저장하는 부품이다. 바꿔 말하면 어떤 프로그램이 실행되기 위해서는 그 프로그램을 이루는 명령어와 데이터가 메모리 안에 있어야 한다. (나중에 운영체제에서 페이징이라고 하는 것을 배우면 굳이 실행되는 실행되는 프로그램의 모든 데이터와 명령어가 다 저장될 필요는 없겠다라는 걸 알게 될 것이지만 일단)

그렇다면 현재 실행되고 있지 않은 프로그램은? 메모리가 아니라 보조기억 장치에 저장되어 있다.

메모리에서 중요한 개념 주소. 위 그림의 한 칸 한 칸이 주소. 메모리에 저장할 수 있는 데이터와 명령어의 종류는 아주 많다. 그 많은 명령어와 데이터 중 원하는 명령어와 데이터가 지금 메모리 내에 어디에 저장되어 있는지 그 위치를 특정하기 위해 사용하는 개념이 주소다.

메모리에서는 아래 세 가지를 기억하자.

  • 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다.
  • 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다(애초에 프로그램이 명령어와 데이터로 이루어짐).
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.

 

CPU

CPU는 컴퓨터의 두뇌와도 같은 부품이다. 조금 더 정확하게는 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 부품이다. CPU의 내부 구성 부품은 크게 세 가지가 있는데 ALU(산술 논리 연산 장치), 제어 장치 그리고 레지스터.

  • ALU: 계산기. 산술 연산을 하고 논리 연산을 하는 장치. 계산을 위한 회로들의 모음
  • 레지스터: CPU 내부에 있는 작은 저장 장치.
  • 제어 장치: 제어 신호라고 하는 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호를 내보내고, 명령어를 해석하는 장치.
    • 제어 신호의 종류는 입출력 장치 쓰기 신호, 입출력 장치 읽기 신호, 메모리 읽기 신호, 메모리 쓰기 신호 등 여러 가지 신호들이 있는데 이 제어 장치의 제어 신호는 컴퓨터의 부품들을 관리할 수 있는 전기 신호, 대표적으로 메모리 읽기 신호(CPU가 메모리 저장된 정보을 읽고 싶을 때 메모리를 향해서 쏘는 전기 신호)와 메모리 쓰기 신호(CPU가 메모리에 어떤 값을 저장하고 싶을 때 메모리를 향해서 쏘는 전기 신호)가 있다.

 

CPU 내부의 ALU, 제어 장치, 레지스터가 메모리에 있는 명령어를 실행하는 과정

  1. CPU가 1번지에 있는 명령어를 실행하기 위해서는 이 명령어를 CPU로 읽어들어야 한다. 따라서 CPU의 제어 장치는 메모리를 향해서 메모리 읽기 제어 신호를 내보낸다.
  2. 메모리는 1번지에 저장되어 있는 명령어를 CPU로 갖다 주게 되는데 이때 CPU 내부에 있는 작은 저장장치 레지스터로 가져온다.
  3. 제어장치는 제어 신호를 내보내는 장치이기도 하지만 명령어를 해석하는 장치이기도 하다. 그렇기 때문에 레지스터로 읽어들인 이 명령어를 제어 장치는 해석한다.
  4. 해석을 통해 명령어를 실행하기 위해서는 3번지와 4번지에 저장된 데이터가 필요하다는 판단을 하고 메모리 읽기 신호를 통해서 필요한 데이터를 한 번 더 갖고 오게 된다.
  5. 3번지와 4번지 데이터 또한 레지스터로 가져와진다.
  6. 제어 장치는 3번지와 4번지 즉, 120과 100을 더하라는 것을 해석하고, ALU한테 120과 100을 전달해주고 더하라고 지시한다.
  7. ALU는 이제 명령어를 실행한다. 즉 3번지와 4번지, 120과 100을 더한다. 첫 번째 명령어는 끝.
  8. 이제 두 번째 명령어를 읽어들이기 위해 2번지를 향해서 메모리 읽기 제어 신호를 제어장치가 내보낸다.
  9. 2번지에 있는 이 명령어가 레지스터에 저장되고 제어장치는 명령어를 해석하고 메모리에 계산 결과인 220를 저장해야 한다는 판단을 내린다.
  10. 메모리 쓰기 신호와 함께 결과 값을 메모리에 저장한다.

 

보조 기억 장치

메모리로 사용되는 램은 보조 기억 장치에 비해서 값이 비싸고 무엇보다도 전원이 꺼지면 저장된 내용을 잃어버리는 단점이 있다. 휘발성 저장 장치다. 전원이 꺼져도 정보를 보관할 수 있는 저장 장치가 필요하게 된다.

메모리는 실행할 프로그램을 저장하고 보조 기억 장치는 보관할 프로그램을 저장한다.

 

 

입출력 장치

마이크, 마우스, 키보드, 스피커, 모니터, 이런 것들이 다 입출력 장치. 그래서 입출력 장치는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 주고받을 수 있는 컴퓨터 부품을 의미한다.

그렇다면 외장하드나 usb같은 것도 결국에는 컴퓨터 외부에 연결돼서 컴퓨터 내부와 정보를 주고받을 수 있는 부품아닌가 하는 의문? 보조 기억 장치도 결국 입출력 장치인가? 보조 기억 장치와 입출력 장치를 나누어서 설명하고 있기는 하지만 실제로 컴퓨터와 정보를 주고받는 양상을 보면 딱 달라서 구분되는 개념은 아니다. 그래서 보조 기억 장치와 입출력 장치를 합쳐서 주변 장치라고 통칭하기도 한다.

 

 

메인보드와 시스템 버스

메인보드에는 여러 가지 슬롯과 연결단자 같은 것들이 많이 있어서 부품들을 달 수가 있다. 메인보드 내 슬롯에 여러 부품들을 연결하면 연결된 부품들이 버스라고 하는 통로를 통해서 그중에서 가장 중요한 시스템 버스라고 하는 통로를 통해서 정보를 주고받을 수 있다.

위 그림 전체가 시스템 버스 통로라고 볼 수 있고 시스템 버스는 주소 버스, 데이터 버스, 제어 버스라는 내부 구성을 가지고 있다.

시스템 버스의 내부 구성

  • 주소 버스: 주소를 주고받는 통로.
  • 데이터 버스: 명령어와 데이터를 주고받는 통로.
  • 제어 버스: 제어 신호를 주고받는 통로.

CPU의 작동 예시에서 메모리 읽기 쓰기 신호 등의 제어 신호는 제어 버스를 통해 전기 신호를 쏘게 되고 주소를 읽고 싶을 때 주소 버스를 통해 메모리로 전달한다. 그럼 결과적으로 메모리는 두 가지 정보 주소 버스를 통해서 읽고자 하는 주소와 제어 버스를 통해서 메모리 읽기 신호를 받게 된다. 그래서 메모리는 1번지를 읽고 싶구나라고 알 수 있는 것. 그러면 1번지에 해당하는 데이터를 데이터 버스를 통해서 CPU로 전달해준다. 레지스터에 저장.

메모리의 값을 쓰는 경우도 마찬가지다. 메모리의 값을 쓰기 위해서는 세 가지 정보가 필요. 메모리 일단 어디에 저장할 건지. 무슨 일을 할 건지. 무엇을 저장할 건지. 5번지에 저장할 거다, 메모리 쓰기를 할 거다. 그리고 220을 저장할 거다 라는 이 세 가지 정보가 필요한데 각각은 주소 버스, 제어 버스, 데이터 버스를 통해서 메모리에 전달한다.