[TIL] 인터럽트

  • CPU가 I/O 장치에게 I/O 요청을 하면 I/O 장치의 컨트롤러가 주도해 I/O 작업이 진행된다. I/O 작업이 완료되면 CPU에 인터럽트를 걸어(시그널을 보내) 작업 완료를 알린다. CPU는 인터럽트를 확인하고, 하던 작업을 일시정지한 후 인터럽트 처리 루틴을 실행한다. 처리가 완료되면 CPU는 기존 작업으로 돌아가 처리를 계속한다.
  • 인터럽트는 빠르게 처리되어야 한다. 따라서 보통 인터럽트 벡터라는 곳에 인터럽트 서비스 루틴의 주소를 저장하고 있다. 인터럽트 시 인터럽트 벡터의 인덱스(index)가 제공되는데, CPU는 이것을 참고해 적절한 처리 루틴을 빠르게 찾는다.
  • CPU는 인터럽트 요청 라인(Interrupt-request line)이라는 회선을 가지고 있다.
  • CPU는 인터럽트가 발생하면 하던 작업을 저장해두고 인터럽트를 처리한다.
  • CPU는 보통 2개의 인터럽트 요청 라인을 가진다. 이 nonmaskable과 maskable로 나뉜다. 전자는 중요한 이벤트를 위해 예약되어 있고(에러 처리 ), 후자가 장치의 컨트롤러가 발생시키는 인터럽트를 처리한다.
  • 인터럽트에도 우선순위가 있다. 높은 우선순위의 인터럽트가 CPU를 선점한다.
  • 인터럽트는 현대 운영체제에서 비동기 이벤트 처리를 위해 일반적으로 사용된다.