2008년 7월 4일 금요일

인터럽트(interrupt)

■ 인터럽트란?
주 프로세스에 의한 명령어열의 실행 동안 어떤 이벤트에 의해 발생된 신호를 말한다.

■ 인터럽트의 종류

1. 소프트웨어 인터럽트
주 프로세서에 의해 실행되고 있는 현재 명령어열 안에 있는 어떤 명령어에 의해 내부적으로 발생

2. 내부 하드웨어 인터럽트
주 프로세서의 의해 실행되는 현재 명령어열과 관련된 문제 때문에 발생한 이벤트 에 의해 초기화. 오버플로우 또는 0으로의 나눗셈과 같은 잘못된 산술연산, 디버깅 (싱글 스텝, 브레이크 포인트), 유효하지 않는 명령어(오피코드)등과 같은 하드웨어의특징(제한)때문에 발생. 익셉션 또는 트랩이라고 불림

3. 외부 하드웨어 인터럽트
주 CPU가 아닌 하드웨어(예를 들어, 보드 버스, I/O등)에 의해 초기화된 인터럽트 인터럽트를 실제 발생시키는 것은 초기 디바이스 드라이버 코드 안에 잠재적인 인터럽트 소스를 활성화시키거나 비활성화시키는 레지스터 비트를 통해 소프트웨어로 결정

외부 인터럽트의 처리
외부 이벤트에 의해 발생된 인터럽트에서 주 프로세서는 IRQ(interrupt request level) 핀 또는 포트라고 불리는 입력 핀을 통해 외부 중재 하드웨어(ex : 인터럽트 컨트롤러)에연결되어 있거나 인터럽트를 발생시키고자 할 때 주 프로세서에게 신호를 보내는 전용 인터럽트 포트를 가진 보드상의 다른 컴포넌트에 직접연결된다. 이런 종류의 인터럽트들은 레벨 트리거(level-triggered) 또는 에지 트리거(edge-triggered)중 하나의 방법으로 발생한다. 레벨 트리거 인터럽트는 IRQ 신호가 어떤 레벨에 있을때(ex : HIGH or LOW) 초기화된다. 에지 트리거 인터럽트는 IRQ 라인상 변화(LOW 에서 HIGH : 상승에지, HIGH 에서 LOW : 하강에지)가 발생할 때 발생한다.









댓글 없음: