본문 바로가기

CS/오퍼레이팅 시스템

2. 인터럽트

* 인터럽트

- 인터럽트 벡터 : 인터럽트 서비스 루틴 주소를 담고 있는 테이블

- 인터럽트 서비스 루틴 : = 핸들러, 인터럽트 발생 시 무조건 수행해야 하는 것

- 인터럽트 발생 시 인터럽트 서비스 루틴 수행을 위해 인터럽트 벡터에서 핸들러 주소를 찾음

- 인터럽트 서비스루틴 수행 전에 기존 수행중이던 프로세스의 주소를 저장하고 핸들러를 수행함

- time interrupt : timer 디바이스에서 주기적으로 발생하는 인터럽트

 

* interrupt driven IO

3. io 트렌잭션 수행 -> cpu는 그 동안 다른 일을 하고 있음

4. 인터럽트 -> 핸드러를 수행. 이때 멈춘 수행 주소를 저장

 

*program counter register

프로그램 카운터 레지스터

1. 원래 cpu에서 처리 중인 프로세스는 100번지를 가리키고 있음

2. 인터럽트 발생 시 인터럽트 벡터에서 서비스 루틴을 찾음

3. 찾아서 해당 핸들러를 수행

4. 수행 완료 시 원래 처리 중인 프로세스로 이동

 

* 인터럽트와 트랩의 차이

- 인터럽트 : 하드웨어에서 발생, 외부에서 비동기적 발생

- 트랩 : 소프트웨어 인터럽트. 프로그램 수행중에 동기적 발생 e.g. 시스템콜, 예외