1. Interrupt
Interrupt
- 프로세스가 하던 일을 멈추고 이미 정해진 코드에서 요청에 대한 처리를 수행한다.
- 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다 (wiki)
- 주요개념 : 인터럽트 서비스 루틴, 인터럽트 핸들러, 인터럽트 벡터
인터럽트 처리과정
1) 인터럽트 요청
2) 프로그램 실행 중단: 현재 실행중이던 Micro operation 까지 수행한다.
3) 현재의 프로그램 상태 보존: 현재 실행중인 Context 저장
4) 인터럽트 처리루틴 실행: 인터럽트를 요청한 장치를 식별한다.
5) 인터럽트 서비스 루틴 실행
- 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다.
- 서비스루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.
- 인터럽트 서비스 루틴을 실행할 때 인터럽트 플래그(IF)를 0으로 하면 인터럽트 발생을 방지할 수 있다.
6) 상태복구 : 인터럽트 발생 시 저장해둔 PC(Program counter)를 다시 복구한다.
7) 중단된 프로그램 실행 재개: PCB의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.
02. Context Switching
Context Switching
- 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 이전 Context를 보관하고 새로운 Context를 적재하는 작업. Context는 PCB에 기록되어 있다.
- A context switch is the computing process of storing and restoring the state (context) of a CPU such that multiple processes can share a single CPU resource
PCB
- 프로세스 제어 블록(Process Control Block)
- 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조
- 프로세스 상태, PID, PC, 레지스터, 메모리 관리 정보, 입출력 상태 정보.