🏷️exception vs interrupt
- 프로세서는 exception과 interrupt를 구분해서 예외적인 상황을 외부로 알린다.
- ARM은 exception과 interrupt가 큰 차이 없이 동작한다.
- 모든 프로세서가 이 둘을 엄밀하게 구분하는 것은 아니다.
📌exception
- 프로그램 실행 도중 동기적으로 발생하는 이벤트다.
- 프로세서는 exception이 발생하면, exception을 처리하는 핸들러를 실행시킨다.
1. trap
- exception이 발생한 명령어 이후부터 다시 시작한다.
2. fault
- 문제를 일으킨 명령어부터 다시 시작한다.
- 🔍ex) page fault
3. abort
- 어디서 문제가 발생했는지 알려주지 않는다.
- 게다가 다시 프로그램을 시작하는 것도 허용하지 않으므로 심각한 하드웨어 문제일 때 발생한다.
📌interrupt
- 프로세스와 비동기적으로 발생하는 이벤트다.
- 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.
- 프로세서는 인터럽트를 처리하는 함수 루틴으로 이동한다.
- 인터럽트를 처리하는 루틴을 인터럽트 서비스 루틴(ISR)라고 한다.
1. hardware interrupt
- 하드웨어 인터럽트는 명령어 흐름 처리와 상관없는 비동기적인 사건을 가리킨다.
- 말 그대로 명령어 흐름이 방해받는다.
2. software interrupt
- 소프트웨어 인터럽트는 명령어로 발생되는 인터럽트다.