인터럽트는 대기 중인 일을 다시 움직이는 신호다
장치 이벤트, 예외, 타이머는 현재 문맥을 저장하고 커널이 큐와 프로세스 상태를 갱신하게 만든다.| 구간 | 커널이 하는 일 | 상태 변화 |
|---|---|---|
| event | 장치, 예외, 타이머 이벤트를 감지한다 | 현재 실행 흐름을 잠시 멈춘다 |
| save | PC와 레지스터 같은 문맥을 보존한다 | 나중에 같은 위치로 돌아갈 근거를 남긴다 |
| handler | ISR이 원인별 상태를 갱신한다 | I/O 완료나 예외 결과가 큐에 반영된다 |
| wake | 대기 중이던 프로세스를 Ready로 옮긴다 | 스케줄러가 다음 실행 후보를 다시 고른다 |
판단 기준
폴링
CPU가 계속 묻는 방식이라 단순하지만 낭비가 커질 수 있다.
DMA
컨트롤러가 데이터를 옮기고 CPU는 완료 인터럽트만 받는다.
타이머
무한 루프 중인 프로세스도 주기적으로 CPU를 빼앗길 수 있다.
큐
I/O 완료는 Waiting에서 Ready로 이동하는 명확한 전환점이다.