운영체제

인터럽트(interrupt)

bmsk_kun 2022. 7. 21. 19:08

인터럽트(interrupt)


CPU의 process 실행 중, I/O device나 exception 등의 이벤트가 발생하면 해당 작업을 먼저 수행하도록 하는 것

 

 

External Interrupt


프로그램 외부 상황에 따라 발생 시점이 일정하지 않게 발생한다.

hardware interrupt

비동기식 interrupt

- I/O Interrupt, Timer Interrupt 등

 

 

Internal Interrupt


프로그램 내에서 발생하는 interrupt로 CPU로부터 발생하는 운영오류 등을 포함한다.

softeware interrupt

동기식 interrupt

- divide by zero, overflow 등

 

 

Interrupt 처리 과정


1. interrupt 요청 신호 발생

  • 프로그램 실행 도중 interrupt가 발생한 장치는 CPU에 interrupt 요청 신호를 전달한다.

 

2. interrupt 단계

  • CLI를 실행해 해당 interrupt 처리를 완료할 때까지 다른 interrupt 요청을 수락하지 않는다.
  • CPU는 interrupt가 발생한 장치에 interrupt 요청에 대한 확인으로 interrupt 응답 신호를 전달한다.
  • interrupt vector를 통해 해당 interrupt service routine을 찾는다. (interrupt vector는 모든 interrupt sevice routine의 start address를 가지고 있다) -> interrupt service routine의 start address를 알게된다.
  • 현재 실행중인 프로그램을 중단해 상태를 저장하고 interrupt service routine의 정보를 저장한다.(context switch)

 

3. interrupt service routine / interrupt handler 실행

  • 해당 interrupt를 처리하기 위해 mapping되어 있는 routine을 실행
  • STI를 실행해 다른 interrupt 요청을 수락할 수 있도록 설정

 

4. 리턴

  • interrupt 발생 이전 실행하던 프로그램을 다시 실행
728x90
반응형