포스트

인터럽트의 처리

인터럽트의 처리

인터럽트 시스템에서, 모든 인터럽트는 그 중요도가 동일하지는 않다. 그래서 우선순위에 따라 인터럽트가 관리되어야하는데, 일반적으로는 시스템 실패를 방지하는 데 주요한 목적을 두고 우선순위를 설정한다.

예를 들어 다음과 같이 설정할 수 있는데, 이러한 순위는 시스템의 목적에 따라 달라진다.

  1. 전원 공급 이상
  2. CPU의 하드웨어적 오류
  3. 외부 장치의 요청
  4. 입출력 요청, 입출력 상태 업데이트(완료, 오류 등)
  5. 명령어 오류
  6. 프로그램 검사
  7. SVC(슈퍼바이저 호출)

이들 우선순위를 관리하는 데에는 하드웨어적인 방법과 소프트웨어적인 방법을 고려할 수 있다.

데이지 체인

데이지 체인은 꽃들의 뿌리가 땅속에서 연결되어있는 모양, 혹은꽃 왕관 머리장식을 지칭하는 데에서 유래된 이름으로, 여러 개의 장치를 하나의 선으로 연결시키는 하드웨어 방법이다.

인터럽트를 요청하는 장치들을 서로 직렬로 연결하고, 우선순위가 높은 장치를 이 연결선상의 앞쪽, 낮은 장치를 뒤쪽에 배치하는 방식으로 연결선을 구성해 구현할 수 있다.

이렇게 하여 인터럽트 연결선에 참여하는 장치들은 연결선을 타고 들어오는 인터럽트 신호에 대해 조건적으로 CPU 방향으로 신호를 전달한다.

자신의 인터럽트 요청배후(낮은 순위) 장치의 인터럽트 요청CPU로 전달 여부
요청 없음요청 없음idle
요청 없음요청 있음배후 장치의 요청 전달
요청 있음요청 없음자신의 요청 전달
요청 있음요청 있음자신의 요청 전달

하지만 낮은 순위 장치의 요청이 무시되었을 때, 그 장치의 요청을 유지시키는 것에 대해서는 데이지 체인 범위 내에서는 고려되지 않는다. C의 요청을 래치해두는 것은 장치 측이나 다른 인터럽트 회로에서 고려되어야 한다.


이 구조는 배후의 장치는 앞쪽의 연결에 의존하므로, 앞 장치의 연결선에 장애가 발생하여 연결이 끊기거나, 앞 장치에서 전달을 승인하지 않으면 배후 장치의 요청은 CPU에 전달되지 않는다. 문제가 발생하지 않더라도 같은 이유로, 앞 장치의 요청이 반복해서 발생하면, 배후 장치는 기아 상태에 빠질 수 있다.

병렬 연결 방식

장치마다 별도의 버스를 연결하여 인터럽트를 처리할 수도 있다. 이 방식에서는 각 장치의 인터럽트 요청선을 인터럽트 제어 회로에 개별적으로 연결한다. 제어 회로는 여러 장치의 요청을 함께 확인하고, 그중 우선순위가 가장 높은 요청을 선택하여 CPU에 전달한다.

데이지 체인에서는 승인 신호가 앞쪽 장치를 차례대로 통과해야 했지만, 이 방식에서는 연결선 상의 참여자들이 승인 신호를 전달해야 하는 직렬 전파 지연을 피할 수 있다. 하지만 장치가 많아질수록 연결선이 복잡해지고, 장치마다 별도의 인터럽트 처리 회로를 갖추어야 하므로 비용이 증가한다.

폴링

폴링은 CPU가 주기적으로 모든 장치에 연결된 테스트 선을 이용해 인터럽트를 검사한다. 장치들은 인터럽트 요청 회선(INTR; INTerrupt Request)에 인터럽트 요청을 플래그하고, CPU는 플래그에 따라 서비스 루틴을 호출한다.

CPU에 의해 검사하고, 검사하는 로직 역시 코드 구현이므로, 필요에 따라서 순서를 조정할 수 있다. 하지만 CPU 자원이 필요하므로, 상대적으로 반응 속도가 느리거나 자원에 부하가 발생할 수 있다.