본문 바로가기
운영체제

혼자 공부하는 운영체제 (2) - 운영체제의 구조

by 임동무 2022. 10. 18.

운영체제의 구조

1. 컴퓨터의 구조

  • CPU
  • Memory
  • Disk
  • I/O Device

1. CPU

CPU 는 실제 Instruction (실행 해야하는 작업) 를 실행하는 주체로서, 

CPU Scheduling 을 통해 프로세스의 실행 순서를 정하여 평균적인 성능을 높이는 역할을 한다. 

 

2. Memory

Memory 는 한정된 자원을 가지고 최대한 효율적으로 사용할 수 있도록 메모리를 분배하여 메모리를 관리하는 역할을 한다.

 

3. Disk

Disk 을 관리하는 역할을 한다.

Disk Scheduling 을 통해 메모리의 움직임을 최소화 하여 빠른 처리를 할 수 있도록 한다.

 

4. I/O Device

I/O Device 는 입출력을 관리하는 역할을 한다. 

I/O 작업은 Interrupt가 발생하면 처리하는 방식으로 수행된다.

 

 

2. 컴퓨터 시스템의 구조

CPU는 Register, mode bit, Interrupt line 로 구성되어 있다.

Register 는 작은저장공간, mode bit 은 현재 CPU를 소유하고 있는 주체에 대한 bit , Interrupt line 은 Interrupt 신호를 저장하는 line 을 의미한다. 

 

우선 Register 를 보면, Register 에는 현재 수행중인 명령어를 저장하는 Instruction Register , 현재 접근할 메모리의 주소를 기억하는 Memory Address Register 등등 여러 Register 가 있는데 지금 볼 Register 는 Program Counter Register 이다. 

 

위에서 CPU 는 Instruction 을 수행하며, 우선순위를 정하여 평균 성능을 높인다고 했다. 

이 때, 현재 실행하고 있는 프로세스가 끝나면 다음으로 실행할 Instruction 에 대한 주소정보를 가지고 있는 것이 바로 PCR 이다. 

 

 

mode bit 은 직역하면 모드 + 비트 이다. 즉, '모드를 나타내는 비트연산자' 라는 뜻이다. mode bit 이 나타내는 모드는 

현재 Kernel mode 인지 아닌지를 나타낸다. 

즉, CPU 의 제어권을 운영체제가 소유하고 있으면 0, 아니면 1을 나타낸다. 

이것이 존재하는 이유는 사용자 프로그램이 직접적으로 메모리에 접근하는 등을 방지하기 위해 존재한다.

그렇기 때문에 1인 경우, 모든 instruction 을 실행가능하지만 0인 경우에는 제한상의 instruction 만 실행할 수 있다. 

 

 

 

I/O 작업의 전체적인 흐름을 먼저 보면

CPU 는 instruction 을 수행한다.  

-> instruction 수행중 I/O 요청이 발생

-> CPU 를 운영체제에 넘김

-> 운영체제가 I/O Device Controller 에게 요청

-> 작업이 완료되면 I/O Device Local Buffer 에 결과값 저장

-> CPU 에 interrupt

-> CPU 가 실행중인 instruction 이 완료

-> CPU 를 다시 운영체제에 넘김

-> 운영체제가 Interrupt 확인

 

의 순서로 I/O 작업이 실행된다. 

이 과정을 뜯어보면, 먼저 CPU 는 수행중인 instruction 에서 I/O 요청이 발생하면 CPU 를 운영체제에 넘긴다.  I/O Device 에는 Device 의 CPU 역할을 하는 Device Controller, 작업 공간인 local buffer 로 구성되어 있는데 CPU 를 넘겨받은 운영체제는 Device Controller 에 I/O 작업을 요청한다.

I/O Device 는 해당 요청에 대해 작업을 수행, 결과를 local buffer 에 저장하고 CPU의 Interrupt line 에 interrupt 가 발생했음을 알린다. 

I/O 작업은 상당히 긴 시간을 요하는 작업이기 때문에 이 작업을 기다리지 않고 요청을 보낸 운영체제는 다시 CPU 를 넘겨 CPU 는 다음 instruction 을 수행한다. 

매 instruction 이 끝날 때마다 운영체제는 CPU 제어권을 얻게 되는데 이 때마다 운영체제는 interrupt line 을 확인하여 처리할 interrupt 가 있는지 확인한다. Memory 에는 interrupt vector(처리 루틴에 대한 주소) 와 interrup handler (실제 처리 루틴 함수)가 존재하는데, mode bit 이 1 인 경우 Memory 의 직접 접근이 불가능 하기 때문에 운영체제에 CPU 제어권을 넘겨 운영체제가 interrupt 에 따른 처리 루틴을 실행할 수 있도록 설계되어있다.

 

3. I/O 에 대해서..

입출력 작업에는 동기식 입출력과 비동기식 입출력이 있다.

먼저 동기 라는 뜻은 시간적인 개념으로 동기식은 시간의 흐름에 맞추는 것이다. 비동기식은 반대로 시간에 흐름에 맞지 않는 것이다.

 

3.1 동기식 입출력

이 뜻에 맞추어 해석하면 동기식 입출력은 시간에 흐름에 맞게 입출력을 하는 것이다. 

즉, I/O 요청을 한 후에 이 I/O 작업이 마무리 되고 나서야 CPU 제어권을 넘기는 것이다.

이를 구현하는 방법으로는

  1. I/O 작업이 완료될 때까지 CPU 낭비시키기 (어떠한 작업도 수행하지 않는 상태)
  2. I/O 작업을 요청한 후에 해당 프로그램에게서 CPU 를 빼앗고, 다른 사용자 프로그램에게 CPU 할당

하는 방법이 있다. 동기식 입출력의 경우 보통 Reading 에서 사용된다. 

 

3.2 비동기식 입출력

비동기식 입출력은 I/O 가 시작된 후 바로 사용자 프로그램으로 CPU 제어권이 넘어오는 방식을 의미한다.

보통 writing 의 경우 비동기식 입출력을 사용한다.

 

3.3 I/O의 방식

일반적으로 I/O 는 메모리 접근 instruction 과 I/O 장치 접근 instruction 이 분리되어 있다. 

하지만 MMIO(Memory Mapped I/O) 의 경우 전체 Memory 의 주소공간에 입출력 장치의 메모리나 레지스터를 메모리로 취급하여 전체 메모리의 일부분으로 특정 영역에 할당하여 배치하는 방식이다. 

 

 

 

4. 저장장치의 계층구조

                                   1

Register

-> Cache Memory

-> Main Memory

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

-> Magnetic Disk        2

-> Optical Dist

-> Magnetic Tape

 

의 구조로 되어있다.

 

1의 영역은 CPU 가 직접 바이트 단위 주소로 접근하여 처리하는 executable Memory 이다.

비싼 저장공간(== 속도가 빠르고 저장공간이 작다) 이기 때문이 휘발성의 특징을 가지고 있으며

Primary Memory 이다.

 

반대로 2의 영역은 CPU 가 직접 접근하는 것이 아닌, 벡터 접근을 하는 Memory 이며

상대적으로 싼 저장공간(== 속도가 비교적 느리고 저장공간이 넓다) 이기 때문에 비휘발성의 특징을 가지고 있는 Secondary Memory 이다.

 

Caching 은 재사용을 목적으로 데이터를 상위 메모리로 넘기는 것을 의미한다.  

 

 

 

댓글