본문 바로가기
Operation System

Interrupt

by orioncsy 2023. 4. 27.

Interrupt

개념

Interrupt

  • 프로그램 실행 도중 예기치 못한 상황으로 실행 중인 작업을 중단하고 발생된 상황을 우선 처리할 필요성을 CPU에게 알리는 작업
  • 지금 수행 중인 일보다 우선순위가 높은 이벤트가 발생하면 그 작업을 먼저 처리하고 진행하고 있던 작업을 수행

종류

외부 인터럽트

  • CPU의 하드웨어 신호에 의해 발생
  • CPU 코어의 외부 요인에서 발생하는 인터럽트
  • 전원 이상 인터럽트
    • 전원 공급이 중단된 경우 작업 중인 프로세스 대피
  • I/O 인터럽트
    • I/O 장치에게 일을 맡기거나 I/O 장치가 CPU에게 정보를 전달할 때 호출
  • 타이머 인터럽트
    • 컴퓨터 내부 타이머가 주기적으로 CPU에게 제한 시간이 초과되면 인터럽트 발생
    • 하나의 프로세스가 CPU 자원을 오랫동안 점유하지 못하게 하기 위해 사용

내부 인터럽트

  • CPU의 하드웨어 신호에 의해 발생
  • CPU 코어 내부 요인에서 발생하는 인터럽트
  • Exception interrupt 나 trap이라고 부른다.
  • 0으로 나누는 것
  • 오버플로우/언더플로우
  • 프로그램 exception

소프트웨어 인터럽트

  • 프로그램 처리 중 명령 요청에 의해 발생
  • SVC(SuperVisor Call)
  • 일반적인 프로그램은 user mode로 작동하는데 일부 관리자 권한이 필요할 경우 kernel mode로 변경해야 한다.
  • SVC call을 통해 관리자 권한을 허락받고 kernel mode로 변환하고 명령을 실행할 수 있다.

인터럽트 처리 과정

진행 과정

  • 인터럽트 요청
  • 프로그램 실행 중단
  • 현재 실행중인 프로그램 상태 저장
    • PCB에 프로세스 정보 저장, PC(Program Counter)에 명령 주소 저장
  • 인터럽트 요청 판별
    • 인터럽트 발생 원인을 파악
    • Interrupt vector 테이블에서 호출할 ISR(Interrupt Service Routine)의 주소 값을 가져온다.
  • ISR 처리
    • 서비스 루틴을 실행하는 작업
    • 처리하는 도중 우선순위가 높은 인터럽트가 발생하면 다시 위의 과정 반복
    • ISR을 실행하는 도중 인터럽트의 발생을 방지하고 싶다면 인터럽트 플래그를 0으로 설정
  • 상태 복구
    • 실행 복구 명령이 떨어지면 PC에 저장되어 있는 명령 주소를 가져와 이전 실행 위치로 복귀
  • 중단된 프로세스 실행
    • PCB에 저장된 프로세스를 다시 가져와 프로그램 재개

우선순위 판별 방법

폴링 방식

  • 특정 주기마다 스레드를 돌며 시그널을 확인하는 방식
  • 소프트웨어적으로 시그널을 확인
  • 특정 주기마다 스레드를 돌며 확인하기 때문에 정확한 타이밍에 시그널 확인 불가
  • 구현이 쉽고 우선순위 변경 용이

인터럽트

  • 외부 인터럽트 핀에 신호가 들어오면 즉시 인터럽트 소스를 실행 후 원래 코드 복귀
  • 하드웨어적으로 시그널 확인
  • 시그널이 들어온 정확한 타이밍을 확인할 수 있고 즉각적인 반응
  • 인터럽트 발생 시에만 처리하여 자원 소모 절약
  • 구현이 복잡하나 반응이 빠르고 자원 소모 절약 가능

Reference

https://justzino.tistory.com/4

https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html

https://kkhipp.tistory.com/155

'Operation System' 카테고리의 다른 글

CPU Scheduling  (0) 2023.05.02
IPC  (0) 2023.04.30
PCB  (0) 2023.04.26
Process Address Space  (0) 2023.04.25
Process  (0) 2023.02.25