인터럽트 Interrupt
인터럽트 종류
- I/O interrupt: I/O 동작 입력 시 발생
- Clock interrupt: CPU 클럭에 따라 현재 프로세스가 타임아웃일 경우 발생
- Console interrupt
- Program check interrupt
- Machine check interrupt
- Inter-process interrupt
- System call interrupt
인터럽트 처리 과정
- 인터럽트 발생
- 프로세스 중단
2-1. Context Saving: 프로세스의 문맥을 PCB에 저장
- 인터럽트 처리 Interrupt handling
3-1. 인터럽트 발생 장소, 원인 파악
3-2. 인터럽트를 서비스할 것인지 무시할 것인지 결정
3-3. 알맞은 인터럽트 서비스 루틴(Interrupt Service Routine) 호출 - 인터럽트 서비스도 프로세스임
- 인터럽트 완료
4-1. Context restoring: 인터럽트가 완료되면 ready queue에 있는 프로세스 running
컨텍스트 스위칭 Context Switching
컨텍스트 Context
- 프로세스와 관련된 정보들의 집합
컨텍스트 종류
- CPU register context: 프로세스 실행 시 CPU 레지스터에 저장된 값들
- code, data, stack, pcb: 메모리에 저장된 값들
컨텍스트 세이빙 Context saving
- 현재 running 중인 프로세스의 CPU Register context를 메모리에 저장하는 작업
컨텍스트 리스토어링 Context restoring
- 저장된 프로세스의 context를 다시 프로세스의 레지스터로 불러오는 작업
컨텍스트 스위칭 Context Switching
- 현재 실행 중인 프로세스 context saving, 실행할 프로세스의 context restoring
- 커널의 개입으로 이루어짐
컨텍스트 스위칭 오버헤드
- 컨텍스트 스위칭에 소모되는 비용을 오버헤드라고 함
- 컨텍스트 스위칭 오버헤드는 os마다 다름
- 자주 컨텍스트 스위칭이 발생하면 오버헤드가 os 성능에 영향을 주므로 가능하면 줄이는 것이 좋음
- 스레드를 사용함으로써 줄일 수 있음
한기대 김덕수 교수님 강의