본문 바로가기
Learning-log -CS/운영체제

(운영체제 / 반효경) 컴퓨터 시스템 구조 (System Structure, CPU, Register, Interrupt, Mode bit, I/O Device, Device Controller)

by why제곱 2024. 3. 6.

컴퓨터 시스템의 일반적인 구조(System Structure)

컴퓨터는 위 사진과 같은 구조로 이루어져있다. 좌측의 CPU와 메모리로 이루어져 있는 부분이 일반적으로 우리가 알고 있는 컴퓨터이며, 별개의 디바이스들인 I/O device들로 입력과, 출력이 이루어진다.

 

I/O Device

아래와 같은 요소들로 구조를 이룬다.

Device Controller

각 Device를 전담하기 위한 작은 하드웨어 장치.

각각의 Device마다 이 Controller를 가지며 Device Controller는 I/O Device와 주고받을 데이터를 ㅣLocal Buufer에 저장하는 일과 CPU에게 인터럽트를 거는 일을 한다.

위에서 언급한 인터럽트는 아래에서 좀 더 자세히 살펴보겠다.

Local Buffer

I/O Device의 작업데이터를 저장하는 공간.

Device Driver

각 디바이스를 처리하기 위한 Software.


Computer

일반적인 컴퓨터의 구조를 이루고 있는 요소들에 대해서도 알아보자.

CPU

CPU는 매순간 메모리 어딘가에 올라와 있는 기계어를 처리한다. 특별한 일이 없다면 항상 메모리 다음의 Instruction을 실행하지만, Instruction 실행 전, 들어온 Interrupt의 유무를 체크한다.

인터럽트가 들어왔다면 작업을 잠시 멈추고 CPU 제어권을 OS 커널에게 넘겨준다.

PC Register

CPU가 기계어를 처리하기 위해서는 메모리의 어느 곳에 기계어가 위치하는 지 알아야 한다. 이 메모리 주소를 가리키고 있는 것이 바로 Program Counter Register이다.

CPU는 이 PC Register가 가리키는 Instruction을 실행하고, PC Register는 다음 주소를 가리키는 과정을 반복하게 된다.

Mode Bit

CPU 내에 존재하는 것으로, CPU 제어권이 운영체제에 있으면 값이 0, 사용자 프로그램에 있으면 1이 된다. 이는 보안과 관련된 것으로, 사용자 프로그램을 신뢰할 수 없기에(다른 프로그램의 메모리 주소를 보거나 운영체제 커널의 메모리 주소를 망가뜨릴 수 있다) 해당 프로그램의 메모리 주소만 볼 수 있도록 제약을 주기 위함이다.

따라서 Mode bit 값이 0이면 모든 Instruction을 사용할 수 있으며 1이면 사용자의 프로그램의 Instruction만 사용가능하다.

모든 Instruction을 사용할 수 있다는 말의 의미는 다른 사용자의 메모리영역 조회 가능하고, I/O 디바이스에 접근 가능하다는 뜻이다. 위의 말을 다시 해석해보면, I/O Device는 사용자 프로그램은 실행하지 못하고 운영체제만 접근할 수 있음을 알 수 있다. 그러므로 프로그램에서 I/O Device로의 접근이 필요한 경우엔 System Call을 통해 운영체제에 요청을 해야한다.

 

Interrupt

위에서 계속 나왔던 인터럽트에 대해 알아보자.

CPU가 Register가 가리키는 주소의 기계어를 처리하는 일을 반복하는 중에 Device Controller가 Device의 작업 완료 됐음을 CPU에 알리는 일이 필요하다. 여기서 등장하는 개념이 바로 **“Interrupt”**이다.

인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 분류되며, 인터럽트 당한 시점의 레지스터와 Program Counter를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘기게 된다.

  • 하드웨어 인터럽트 : Device Controller와 같은 하드웨어가 발생시키는 인터럽트
  • 소프트웨어 인터럽트(Trap) : 프로그램이 직접 필요에 따라 인터럽트 라인을 생성해서 OS를 부르는 인터럽트
    • Exception : 프로그램이 오류를 범한 경우 ex. 0으로 나누는 연산
    • System call : 프로그램이 커널 함수를 호출하는 경우

두 종류의 인터럽트 중 하드웨어 인터럽트가 일반적으로 다뤄지는 인터럽트이며, 소프트웨어 인터럽트는 주로 Trap이라고 부른다.

그럼 일반적으로 부르는 하드웨어 인터럽트에 대해 자세히 살펴보겠다.

(1) 인터럽트 벡터

인터럽트는 매우 빈번하게 발생하기 때문에 빠르게 처리해야 한다. 따라서 인터럽트가 요청되면 이를 유발한 장치와 인터럽트 서비스 루틴의 주소를 제공하기 위해 ‘인터럽트 벡터’가 인터럽트 요청과 함께 고유의 유일한 장치번호로 색인된다.

즉, 인터럽트 벡터는 인터럽트 번호와 처리 루틴 주소를 쌍으로 가지고 있다.

(2) 인터럽트 처리 루틴

위에서 인터럽트 벡터가 가지고 있는 인터럽트 서비스 루틴을 말한다. 인터럽트가 들어왔을 때 CPU는 하던 일을 중단하고 CPU 제어권을 OS에 넘기게 된다. 운영체제에는 인터럽트에 따라 처리하는 작업이 커널함수로 정의되어 있으며 이를 인터럽트 처리 루틴(=인터럽트 서비스 루틴)이라고 한다.

 

Timer

특정 프로그램이 CPU를 독점하는 것을 막기 위한 장치이다.

무한 루프를 도는 프로그램이 있다면 그 프로그램이 CPU를 계속 잡으며 운영체제로 CPU를 넘겨주지 않게 되며 이런 제어권을 다시 뺏어올 방법이 없다. 이런 상황을 방지하기 위해 Timer라는 하드웨어를 두고 운영체제가 사용자 프로그램에게 CPU를 넘겨줄 때, Timer를 셋팅한 후 넘겨주고, 이 Timer가 종료되면 Timer가 CPU에 인터럽트를 걸어 제어권을 다시 운영체제로 가져오는 것이다.

 

 

DMA Controller

인터럽트가 매우 빈번하게 발생하기 때문에 인터럽트가 발생할 때마다 CPU가 이를 다 처리한다면 CPU는 Instruction을 처리하는 데에 많은 방해를 받게 된다. 따라서 I/O Device의 작업이 종료되면, CPU가 아닌 DMA Controller가 그 내용을 메모리로 block 단위로 전송하는 일을 하며, 이 작업이 끝나면 CPU에 DMA Controller가 인터럽트를 걸어 CPU는 이 인터럽트를 처리하게 된다.

즉, 인터럽트의 빈도를 줄여 CPU가 원할하게 Instruction을 처리할 수 있도록 돕는 역할을 한다.

 


저장장치의 계층 구조

이미지 출처 : Operating System  Concepts - Abraham Silberschatz

 

저장장치는 크게 CPU에서 직접 접근하고 실행가능한(Executable) Primary계층과 CPU에서 직접 접근이 불가능하고 실행할 수 없는 Secondary계층으로 나뉜다. 위로 올라갈수록 속도가 빠르고 비용이 높다. 따라서 위로 올라갈 수록 컴퓨터에 들어가는 용량이 적은 특징이 있다.

위 사진의 맨 위에 CPU가 있다고 생각하자.

Primary계층

CPU 바로 아래 Register가 존재하고 그 아래로 Cache Memory, DRAM으로 구성된 Main Memory가 있다.

Secondary계층

하드디스크, 플래시메모리, 마그네틱 테이프로 구성되어 있으며 비휘발성 메모리로 전원이 꺼져도 내용이 유지된다.

 

 


본 게시물은 이화여자대학교 반효경 교수님의 운영체제(2014) 강의를 들으며 작성한 강의노트입니다.

 

참고자료

 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

[Operating System Concepts - Abraham Silberschatz]

https://www.yes24.com/Product/Goods/89496122

 

운영체제 - 예스24

운영체제

www.yes24.com