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로 돌아갑니다.(실행중이던 user program으로 돌아간다.)
- 운영체제는 interrupt를 구동합니다.
- trap은 시스템이 호출하는 interrupt입니다. trap과 exception은 오류나 사용자의 요청으로 인해 소프트웨어로부터 발생하는 interrupt입니다.
💫 interrupt routine을 OS가 처리하는 속도에 따라 시스템의 성능이 좌우됩니다.
💨 운영체제는 registers와 program counter를 저장해서 CPU의 상태를 보존합니다.
interrupt의 흐름
- user program이 실행중에 I/O 요청이 발생한다.
- buffer에 데이터를 가져오기 위해 잠시 process가 block된다.
// 데이터를 가져오는 동안 CPU가 쉴 수도 있으나, CPU의 효율을 높이기 위해서 다른 process를 처리하기도 한다.
- 데이터를 다 가져오면 interrupt가 발생한다.
- interrupt가 처리되면 다시 process가 시작된다. 이때는 처음부터 다시 시작하는 것이 아니라, 중단되었던 부분인 return address부터 다시 시작된다.