인터럽트의 정의와 종류, 처리과정
인터럽트란?
인터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 즉시 중단하고 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것을 말합니다. 인터럽트는 외부, 내부, 소프트웨어 인터럽트로 분류합니다. 외부나 내부 인터럽트는 CPU의 하드웨어에서의 신호에 의해 발생하고 소프트웨어 인터럽트는 명령어의 수행에 의해 발생합니다.
종류
외부 인터럽트
외부 인터럽트는 다음과 같이 입,출력장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생합니다.
- 전원 이상 인터럽트: 정전이 되거나 전원 이상이 있는 경우 발생합니다.
- 기계 착오 인터럽트: CPU의 기능적인 오류 동작이 발생한 경우 발생합니다.
- 외부 신호 인터럽트: 타이머에 의해 규정된 시간을 알리는 경우, 키보드로 인터럽트 키를 누른 경우, 외부 장치로부터 인터럽트 요청이 있는 경우 발생합니다.
- 입출력 인터럽트: 입출력 Data의 오류나 이상 현상이 발생한 경우, 입출력장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우 발생합니다.
내부 인터럽트
내부 인터럽트는 잘못된 명령이나 데이터를 사용할 때 발생하며 트랩(Trap)이라고도 부릅니다.
- 프로그램 검사 인터럽트: 0으로 나누기가 발생한 경우, OverFlow 또는 UnderFlow가 발생한 경우, 프로그램에서 명령어를 잘못 사용한 경우, 부당한 기억장소의 참조와 같은 프로그램 상의 오류가 발생하빈다.
소프트웨어 인터럽트
소트프웨어 인터럽트는 프로그램 처리 중 명령의 요청에 의해 발생한 것으로, 가장 대표적인 형태는 감시 프로그램을 호출하는 SVC인터럽트가 있습니다.
- SCV인터럽트: 사용자가 SVC명령을 써서 의도적으로 호출한 경우, 복잡한 입출력 처리를 해야하는 경우, 기억장치 할당 및 오퍼레이터와 대화를 해야하는 경우 발생합니다.
인터럽트 발생 시 처리과정
- 인터럽트 요청
- 프로그램 실행 중단
- 현재의 프로그램 상태 보존: PCB, PC 등
- 인터럽트 처리루틴 실행: 인터럽트를 요청한 장치를 식별
- 인터럽트 서비스 루틴 실행: 인터럽트 원인을 파악하고 실징적인 작업을 수행합니다. 처리기 레지스터 상태를 보존합니다. 서비스 루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행합니다.
- 상태복구: 인터럽트 발생시 저장해둔 PC를 다시 복구합니다.
- 중단된 프로그램 실행 재개: PC의 값을 이용하여 이전에 수행중이던 프로그램을 재개합니다.