운영체제의 구조
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 제어권을 넘기는 것이다.
이를 구현하는 방법으로는
- I/O 작업이 완료될 때까지 CPU 낭비시키기 (어떠한 작업도 수행하지 않는 상태)
- 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 은 재사용을 목적으로 데이터를 상위 메모리로 넘기는 것을 의미한다.
'운영체제' 카테고리의 다른 글
혼자 공부하는 운영체제 (5) - Thread (0) | 2022.10.24 |
---|---|
혼자 공부하는 운영체제 (4) - Scheduler (0) | 2022.10.24 |
혼자 공부하는 운영체제 (3) - 프로세스의 실행 (0) | 2022.10.22 |
혼자 공부하는 운영체제 (1) - 운영체제란 무엇인가? (0) | 2022.10.13 |
댓글