컴퓨터 시스템 구조를 이해해 보자,,
컴퓨터는 CPU와 Memory로 구성되며, 그 외 디스크, 키보드, 프린터, 모니터 등과 같은 I/O 장치들로 구성된다.
# CPU(Central Processing Unit)
두말할 것도 없다. 컴퓨터의 핵심 두뇌.
메모리에 적재된 instruction들을 실행하고 끝나면 interrupt를 체크하는 과정을 반복 수행한다.
- interrupt line : CPU는 Memory와 일을 하는 소울 메이트다. 헌데 만약 속도가 느린 I/O 장치와 일을 해야 할 경우 Device controller에게 일을 시켜놓고 CPU는 다음 업무를 처리한다. 이후 Device controller는 실행한 결과(ex. 키보드로 입력한 문자열)를 자신의 local buffer에 저장한 후 CPU에게 interrpt를 보낸다.
- mode bit : mode bit이란 운영체제가 아닌 사용자 프로그램이 잘못된 수행으로 다른 프로그램이나 운영체제에 피해가 가지 않도록 하기 위한 일종의 보호 장치의 역할을 한다. 이 Mode bit을 통해 하드웨어 적으로 두 가지 모드의 operation을 지원하는데 다음과 같다.
- 1 user mode : 사용자 프로그램 수행
- 0 monitor mode(kernel mode) : OS 코드 수행
- 보안을 위협하는 중요한 명령어는 monitor mode에서만 수행 가능
- Interrupt나 Exception 발생 시 하드웨어가 mode bit을 0으로 바꿈
- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 세팅함
- registers : CPU가 요청을 처리하는데 필요한 데이터를 임시적으로 저장하는 기억장치이다. (메모리보다 수십 수백 배 빠르다.)
# DMA controller
I/O 장치의 local buffer 데이터를 사용자 프로그램에 copy 하는 것이 CPU의 오버헤드가 크니 DMA controller가 I/O 장치에 직접 접근하여 copy를 대신 처리해준 후 끝났다는 interrupt를 걸어준다.
(CPU가 너무 자주 I/O 장치의 interrupt를 받기도 하고, 비싼 CPU 자원을 효율적으로 쓰기 위해 존재함)
# Memory controller
위에 DMA controller를 이해했다면 한 가지 의문이 생기는데,
DMA controller와 CPU가 같은 메모리를 동시에 접근하면 문제가 발생하지 않을까? (마치 데이터베이스의 multi write처럼)
역시 이를 대비해놓은 구조로 설계가 되어있다,,
이 Memory controller가 위의 문제를 중재해주는 역할을 한다.
# Timer
Timer는 운영체제를 도와주기 위한 별도의 하드웨어이다.
핵심 역할은 Time-sharing을 구현하기 위해 사용되며, Timer에 세팅한 시간이 지나면 Timer interrupt를 걸어 사용자 프로그램이 점유하던 CPU 권한을 운영체제로 넘김으로써 다음 사용자 프로그램으로 넘겨준다. (이렇게 N개의 프로그램에 계속 CPU 권한이 넘어간다.)
- 정해진 시간이 흐른 뒤 운영체제에게 CPU의 제어권이 넘어가도록 interrupt를 발생시킨다.
- 매 클럭 틱마다 1씩 감소한다.
- 타이머 값이 0이 되면 Timer interrupt가 발생한다.
- CPU를 특정 프로그램이 독점하는 것으로부터 보호한다. (무한루프 프로그램이 CPU 독점하는 것을 방지)
# Device Controller
I/O 장치를 관리하는 작은 CPU의 역할이라고 보면 된다.
제어 정보를 위해 control register, status register를 가지며, 데이터 저장소인 local buffer를 가지고 있다.
I/O는 실제 device와 local buffer 사이에서 발생하며, I/O 작업이 끝날 경우 Device Controller가 CPU에게 interrupt로 그 사실을 알린다.
'Computer Science > Operating Systems' 카테고리의 다른 글
[Operating Systems] 프로세스와 쓰레드 (0) | 2023.01.10 |
---|---|
[Operating Systems] 인터럽트(Interrupt) (0) | 2023.01.06 |
[Operating Systems] 운영체제란? (0) | 2022.12.21 |