운영체제

5. 인터럽트(Interrupt)

ggomjiu 2025. 1. 16. 17:43

인터럽트

: 프로세서에 이벤트를 알려 현재 하던 명령의 위치를 저장 후 중단하고 다른 일을 하도록 처리하는 비동기적 방법

 

1) 하드웨어 인터럽트

- 일반적인 하드웨어 인터럽트

  • 하드웨어 장치인 컨트롤러가 CPU의 서비스를 요청하기 위해 발생시키는 인터럽트

- 운영체제의 타이머 인터럽트

  • 운영체제에서는 각 프로그래머들이 공평한 시간 동안 CPU를 할당 받을 수 있도록 세팅된 시간 동안 CPU를 사용하고, 사용 시간이 종료되면 발생하는 인터럽트

2) 소프트웨어 인터럽트(Trap)

- 예외 상황(Exception)

  • 프로그램이 허용되지 않은 연산을 수행하려고 할 때 자동적으로 발생하는 인터럽트
  • EX) 0으로 나누기, 권한 없는 메모리 참조 등

- 시스템 콜(System Call)

  • 프로세스가 운영 체제의 서비스를 요청하기 위해 커널의 함수를 호출하는 경우 발생하는 인터럽트

3) 인터럽트의 이유

: CPU를 최대한 낭비하지 않도록 하기 위해서 사용

- 만약 인터럽트가 존재하지 않는다면 CPU는 장치 상태를 점검하는 Wait Loop가 발생하며 이로 인하여 다른 연산을 할 수 없기에 CPU가 낭비됨

- 인터럽트가 발생했다고 해서 CPU에서 바로 실행되면 CPU처리가 복잡해지고 효율적으로 처리되지 않음

-> 따라서 명령어 사이클이 끝나면 인터럽트 처리를 함

 

인터럽트 서비스 루틴(ISR)

: 인터럽트 핸들러라고도 하며 실제 인터럽트를 처리하는 루틴으로 실행 중이던 레지스터와 PC를 저장하여 실행 중이던 CPU의 상태를 보존하고 인터럽트 처리가 끝나면 원래 상태로 복귀

  1. 실행 중인 프로그램을 중단
  2. 현재 프로그램 상태를 보관 (Context Switching)
  3. 인터럽트 처리 루티 실행
  4. 인터럽트 서비스 루틴 실행
  5. 인터럽트 요청 신호가 발생했을 때 보관한 PC의 값을 복원하여 이전 실행 위치로 복귀
  6. 이어서 프로그램 실행