하드웨어 구성
- 컴퓨터는 중앙처리장치, 메인메모리, 입력장치, 출력장치, 저장장치로 구성된다.
- 컴퓨터로 하는 작업은 대부분 중앙처리장치와 메인메모리의 협업으로 이루어지기 때문에, 중앙처리장치와 메인메모리는 필수 장치로 분류되고, 그 외의 부품은 주변장치라고 한다.
- 메인메모리는 전력이 끊기면 데이터를 잃어버리기 때문에 데이터를 영구 보관하려면 하드디스크나 USB를 사용해야 하며 메인메모리를 주기억장치, 하드디스크나 USB 같은 메모리를 보조저장장치라고 부른다.
CPU
- CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산장치, 제어장치, 레지스터로 구성된다.
산술논리 연산장치 | 데이터를 연산하는 곳으로 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다. |
제어장치 | 명령어를 해석하여 제어 신호를 보내고 CPU 내의 데이터 흐름을 조절하는 역할 |
레지스터 | CPU 내에 연산에 필요한 데이터를 임시로 보관하는 장소 |
레지스터
- CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산을 한 후, 그 결과를 다시 레지스터에 저장했다가 메모리로 옮긴다.
- 이때 사용되는 레지스터는 데이터 레지스터와 주소 레지스터로, 이들은 사용자 프로그램에 의해 변경되기 때문에 사용자 가시 레지스터라고 부른다.
데이터 레지스터 (DR) | CPU가 명령어를 처리하는 데 필요한 일반 데이터를 임시로 저장하는 범용 레지스터 |
주소 레지스터 (AR) | 데이터 또는 명령어가 저장된 메모리의 주소를 저장한다. |
- 데이터 레지스터와 주소 레지스터 외에 특별한 용도로 사용되는 레지스터를 특수 레지스터라고 하며, 사용자가 임의로 변경할 수 없기 때문에 사용자 불가시 레지스터라고 한다.
프로그램 카운터 (PC) | 다음에 실행할 명령어의 위치 정보(코드의 행 번호, 메모리 주소)를 저장한다. |
명령어 레지스터 (IR) | 현재 실행 중인 명령어를 저장한다. |
메모리 주소 레지스터 (MAR) | 메모리 관리자가 접근해야 할 메모리의 주소를 저장한다. |
메모리 버퍼 레지스터 (MBR) | 메모리 관리자가 메모리에서 가져온 데이터를 임시로 저장한다. |
프로그램 상태 레지스터 (PSR) | 연산 결과를 저장한다. (양수, 음수 등) |
ADD
버스
- 버스는 CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다.
- 버스에는 다음 작업을 지시하는 제어 신호, 메모리의 위치 정보를 알려주는 주소, 처리할 데이터가 오고 가며, 각각 제어 버스, 주소 버스, 데이터 버스에 연결된다.
제어 버스
- 제어 버스에서는 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 가며, CPU의 제어 장치와 연결되어 있다.
- 메모리에서 데이터를 가져올지 아니면 처리한 데이터를 옮겨놓을지에 대한 지시 정보와, 하드디스크에 저장 명령을 내리거나 사운드카드에 소리를 내라는 명령을 내릴 때 제어 버스를 통해 전달된다.
- 또한, 메모리에서 오류가 발생하거나 네트워크 카드에 데이터가 모두 도착했다는 신호는 모두 제어 버스를 통해 CPU로 전달된다.
- 따라서 제어 버스의 신호는 CPU, 메모리, 주변장치와 양방향으로 오고간다.
주소 버스
- 주소 버스에서는 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지를 알려주는 위치 정보가 오고 가며, 메모리 주소 레지스터와 연결되어 있으며 단방향이다.
- 즉, CPU에서 메모리나 주변장치로 나가는 주소 정보는 있지만 주소 정보를 통해 CPU로 전달되는 정보는 없다.
- 주변장치의 경우도 바찬가지로 하드디스크의 어느 위치에서 데이터를 읽어올지, 어느 위치에 저장할지에 대한 위치 정보가 주소 버스를 통해 전달된다.
데이터 버스
- 제어 버스가 다음에 어떤 작업을 할지 신호를 보내구 주소 버스가 위치 정보를 전달하면 데이터가 데이터 버스에 실려 목적지까지 이동한다.
- 데이터 버스는 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.
※ 버스의 대역폭
- 버스의 대역폭은 한 번에 전달할 수 있는 데이터의 최대 크기를 말하며, CPU가 한 번에 처리할 수 있는 데이터의 크기와 같다.
- 32 bit CPU의 경우 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기가 32 bit라는 뜻으로, 이 경우 레지스터의 크기도 32 bit, 버스의 대역폭도 32 bit이다.
- 즉, 버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 데이터의 크기는 항상 같다.
- 참고로 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기를 워드라고 하며, 32 bit CPU에서 1워드는 32 bit이다.
메모리
- 메모리에는 실행에 필요한 프로그램과 데이터가 존재하며, CPU와 협업하여 작업이 이루어진다.
- 메모리를 이루는 소자 하나의 크기는 1 bit로 0 또는 1이 저장된다.
- 그러나 소자 하나만으로 데이터를 표현할 수 없기 때문에 메모리 주소는 바이트 단위로 지정되고, 메모리에서 데이터를 읽거나 쓸 때는 워드 단위로 움직인다.
경계 레지스터와 한계 레지스터
- 현대의 운영체제는 시분할 기법을 사용하여 여러 프로그램을 동시에 실행하므로, 사용자 영역이 여러 개의 작업 공간으로 나뉘어 있다.
- 이러한 상황에서 어떤 작업이 다른 작업의 영역을 침범하게 되면 프로그램을 파괴하거나 데이터를 지울 수도 있으며, 최악의 경우 운영체제 영역을 침범하면 시스템이 멈출 수도 있다.
- 운영체제도 CPU를 사용하는 작업이므로 사용자의 작업이 진행되는 동안에는 운영체제의 작업이 중단되기 때문에, 사용자의 작업으로부터 메모리를 보호하기 위해 하드웨어의 도움을 받는다.
- 메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장하고, 현재 진행 중인 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를 한계 레지스터에 저장한다.
- 이후 사용자의 작업이 진행되는 동안 두 레지스터의 주소 범위를 벗어나는지 하드웨어적으로 점검함으로써 메모리를 보호한다.
- 만약 두 레지스터의 값을 벗어난다면 메모리 오류와 관련된 인터럽트가 발생하면서 모든 작업이 중단되고, CPU는 운영체제를 깨워서 인터럽트를 처리하도록 시킨다.
- 메모리 영역을 벗어나서 발생한 인터럽트의 경우 운영체제가 해당 프로그램을 강제 종료시킨다.
'Computer Science > Operating System' 카테고리의 다른 글
프로세스 제어 블록과 문맥교환 (0) | 2022.03.15 |
---|---|
프로세스와 스레드 (0) | 2022.03.15 |
병렬 처리 (0) | 2022.03.15 |
컴퓨터 성능 향상 기술 (0) | 2022.03.14 |
운영체제 개요 (0) | 2022.03.14 |