인터럽트에는 다양한 종류가 있습니다. 이 인터럽트의 형태에 대해서 알아보고, 각 특징을 살펴본 다음 차이점까지 살펴보겠습니다.
인터럽트의 형태
세 가지 형태의 인터럽트가 있을 수 있는데 그 형태는 다음과 같습니다.
1. 외부 인터럽트
2. 내부 인터럽트
3. 소프트웨어 인터럽트
외부 인터럽트
외부 인터럽트 (external interrupt)는 입출력 (I/O) 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생하는 것으로 다음과 같은 예를 들 수 있습니다. 즉 입출력 장치가 데이타의 전송을 요구하거나, 정보 전송이 끝났음을 알릴 때, 정해진 시 간이 지났을 때, 전원 공급이 끊어질 때 등입니다. 무한 루프를 진행함으로써 그 프로그램에 할당된 시간이 지나면 인터럽트가 발생합니다. 전원 공급이 끊어질 때에는 CPU의 전 상태가 비소멸성 기억 장치로 수밀리초 이내에 기억되게 하 는 서비스 프로그램으로의 인터럽트가 발생합니다.
내부 인터럽트
내부 인터럽트 (internal interrupt)는 불법적인 명령어나 데이타를 사용할 때 발생합니다. 이는 또 트랩 (trap)이라 불리기도 합니다. 오버플로가 발생했거나, 0으 로 나눈다거나, 스택이 넘치거나, 메모리 보호가 어려워졌을 때 등의 상황에서 발생합니다. 이때 서비스 프로그램은 그때마다의 상황에 따라 적절한 조치를 해 내부 인터럽트는 프로그램 자체내에서 발생하는 문제임에 대해 외부 인터럽 트는 프로그램 외적인 상황에서 일어나는 것이 이들의 차이점입니다.
차이점
내부 인터럽트 프로그램은 동기성인데 비해 외부 인터럽트는 비동기성입니다. 만약 원래의 프로그램이 다시 수행된다고 하면 내부 인터럽트는 매번 같은 위치에서 발생에의해 좌우됩니다. 반면, 외부 인터럽트는 프로그램이 수행되는 당시의 상황(입출력 장치 등)에 외부나 내부 인터럽트는 CPU의 하드웨어에서의 신호에 의해 일어납니다.
소프트웨어 인터럽트
그러나 소프트웨어 인터럽트(software interrupt)는 명령어의 수행에 의해 일어나게 됩니다. 소프트웨어 인터럽트는 인터럽트처럼 행동하는 특수한 call 명령어로, 프로그래머에 의해 프로그램상의 원하는 위치에서 인터럽트를 일으키게 합니다.
가장 흔한 소프트웨어 인터럽트로는 감독자 call 명령어 (supervisor call instruc tion) 의 사용입니다. 이 명령어는 사용자 모드에서 감독자 모드로 CPU의 상태를 변화시키는 것입니다. 복잡한 입력이나 출력 전송 절차와 같은 감독자 모드에서 만 사용되는 특수한 동작이 있는데, 이런 동작이 필요한 경우 감독자 call 명령 어로 감독자 모드가 되게 합니다. 이때 이 프로그램은 요구한 작업에 관한 정보 를 운영시스템 (operating system) 에 제공해주어야 합니다.
댓글