1. 인터럽트
ㅇ CPU,프로그램 등이 현재 작업을 잠시 중단하고, 특정 작업을 수행토록 하는 것
- 주로, 하드웨어가 주는 시그널에, 소프트웨어가 반응하도록 하는 것
. 즉, 하드웨어가 시스템과 접촉할 필요 있을 때, 입터럽트를 발생시키고,
프로세서 및 운영체제를 중단시키게 됨
2. 인터럽트의 발생원인 例
ㅇ CPU 개입 요구시
- 입출력과 같은 주변 장치들의 조작, 네트워크를 통한 패킷 수신 등에 따라,
- CPU의 기능이 요구되는 경우
ㅇ 하드웨어적인 장애 발생시
- 데이터의 전달 과정에서 오류의 발생 등
- 컴퓨터 자체 내 하드웨어적 장애가 발생하는 경우
- 컴퓨터가 제어하는 주변 상황에 이상이 있는 경우 등
ㅇ 프로그램 수행 문제 발생시
- 보호된 기억공간에 접근, 혹은 불법적인 인스트럭션의 수행 등
- 프로그램상의 문제가 발생하는 경우
ㅇ 의도적인 조작시
- 의도적인 조작에 의하여, 프로그램의 수행을 중단시키는 경우
3. 인터럽트의 종류
ㅇ 하드웨어 인터럽트 (외부 인터럽트)
- 외부 주변장치 등에 의해, 비동기적으로 발생되는 인터럽트
- 주변장치 등이 자신에게 발생한 사건을 운영체제 커널에게 알리는 수단/매커니즘
. 특히, CPU로 하여금 현재 작업을 중단하고, 다른 급한 처리를 하도록 요구하는 메커니즘
.. 이렇게 급히 요구되는 처리를, 인터럽트 서비스 루틴 이라고 부름 ☞ 아래 5.항 참조
.. 인터럽트 처리가 끝나면, CPU는 원래 작업으로 복귀하여 수행을 계속하게 됨
. 즉, 인터럽트에 의해 운영체제가 CPU를 현재 작업에서 빼앗아 커널 루틴을 실행 가능케 함
- 인터럽트는, 하드웨어와 운영체제 간의 상호작용의 핵심 부분임
- 例) 키 입력 또는 마우스 클릭 등의 동작시 인터럽트 발생
ㅇ 소프트웨어 인터럽트 (내부 인터럽트) : (트랩, 예외처리)
- 현재 수행중인 태스크와 관련되어, 동기적으로 발생되는 인터럽트
- 例) 0으로 나누는 것, 세그멘테이션 결함, 페이지 결함, 보호 결함, 시스템 호출 등
※ 인터럽트 종류는, 내부적으로 숫자로 구분되어,
- 이를통해, 인터럽트를 처리하며, 인터럽트 핸들러를 실행시킴
4. 인터럽트의 우선순위
ㅇ 여러 인터럽트들이 동시 발생시, CPU가 우선순위를 결정하도록 함
- 통상, 외부 인터럽트가 내부 인터럽트 보다 우선순위 높음
- 인터럽트 마스크 : 긴급 여부를 판별하는 수단으로 사용
. 인터럽트 처리 도중에, 하위 수준 인터럽트를 무시할 수 있도록 설정
- 최우선순위 인터럽트 : 심각한 오류 등
. 마스크 불가능 인터럽트(NMI, Non-maskable interrupt)
ㅇ 일반적인 우선순위
- 정전 > 기계 오작동 > 입출력 필요 > 예외처리 > 트랩
5. 인터럽트의 발생시 행동 방식
ㅇ (발생 확인) CPU는, 매 명령어 사이클 마다 인터럽트 요청 여부 확인
ㅇ (요청 식별) 인터럽트 요청 장치의 식별
- 장치 마다 별개 인터럽트 라인 사용
- 이중 1개 인터럽트 라인 만 사용 (다중화 가능)
- 한편, 폴링 방식은,
. 장치에 어떤 변화가 있는지 계속 체크함 (원래의 인터럽트 방식과는 다소 다름)
ㅇ (조치 루틴) 각 인터럽트별로, 발생시 취할 행동(작업,처리)
- 이러한 행동이 기록되어 있는 함수를,
. 인터럽트 서비스 루틴 (Interrupt Service Routine, ISR)
. 또는, 인터럽트 핸들러 (interrupt handler, IH) 라고 함
- 통상, 이들의 시작 위치(주소)로 분기하는(점프하는,가리키는) 테이블을 유지함
. IDT (Interrupt Descriptor Table) 또는 IVT (Interrupt Vector Table)
ㅇ (전담 처리) 대부분, 운영체제 커널은,
- 통상의 처리와는 별도로, 인터럽트 전용의 처리 모듈에서,
- 인터럽트 핸들러를 빠르게 처리하고 종료하게끔, 전담토록 함