인터럽트- CPU의 작업을 방해하는 신호
비동기 인터럽트: 입출력장치에 의해 발생하고 CPU가 입출력 장치에게 작업을 부탁하고 작업을 끝낸 장치가 CPU에게 완료 알림(인터럽트)을 보냄동기 인터럽트: CPU에 의해 발생하는 인터럽트 예외 라고도 부름
- 효율적인 명령어 처리를 위해 하드웨어 인터럽트 사용
하드웨어 인터럽트 처리 순서
- 입출력 장치는 CPU에게 인터럽트 요청 신호를 보냄
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전에 항상 인터럽트 여부를 확인
- CPU는 인터럽트 요청을 확인하고, 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인
- 인터럽트를 받아들일 수 있다면 지금까지의 작업을 백업
- CPU는 인터럽트 백터를 참조해 서비스 루틴 실행
- 서비스 루틴 실행이 끝나면 4에서 백업 해둔 작업을 복구하여 실행을 재개
인터럽트는 CPU의 정상적인 실해 흐름을 끊는 것이기 때문에 인터럽트하기 전에 CPU에게 인터럽트의 가능 여부를 확인
- CPU가 인터럽트 요청을 수용하기 위해서는 플래그 레지스터가 활성화 되어 있어야함
- 인터럽트 플래그는 하드웨어 인터럽를 받아들일지, 무시할지를 결정하는 플래그
- 만약 인터럽트 플래그가 불가능으로 설정되어 있다면 CPU는 인터럽트 요청이 오더라도 무시
- CPU가 인터럽트 요청을 받아들이기로 했다면 CPU는 인터럽트 서비스 루틴을 실행
- 인터럽트 서비스 루틴은 인터럽트를 처리하기 위한 프로그램으로, 인터럽트 핸들러라고도 함
- CPU가 인터럽트를 처리 = 인터럽트 서비스 루틴을 실행하고, 본래 수행히던 작업으로 다시 되돌아온다는 의미
예외 동기 인터럽트의 종류
- 폴트: 예외가 발생한 명령어부터 실행
- 트랩: 예외가 발생한 명령어의 다음 명령어부터 실행
- 중단
- 소프트웨어 인터럽트