OS

컴퓨터 구조

Debin 2022. 6. 14.
반응형

컴퓨터는 중앙처리장치(CPU), 메인 메모리, 입력장치, 출력장치, 저장장치로 구성된다.

중앙처리장치와 메인메모리는 필수 장치로 분류된다. 중앙처리장치와 메인메모리 외의 부품은 주변장치라고 한다.

CPU와 메모리

CPU는 명령어를 해석하여 실행하는 장치로, 인간으로 치면 두뇌에 해당한다.

메모리는 작업에 필요한 프로그램과 데이터를 저장하는 장소로, 바이트 단위로 분할되어 있으며 분할 공간마다 주소로 구분한다.]

CPU

  • CPU는 명령어를 해석하여 실행하는 장치다.
  • CPU는 산술논리 연산장치, 제어장치, 레지스터로 구성되며 이것들의 협업으로 작업을 처리한다.

산술논리연산자

요리사가 재료를 삶거나 찌거나 볶듯이 CPU에서 데이터를 연산하는장치가 산술논리 연산장치다.

산술논리 연산장치는 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다.

 

제어장치

요리를 할때 요리사의 머릿속에는 '도마 위의 재료를 가져와라', '양파 껍질을 미리 벗겨 놓아라' 등의 지시가 이루어진다. 이처럼 CPU에서 작업을 지시하는 부분을 제어장치라고 한다.

 

레지스터

자른 고기, 껍질을 깐 양파, 간 마늘과 같이 그날 쓸 재료를 미리 손질해놓았다면 요리를 할 때 필요한 만큼 쥐어 냄비에 넣는다.

재료를 필요한 만큼 쥐고 있는 것처럼, CPU 내에 데이터를 임시로 보관하는 곳을 레지스터라고 한다.

CPU의 명령어 처리 과정

int D2 = 2, D3 = 3, sum;
sum = D2 + D3;
  • CPU는 0과 1의 2진수로 이루어진 기계어만 인식한다.
  • 따라서 위 코드를 실행하려면 컴파일러를 이용해 기계어로 바꾸어야 한다.
  • 아래는 위 코드를 어셈블리어로 변환한 것이다.
LOAD mem(100), register 2;
LOAD mem(120), register 3;
ADD register 5, register 2, register 3;
MOVE register 5, mem(160);
  1. 메모리의 100번지(D2)에 있는 값을 레지스터 2로 가져온다.
  2. 메모리의 120번지(D3)에 있는 값을 레지스터 3으로 가져온다.
  3. 레지스터 2와 레지스터 3에 저장된 값을 더한 결과를 레지스터 5에 넣는다.
  4. 레지스터 5의 값을 메모리의 160번지(sum)에 옮긴다.

제어장치는 명령어를 해석하여 제어 신호를 보내고 CPU 내의 데이터 흐름을 조절하는 역할을 한다.

위의 예에서 제어장치는 '메모리에서 데이터를 가져와라', ' 덧셈을 실행하라', '덧셈한 결과값을 메모리로 옮겨놓아라'라고 신호를 보낸다.

CPU의 명령어 처리 과정

레지스터의 종류

  • CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산자를 이요하여 연산을 한 후, 그 결과를 다시 레지스터에 저장했다가 메모리로 옮긴다. 
  • 이때 사용되는 레지스터는 데이터 레지스터와 주소 레지스터이다. 데이터 레지스터와 주소레지스터는 사용자 프로그램에 의해 변경되기 때문에 사용자 가시 레지스터라고 부른다.
  • 데이터 레지스터와 주소 레지스터 외에 특별한 용도로 사용되는 레지스터도 있는데 이를 특수 레지스터라고 부른다.

데이터 레지스터

데이터 레지스터는 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다. CPU에 있는 대부분의 레지스터가 데이터 레지스터이기 대문에 일반 레지스터 또는 범용 레지스터라고 부른다.

 

주소 레지스터

데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장된다.

 

아래는 특수 레지스터들이다.

 

프로그램 카운터

CPU는 다음에 어떤 명령어를 처리해야 할지 알아야 한다. 프로그램 카운터는 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다. 다음에 실행할 명령어의 주소를 가리키기 때문에 프로그램 카운터를 명령어 포인터라고도 한다.

 

명령어 레지스터

명령어 레지스터는 현재 실행 중인 명령어를 저장한다. 제어장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보낸다.

 

메모리 주소 레지스터

메모리주소 레지스터는 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용한다.

명령어를 처리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장한다.

 

메모리 버퍼 레지스터

메모리 버퍼 레지스터는 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장한다.

메모리 버퍼 레지스터는 항상 메모리 주소 레지스터와 함께 동작한다.

LOAD mem(100), register 2;의 실행 과정

  1. 프로그램 카운터는 현재 실행 중인 코드의 행 번호 1이 저장되고 이 번호는 제어 장치에 전송된다.
  2. 명령어 레지스터에는 LOAD가 저장된다.
  3. 제어장치가 명령어 레지스터에 있는 명령을 해석하여 메모리에 있는 데이터를 가져오라는 제어 신호를 보낸다.
  4. 메모리 주소 레지스터에는 100이 저장되고, 메모리 관리자는 메모리의 100번지에 저장된 값을 메모리 버퍼 레지스터로 가져온다.
  5. 제어장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮긴다.

이밖에도 다양한 특수 레지스터들이 있다.

버스의 종류

버스의 종류와 구조

  • 제어 버스
    제어 버스는 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 간다.
    메모리에서 데이터를 가져올지, 아니면 처리한 데이터를 옮겨놓을지에 대한 지시 정보가 오가는데, 메모리에서 데이터를 가져올 때는 읽기 신호를 보내고, 처리한 데이터를 메모리로 옮겨놓을 때는 쓰기 신호를 보낸다.
    제어 버스는 CPU의 제어장치와 연결되어 있다.
    메모리에서 오류가 발생하거나 네트워크 카드에 데이터가 모두 도착했다는 신호는 모두 제어 버스를 통해 CPU로 전달된다.
    제어 버스의 신호는 CPU, 메모리, 주변장치와 양방향으로 오고 간다.
  • 주소 버스
    주소 버스에서는 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지 를 알려주는 위치 정보, 즉 주소가 오고 간다.
    주변 장치의 경우도 마찬가지로 하드디스크의 어느 위치에서 데이터를 읽어올지, 어느 위치에 저장할지에 대한 위치 정보가 주소 버스를 통해 전달된다. 주소 버스는 메모리 주소 레지스터와 연결되어 있으며 단방향이다.
    CPU에서 메모리나 주변장치로 나가는 주소 정보는 있지만 주소 버스를 통해 CPU로 전달되는 정보는 없다.
  • 데이터 버스
    제어 버스가 다음에 어떤 작업을 할지 신호를 보내고 주소 버스가 위치 정보를 전달하면 데이터가 데이터 버스에 실려 목적지까지 이동한다. 데이터 버스는 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.

메모리

모든 프로그램은 메모리에 올라와야 실행될 수 있다.

메모리에는 실행에 필요한 프로그램과 데이터가 존재하며, CPU와 협업하여 작업이 이루어진다.

메모리를 이루는 소자 하나의 크기는 1bit 0 또는 1이 저장된다.

그러나 소자 하나만으로 데이터를 표현할 수 없어 메모리 주소는 바이트 단위로 지정된다.

메모리에서 데이터를 읽거나 쓸 때는 워드 단위로 움직인다.

메모리의 종류

메모리는 읽거나 쓸 수 있는 램(RAM, Random Access Memory)과 롬(ROM, Read Only Memory)로 구분된다.

램은 전력이 끊기면 데이터가 사라지는 휘발성 메모리와 전력이 끊겨도 데이터를 보관할 수 있는 비휘발성 메모리로 나뉜다.

휘발성 메모리

  • 휘발성 메모리는 DRAM(Dynamic Ram) 동적램과 SRAM (Static Ram) 정적램이 있다.
  • DRAM은 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 한다.
  • Dynamic은 시간이 지나면 데이터가 사라지기 때문에 재생이 필요하다는 의미다.
  • SRAM은 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없다. 속도는 빠르지만 비싸다.
  • 일반적으로 메인메모리는 DRAM을 사용하고, SRAM은 캐시 같은 고속 메모리에서 사용한다.

비휘발성 메모리

  • 비휘발성 메모리에는 플래시 메모리, FRAM(Ferroelectrice Ram), PRAM(Phase change RAM)등이 있다.
  • 플래시 메모리는 디지털 카메라, MP3 플레이어, USB 드라이버같이 전력이 없어도 데이터를 보관하는 저장장치로 많이 사용한다.
  • 이외에도 많이 사용하는 비휘발성 메모리는 하드디스크를 대신하도록 만든 SSD다.

 

램과 달리 롬은 전력이 끊겨도 데이터를 보관하는 것이 장점이지만 데이터를 한 번 저장하면 바꿀 수 없다. 예를 들면 흔히 빈 CD는 CD-ROM이라고 하며 데이터를 한 번만 저장할 수 있다. 이러한 특성 때문에 바이오스를 롬에 저장한다.

메모리 보호

일괄 작업 시스템(일괄 처리 시스템)에서는 메모리가 운영체제 영역과 사용자 영역으로 구분된다.

일괄 작업 시스템에서 메모리 보호는 사용자 영역의 작업이 운영체제 영역으로 침범하지 못하도록 막는 것이다.

현대의 운영체제는 시분할 기법을 사용하여 여러 프로그램을 동시에 실행하므로 사용자 영역이 여러 개의 작업 공간으로 나뉘어 있다.

이런 상황에서 메모리가 보호되지 않으면 어 떤 작업이 다른 작업의 영역을 침범하여 프로그램을 파괴하거나 데이터를 지울 수도 있으며,

최악의 경우 운영체제 영역을 침범할 수 있다.

 

운영체제도 일종의 소프트웨어다. 운영체제도 CPU를 사용하는 작업 중 하나이기 때문에 사용자의 작업이 진행되는(사용자 프로세스가 CPU를 차지하는 경우)동안에는 운영체제의 작업이 잠시 중단된다. 운영체제의 작업이 중단된 상태에서 사용자의 작업으로부터 메모리를 보호하려면 하드웨어의 도움이 필요하다.

 

메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장한 후 작업을 한다.

또한 현재 진행 중인 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를  한계 레지스터에 저장한다.

그리고 사용자의 작업이 진행되는 동안 이 두 레지스터의 주소 범위를 벗어나는지 하드웨어적으로 점검함으로써 메모리를 보호한다.

메모리 보호

B 작업이 데이터를 읽거나 쓸 때마다 CPU는 해당 작업이 경계 레지스터와 한계 레지스터의 주소 값 안에서 이루어지는지 검사한다.

만약 두 레지스터의 값을 벗어난다면 메모리 오류와 관련된 인터럽트가 발생한다.

인터럽트가 발생하면 모든 작업이 중단되고 CPU는 운영체제를 깨워서 인터럽츠를 처리하도록 시킨다.

메모리 영역을 벗어나서 발생한 인터럽트의 경우 운영체제가 해당 프로그램을 강제 종료시킨다.

이처럼 모든 메모리 영역은 하드웨어와 운영체제의 협업에 의해 보호받는다.

입출력장치

  • 입력장치는 외부의 데이터를 컴퓨터에 입력하는 장치로,
    초기의 컴퓨터는 천공카드를 사용했으나 지금은 키보드, 마우스, 스캐너, 터치스크린 등을 사용한다.
  • 출력장치는 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치로 프린터, 모니터, 스피커 등이 있다. 

저장장치

  • 메모리는 전자의 이동으로 데이터를 처리하지만 하드디스크나 CD와 같은 저장장치는 구동장치가 있는 기계이므로 속도가 느리다.
  • 이런 느린 저장장치를 사용하는 이유는 저장 용량에 비해 가격이 저렴하기 때문이다.
  • 저장장치는 메모리보다 느리지만 저렴하고 용량이 크며, 전원 On/Off와 상관없이 데이터를 영구적으로 저장한다.
  • 저장장치는 자성을 이용하는 장치, 레이저를 이용하는 장치, 메모리를 이용하는 장치로 구분한다.
  • 자성 이용 장치 : 카세트테이프, 플로피디스크, 하드디스크
  • 레이저 이용 장치 : CD, DVD, 블루레이디스크
  • 메모리 이용 장치 : USB, SD 카드, CF 카드, SSD

메인보드

  • 컴퓨터의 다양한 부품은 각 장치를 연결하는 선의 집합이자 데이터가 지나다니는 통로인 버스를 통해 연결된다.
  • 메인보드는 CPU와 메모리 등 다양한 부품을 연결하는 커다란 판이다.
  • 메인보드에는 버스가 복잡하게 얽혀 있으며 전력이 공급되면 버스로 연결된 부품이 작동한다.

클록

클록(clock)은 CPU의 속도와 관련된 단위다. CPU가 작업을 할 때, 일정한 박자가 있는데 이 박자를 만들어내는 것이 클록이다.

클록이 일정 간격으로 틱(tick)을 만들면 거기에 맞추어 CPU안의 모든 구성 부품이 작업을 한다.

틱은 펄스(pulse) 또는 클록틱(clock tick)이라고도 부르며 버스에는 여러 개의 부품이 연결되어 있는데, 메인보드의 클록이 틱을 보낼 때마다 데이터를 보내거나 받는다.

헤르츠

헤르츠(Hz)는 클록틱이 발생하는 속도를 나타내는 단위다. 1초에 클록틱이 몇 번 발생하는지를 나타내는데, 1초에 클록틱이 한 번이면 1Hz, 1000번이면 1kHz(1000Hz)이다.

시스템 버스와 CPU 버스

  • 시스템 버스는 메모리와 주변장치를 연결하는 Front-Side Bus, 즉 전면 버스라고 한다.
  • CPU 내부 버스는 CPU 내부에 있는 장치를 연결하는 버스로 BSB Back-Side Bus, 즉 후면 버스라고 한다. 
    CPU 내부 버스의 속도는 CPU의 클록과 같아서 시스템 버스보다 훨씬 빠르다.
  • CPU는 CPU 내부 버스의 속도로 작동하고 메모리는 시스템 버스의 속도로 작동하기 때문에 두 버스의 속도 차이로 인해 작업이 지연되는 문제가 있다.

폰노이만 구조

  • 오늘날의 컴퓨터는 대부분 폰노이만 구조를 따른다.
  • 폰노이만 구조는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조를 말한다.
  • 폰노이만은 메모리를 이용하여 프로그래밍이 가능한 컴퓨터 구조, 즉 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식을 제안했다.
  • 폰노이만 구조에서 가장 중요한 특징은 모든 프로그램은 메모리에 올라와야 실행을 할 수 있다는 것이다.

폰노이만 구조

이상으로 포스팅을 마칩니다. 감사합니다.

 

 

참고 자료

쉽게 배우는 운영체제 (저자 : 조성호)

https://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9791156644071 

 

운영체제 - 교보문고

명쾌한 비유와 사례로 쉽게 배우는 운영체제의 구조와 원리 컴퓨터 관련 학과 학생을 대상으로 운영체제의 구조와 원리를 설명한 책입니다. 주요 개념은 일상생활의 사례를 통해 쉽게 이해하고

www.kyobobook.co.kr

 

반응형

댓글