프로그램 실행 중에 예기치 않은 상황이 발생한 경우 현재 실행 중인 작업을 즉시 중단하고, 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것
인터럽트 당한 시점의 레지스터와 PC(program counter)를 저장한 후, CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
하드웨어 인터럽트
- 하드웨어가 발생시킨 인터럽트로 입출력 장치, 전원 등 외부적인 요인으로 발생한다.
ex) keyboard 입력, timer 종료
소프트웨어 인터럽트(Trap)
- 프로그램이 커널 함수를 호출하는 경우(system call), 잘못된 명령이나 데이터를 사용할 때(exception)
ex) 0으로 나눔, 오버플로우
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
해당 인터럽트 처리를 위해 OS로 CPU 제어권이 넘어가고 OS영역의 코드가 실행된다.
인터럽트 라인을 읽어서 커널 함수가 실행되는 것이지, 사용자 프로그램에서 직접 OS 영역의 호출을 하지는 않는다.
모든 입출력 명령은 운영체제가 할 수 있는(커널모드에서 가능한) 특권 명령이다.
사용자 프로그램의 I/O 과정
1. 사용자 프로그램이 운영체제에게 I/O를 요청하는 시스템콜을 한다.
2. Trap(소프트웨어 인터럽트)를 통해 인터럽트 벡터의 위치로 이동한다.
3. 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동한다.
4. 올바른 I/O 작업인지 확인 후, 실제 I/O를 수행한다.
5. I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮긴다.