기타

Interrupt란?

citron031 2023. 2. 14. 21:02

I/O장치와 CPU는 동시에 작동한다다.
CPU, device controllers는 common bus를 통해서 이들이 공유하는 memory로 연결되는데, 이 동시에 실행되는 CUP 및 장치들은 memory cycles를 놓고 경쟁한다.
이때 Device controller는 CPU에게 자신의 작업이 완료되었음을 interrupt 를 발생시킴으로써 알린다.

Interrupt의 기능

  • Interrupt는 interrupt service routine에게 control을 interrupt vector를 통해서 전달한다.
  • interrupt vector는 모든 service routines의 주소를 가지고 있다.
  • interrupt service routine는 데이터를 처리하고, 만약 이에 실패했다면 실패를 대비한 routine으로 이동한다.
    만약 데이터를 잘 처리했다면, return address로 돌아간다. (이전에 실행중이던, 예를 들면 I/O 요청을 보냈던 user program으로 돌아간다)
  • 운영체제들은 interrupt를 구동할 수 있다.
  • trap은 시스템이 호출하는 interrupt로 trap과 exception은 오류나 사용자의 요청으로 인해 소프트웨어로부터 발생하는 interrupt이다.

💫 interrupt routine을 OS가 처리하는 속도에 따라 시스템의 성능이 좌우된다.
💨 운영체제는 registers와 program counter를 저장해서 CPU의 상태를 보존한다.

interrupt의 흐름

  1. user program이 실행중에 I/O 요청이 발생한다.
  2. buffer에 데이터를 가져오기 위해 잠시 process가 block된다.
    🍬 데이터를 가져오는 동안 CPU가 쉴 수도 있으나, CPU의 효율을 높이기 위해서 다른 process를 처리하기도 한다.
  3. 데이터를 다 가져오면 interrupt가 발생한다.
  4. interrupt가 처리되면 다시 process가 시작된다. 이때는 처음부터 다시 시작하는 것이 아니라, 중단되었던 부분인 return address부터 다시 시작된다.