CA (Computer architecture) 를 공부하면서 interrupt 부분을 공부하다보니 책마다 다소 상이한 부분이 있었다. interrupt 분류(종류) 부분이었는데 어떤 책에서는 외부 인터럽트의 한 종류로 I/O 인터럽트를 분류해 놓은 반면 어떤 책에서는 외부 인터럽트는 외부 인터럽트대로 있고, I/O 인터럽트는 또 다른 종류로 분류해 놓은 경우도 있었다. 인터럽트와 유사한 개념인 예외(Exception)와 혼용하는 경우도 있었고, 구분하여 분류한 곳도 있었다.


이래저래 찾다 보니 어느 정도 정리된 내용을 찾아 정리하고자 한다.


Interrupt (인터럽트) : 제어 흐름에서 예상치 못한, 외부에서 전달되는 사건.

Exception (예외) : 프로세서 내부에서 발생하는 예상치 못한 사건.


일부 architecture 에서는 exception과 interrupt를 interrupt 로 통합하여 용어를 사용하기도 하는 반면, 다른 architecture에서는 구분하여 사용하기도 한다. 구분할 경우 외부 인터럽트는 인터럽트로, 내부 인터럽트는 예외로 생각하면 된다. 


- 내부 인터럽트 (Internal interrupt) - exception

. SVC (SuperVisor Call) 인터럽트 : 

외부의 프로그램이 의도적으로 호출. 예를 들어 다른 프로세스 수행 중 새로운 프로세스를 실행하면 자원 할당 등의 동작을 수행

. 산술 오버플로우/언터플로우 (Overflow/Underflow)

. 0 으로 나누기 (Division by zero)

. 정의 안된 명령어 수행



- 외부 인터럽트 (External interrupt)

. I/O 인터럽트 : 입출력 요구가 있을 때 하드웨어가 발생.

. 전원 이상 인터럽트 (Power fail interrupt)

. 기계 착오 인터럽트 (Machine check interrupt) : CPU 등의 기능적인 오류

. 외부 신호 인터럽트 : I/O 장치가 아닌 Timer 등으로 부터 발생한 인터럽트



책마다 다른 부분도 있고, 기준이 달라 위 분류가 제일 정확하다고 말하기는 애매하지만 기억하기엔 좋을 것 같아 정리해보았다.