컴퓨터 공학/OS

인터럽트

menuhwang 2023. 11. 21. 11:23

인터럽트 (Interrupt)

 프로그램을 실행하는 도중 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것

 

종류

  • 외부 인터럽트
  • 내부 인터럽트
  • 소프트웨어 인터럽트

외부 인터럽트

  • 전원 이상 인터럽트: 파워, 전원 이상
  • 기계 착오 인터럽트: CPU의 기능적인 오류
  • 외부 신호 인터럽트:
    • 타이머에 의한 인터럽트: 자원이 할당된 시간이  다 끝난 경우
    • 키보드로 인터럽트 키를 누른 경우: 컨트롤 + 알트 + 딜리트
    • 외부장치로부터 인터럽트 요청이 있는 경우 (I/O 인터럽트 x)
  • 입출력 인터럽트
    • 입출력 장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우
    • 입출력 데이터에 이상이 있는 경우

내부 인터럽트

  • 잘못된 명령이나 잘못된 데이터를 사용할 때 발생하며 Trap이라 부른다.
  • 프로그램 검사 인터럽트
    • 0으로 나눈 경우
    • 오버플로우 / 언더플로우
    • 기타 Exception

소프트웨어 인터럽트(SVC: SuperVisor Call)

  • 사용자가 프로그램을 실행시키거나 감시프로그램을 호출하는 동작을 수행하는 경우
  • 소프트웨어 이용중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 등의 동작이 수행된다.

 

인터럽트 동작 순서

  1. 인터럽트 요청
  2. 프로그램 실행 중단: 현재 실행중인던 작업까지 수행.
  3. 현재의 프로그램 상태 보존
    1. PCB(Process Control Block)
    2. PC(Program Counter)
  4. 인터럽트 처리 루틴 실행: 인터럽트를 요청한 장치를 식별
  5. 인터럽트 서비스 루틴 실행 (ISR: Interrupt Service Rutine)
    1. 인터럽트 원인 파악 및 작업 수행.
    2. 우선순위가 더 높은 인터럽트가 발생하면 재귀적으로 1~5를 수행.
  6. 상태 복구: 저장해둔 PC를 다시 복구
  7. 중단된 프로그램 시행 재개: 이전에 수행중이던 프로그램 재개

 

인터럽트 우선순위

  1. 전원 이상
  2. 기계 착오
  3. 외부 신호
  4. 입출력
  5. 명령어가 잘못된 경우
  6. 프로그램 검사
  7. SVC (SuperVisor Call)

하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높고 내부 인터럽트 보다 외부 인터럽트가 우선이다.

 

참고

유튜브 - 널널한 개발자