Occurrence of two or more interrupts simultaneously
동시에 두 개 이상의 인터럽트가 발생하면, 어떻게 처리해야 하나요?
한 개의 CPU인 상황이라면 동시에 여러 개의 인터럽트가 발생한다면 우선 순위를 정해서 순차적으로 처리해야 한다. 이를 인터럽트 우선 순위라 하고 이런 우선 순위는 아래와 같이 중요하고 심각한 인터럽트가 우선적으로 처리되어야 한다.
전원 공급의 이상
CPU의 기계적인 오류
외부 신호에 의한 인터럽트
입출력 전송 요청 및 전송 완료, 전송 오류
프로그램 검사 인터럽트
수퍼바이저 호출(SVC 인터럽트)
이렇게 많은 인터럽트의 우선 순위를 정렬하기 위해서 소프트웨어적인 방법과 하드웨어적 방법이 있다.
소프트웨어적 방법
폴링
폴링은 CPU가 모든 제어기에 연결된 TEST I/O 선을 이용해 인터럽트를 요청한 장치를 검사하는 방식이다. 즉 INTR(INTerrupt Request)선에 올린 요청 플래그를 차례로 검사해서, 이에 해당하는 인터럽트 서비스 루틴을 수행하는 소프트웨어적인 방식이다. 이 방식은 하드웨어를 추가할 필요가 없어 회로가 간단하지만 검사할 때의 CPU 자원이 필요해 반응 시간이 느리다는 단점이 있다.
하드웨어적 방법
하드웨어적인 방법은 벡터 인터럽트(Vectored Interrupt)라고도 불린다. 하드웨어적 방법은 인터럽트를 요청할 수 있는 장치에 버스를 직렬 또는 병렬로 연결해 인터럽트 요청 자치의 번호를 CPU에게 알리는 방식이다.
직렬 연결 방식
데이지 체인이라고도 불린다. 어디에 인터럽트가 발생했는지 확인하는 회로를 직렬로 연결하는 하드웨어적 방법으로 INTR, INTA 선에 장치들을 우선순위에 따라 순서대로 연결하는 방식이라 다른 방법에 비해 구성이 간단하다. 그러나 그 단순한 구조 때문에 CPU 가까이 연결된 장치에 비해 멀리있는 장치는 인터럽트 요청이 지연된다.
병렬 연결 방식
I/O 제어기 마다 별도의 버스 선을 이용 하여 INTR, INTA(INTerrupt acknowledgements)선을 이용해서 확인하는 방법. 이 방법은 인터럽트를 요청한 장치를 쉽게 찾을 수 있는 장점이 있다. 그러나 하드웨어 구성이 매우 복잡하며, CPU가 가지고 있는 인터럽트 포트 수에 의해서 연결할 수 있는 장치의 수가 제한 된다는 점이 단점으로 꼽힌다.
Last updated