자 스물 아홉번째 키워드 '인터럽트'를 알아보겠다.
이전 키워드와 같이 나오는 개념이기도 하고 중요한 개념이기에 이론으로 알아보았다.

인터럽트(Interupt)는 끼어듦 또는 가로막기라는 뜻을 가지고 있는데, CPU가 프로그램을 실행하고
있을때, 입출력하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에
마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
대부분의 컴퓨터는 한 개의 CPU를 사용하므로 한 순간에 하나의 일 밖에 처리할 수 없기 때문에
어떤 일을 처리하는 도중에 우선순위가 급한 일을 처리할 필요가 있을때 대처할 수 있는 방안이
필요하여 나온 방법이다.
인터럽트가 발생을 했을때 처리되는 과정은 다음과 같다.
기존의 작업을 처리하던 도중, 인터럽트가 발생
현재 컴퓨터가 처리하는 일을 중지하고 현재의 컴퓨터의 상태(CPU 내부의 레지스터, 메인 메모리 내용 등을)를 저장
해당하는 인터럽트를 처리해주기 위한 인터럽트 서비스 루틴을 처리
인터럽트 처리 이후 저장되었던 이전 작업의 상태를 복구하고 이전 작업 수행을 재개
인터럽트의 종류는 크게 두가지로 나뉜다고 한다.
각각의 종류에서 발생 조건을 알아보았다.
전원 이상 인터럽트: 정전이나 전원이 이상이 있는 경우
기계 고장 인터럽트: CPU등의 기능적인 동작 오류가 발생한 경우
입출력 인터럽트(I/O Interrupt): 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 인터럽트
0으로 나누는 경우
오버플로우 또는 언더플로우가 발생한 경우
프로그램 상의 오류
프로그램에서 함수 등 명령어를 잘못 사용한 경우
예외를 처리하던 중 또 다른 예외가 발생할 경우, Double Fault이라고 부름
Double Fault가 발생하여 이를 처리하는 중에 또 다른 예외가 발생할 경우, Triple Fault라고 부르며 이 경우 CPU Reset가 발생
소프트웨어 인터럽트: CPU가 인스트럭션을 수행하는 도중에 일어나는 인터럽트
스레드를 공부하며 인터럽트를 직접걸어보았는데 다양한 프로그램을 돌리며 멈췄던 현상이
이런 현상이라는 것을 깨달았다. 꼭 필요한 방법이고 응용이 중요한 방법이라고 생각하여
더 깊에 탐구 해야겠다.