컴퓨터 시스템 구조
컴퓨터 시스템 구조는 크게 CPU, 메모리, I/O Device, Disk로 구성되어 있다.
- Memory : CPU의 작업공간 CPU에서 하는 일을 실행하는 공간이다.
- CPU : 매 clock cycle마다 기계어를 하나씩 읽어서 실행하게 된다.
- I/O Device : keyboard, 마우스, 모니터 등의 Input / Output 기계 장치
- Disk : 보조 기억 장치이면서도 I/O 장치라고도 볼 수 있다. 메모리를 읽어들이는 Input Device이면서 처리 결과를 저장하는 Output Device이기 때문이다.
- Device Controller : 각각의 I/O 장치에는 Device Controller가 붙어있다. 이 Device Controller가 각각의 I/O장치를 관리한다. Disk 의 내부를 통제하는 것은 CPU가 아니라, Device Controller가 관리하게 되는 것이다. CPU보다 Disk 가 약 100만배정도 느리다. 따라서 Device Controller가 I/O Device관리한다. 대신 CPU는 메모리에서 명령어를 읽어서 실행하는 일을 한다.
- local buffer : Device Controller들도 각각의 작업공간이 필요하다. 이 작업공간에 해당하는 부분이 local buffer이다.
- Register : CPU안의 Memory 보다 더 빠르면서 정보를 저장할 수 있는 공간이다.
- Mode bit : 현재 CPU에서 수행중인 것이 운영체제인지, 사용자 프로그램인지를 구분해주는 것이다.
- Interrupt line : CPU는 메모리에 있는 명령어만 실행한다. 명령어가 실행되고 나면 다음번에 실행할 기계어의 주소값이 증가한다.
- timer : 계속 CPU만 쓰는 (ex) while 문) 작업이 있다고 한다. I/O작업도 하지 않는다. CPU가 다른 프로그램에게 넘어가지 않을 것이다. 따라서 CPU를 나눠서 쓰도록 구현할 필요가 있을 것이다. 따라서 timer 라는 하드웨어가 특정 프로그램이 CPU를 독점하는 것을 방지한다. timer가 인터럽트를 걸면 CPU는 잠시 하던 일을 멈추고, CPU의 제어권이 사용자 프로그램으로부터 운영체제로 넘어가게 된다.
- Memory Controller : 메모리에 접근하는 작업이 충돌나지 않도록 제어해주는 역할
- DMA Controller : I/O 장치가 인터럽트를 빈번히 거는 경우, CPU 가 너무 많이 방해를 받게 된다. 이를 방지하기 위해서, I/O 작업이 들어왔을 때 DMA가 중간에서 처리해주고 CPU에게 인터럽트를 한번만 발생시킨다. 좀 더 자세하게는, DMA는 I/O Device에서 작업이 끝나면 직접 local buffer에 담긴 작업 내용을 메모리로 복사하는 일까지 한다. 복사하는 작업이 끝나면 CPU에게 인터럽트를 걸어서 작업이 완료됨을 알린다.
I/O 장치 작업은 OS를 통해서만 사용할 수 있다. 따라서 OS에게 CPU를 넘겨주고 OS는 I/O Device Controller에게 일을 시킨다. 그동안 CPU는 또 다른 작업을 수행하게 된다.
Mode bit
Mode bit은 사용자 프로그램의 잘못된 수행으로 다른 프로그램이나 운영체제에 피해가 가지 않도록 보호장치 역할을 하게 된다.
- 1 : 사용자 모드 , 사용자 프로그램을 수행한다.
- 0 : 커널 모드 (= 모니터모드, 시스템모드) , OS 코드를 수행한다.
예를 들어서, mode bit이 1인경우 사용자 모드이므로 한정된 instruction 만 실행할 수 있다. 따라서 위험한 동작을 사전에 방지하는 역할을 하게 된다.
Timer
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킨다.
- timer는 매 clock 의 tick 마다 1씩 감소한다.
- timer의 값이 0 이 되면 timer interrupt가 발생한다.
- CPU 자원을 특정 프로그램이 독점해서 사용하는 것을 방지할 수 있다.
Device Controller
- I/O Device 를 관리하는 일종의 작은 CPU이다.
- 제어 정보를 위해서 control register, status register를 가진다.
- local buffer를 가지며, I/O는 실제 device와 local buffer 사이에서 일어나게 된다.
- I/O 작업이 끝나게 되면 작업 종료를 CPU에게 알린다.
* Device Driver vs Device Controller
Device Controller는 하드웨어의 영역이다. 각 I/O Device들을 통제하는 작은 CPU이다. 반면 Device Driver는 소프트웨어로, 각 device들을 처리하는 루틴에 대한 코드를 뜻한다.
시스템 콜
사용자 프로그램이 운영체제로부터 직접 인터럽트를 요청하는 것이다. 일반 함수 호출과는 다르다. 인터럽트가 들어왔기 때문에 mode bit 이 0으로 바뀌고 CPU 제어권이 OS로 넘어가게 된다.
인터럽트
넓은 의미의 인터럽트는 하드웨어가 발생시킨 인터럽트를 의미한다. 반면, 좁은 의미의 인터럽트는 소프트웨어가 발생시킨 인터럽트로, Trap 이라고 한다. System call 이나 execption 오류가 일어나는 경우이다.
인터럽트 당한 시점의 register와 program counter를 저장후 CPU의 제어를 인터럽트 처리 루틴에 넘기게 된다.
CPU는 PC(Program Counter)가 가리키는 명령어를 순차적으로 확인한다. 그리고 한 명령어에서 다음 명령어로 넘어가기 전에 인터럽트가 있는지 확인한다. 인터럽트가 있다면 CPU 제어권이 자동으로 OS에게 넘어가게 된다. 인터럽트 백터에서 인터럽트 처리 함수 주소를 얻는다. 실제로 해야할 일은 인터럽트 처리 루틴에서 처리한다.
- 인터럽트 백터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있다.
- 인터럽트 처리 루틴 : 인터럽트를 처리하는 커널 함수
'Computer Science > 운영체제' 카테고리의 다른 글
[OS] 운영체제 5.1 Process (0) | 2023.05.22 |
---|---|
[OS] 운영체제 4. 시스템의 구조와 프로그램의 실행 (0) | 2023.05.21 |
메모리의 구조 (Memory Structure) (0) | 2023.04.03 |
[운영체제] Process와 Thread의 차이 (0) | 2023.03.30 |
[운영체제] 세마포어와 뮤텍스 알고리즘 (1) | 2023.01.16 |