운영체제
5. 인터럽트(Interrupt)
ggomjiu
2025. 1. 16. 17:43
인터럽트
: 프로세서에 이벤트를 알려 현재 하던 명령의 위치를 저장 후 중단하고 다른 일을 하도록 처리하는 비동기적 방법
1) 하드웨어 인터럽트
- 일반적인 하드웨어 인터럽트
- 하드웨어 장치인 컨트롤러가 CPU의 서비스를 요청하기 위해 발생시키는 인터럽트
- 운영체제의 타이머 인터럽트
- 운영체제에서는 각 프로그래머들이 공평한 시간 동안 CPU를 할당 받을 수 있도록 세팅된 시간 동안 CPU를 사용하고, 사용 시간이 종료되면 발생하는 인터럽트
2) 소프트웨어 인터럽트(Trap)
- 예외 상황(Exception)
- 프로그램이 허용되지 않은 연산을 수행하려고 할 때 자동적으로 발생하는 인터럽트
- EX) 0으로 나누기, 권한 없는 메모리 참조 등
- 시스템 콜(System Call)
- 프로세스가 운영 체제의 서비스를 요청하기 위해 커널의 함수를 호출하는 경우 발생하는 인터럽트
3) 인터럽트의 이유
: CPU를 최대한 낭비하지 않도록 하기 위해서 사용
- 만약 인터럽트가 존재하지 않는다면 CPU는 장치 상태를 점검하는 Wait Loop가 발생하며 이로 인하여 다른 연산을 할 수 없기에 CPU가 낭비됨
- 인터럽트가 발생했다고 해서 CPU에서 바로 실행되면 CPU처리가 복잡해지고 효율적으로 처리되지 않음
-> 따라서 명령어 사이클이 끝나면 인터럽트 처리를 함
인터럽트 서비스 루틴(ISR)
: 인터럽트 핸들러라고도 하며 실제 인터럽트를 처리하는 루틴으로 실행 중이던 레지스터와 PC를 저장하여 실행 중이던 CPU의 상태를 보존하고 인터럽트 처리가 끝나면 원래 상태로 복귀
- 실행 중인 프로그램을 중단
- 현재 프로그램 상태를 보관 (Context Switching)
- 인터럽트 처리 루티 실행
- 인터럽트 서비스 루틴 실행
- 인터럽트 요청 신호가 발생했을 때 보관한 PC의 값을 복원하여 이전 실행 위치로 복귀
- 이어서 프로그램 실행