운영체제 정리 1장 - 1
본 포스팅은 운영체제 내부구조 및 설계원리를 책을 참고하여 작성한 글입니다.
CPU는 다음과 같이 구성(PC, IR, MAR, I/O AR, I/O BR)되어 있으며, PC레지스터는 다음 실행될 명령의 주소를 담고 있고 IR은 실행될 명령어를 담고 있습니다. 메모리 주소 레지스터(MAR: Memory Address Register)와, 메모리에 기록되거나 메모리로부터 읽힐 데이터를 저장하는 메모리 버퍼 레지스터(MBR: Memory Buffer Register)라는 두 개의 내부(처리기에 대해) 레지스터가 이용된다. 입출력 버퍼 레지스터(IOBR: I/O Buffer Register)는 입출력 모듈과 처리기 간의 데이터 교환 목적으로 사용된다.

cpu의 기본적인 명령어 사이클은 fetch - execute이다. 각 명령어 사이클이 시작될 때 처리기는 메모리로부터 명령어를 가져온다. 일반적으로, 프로그램 카운터(PC)는 다음에 가져올 명령어의 주소를 가지고 있다 별도의 명령이 없는 한, 처리기는 각 명령어를 반입한 후 항상 PC를 증가시켜 순서대로 다음 명령어(다음 상위 메모리 주소에 위치한 명령어)가순서대로 반입되게 한다.

인터럽트: 인터럽트는 기본적으로 처리기의 처리율을 향상시키기 위해 제공된다. 운영체제에서 인터럽트(interrupt)는 중앙 처리 장치(CPU)가 현재 수행 중인 작업을 일시 중단하고 다른 중요한 작업을 먼저 처리하도록 알리는 메커니즘입니다.


인터럽트를 처리하지 않는 경우 Figure 1.8을 보면 1,4가 수행된 후 프로세서가 대기하는 것을 볼 수 있다. 반면에 인터럽트를 사용한 경우, 입출력 연산과 동시에 프로세서가 실행된다. 반면에 긴입출력 대기 같은 경우, 인터럽트를 하지 않는 경우 프로세스 대기가 길어지는 한편, 인터럽트도 입출력 연산과 동시에 프로세서 실행하고 그리고 프로세서를 대기하는 데 그 간격이 더 짧다.


인터럽트 처리기는 1. 장치 제어기나 다른 시스템 하드웨어가 인터럽트를 발생시키고, 2.처리기가 현재 명령어의 실행을 완료, 3. 처리기가 인터럽트 확인 신호를 보냄, 4. 처리기가 PSW와 PC를 제어 스택에 저장하고, 5.처리기는 인터럽트에 해당하는 새로운 PC값을 적재하고, 6. 프로세스의 나머지 상태 정보를 저장, 7. 인터럽트 처리, 8. 프로세스의 상태 정보를 복구, 9. 이전 PSW와 PC를 복구한다.

여기 인터립트 예제가 나온다. t는 시간이다. t =10 일때 프린터 인터럽트가 발생한다. 첫 인터럽트가 발생하고 프린터 인터럽트는 계속 실행되다가 t = 15일 때 통신 인터럽트를 만나게 되고 이 인터럽트는 프린터보다 우선순위가 높기 때문에 프린터 인터럽트를 인터럽트한다. 그리고 t =20일 때 디스크 인터럽트가 발생하는데 통신 인터럽트보다 우선순위가 낮기때문에 기다렸다가 통신 인터럽트가 끝날때 t=25일때 프린터 인터럽트를 인터럽트하고 t=35일때 원래 프린터 인터럽트 주소+1로 돌아가고 프린터 인터럽트는 끝낸 뒤에 다시 유저 프로그램의 주소 + 1 번째로 가게 된다.