OS

[쉽게 배우는 운영체제] 4-2. CPU 스케줄링: 인터럽트 처리

noahkim_ 2024. 12. 12. 02:06

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다

 

1. 이벤트 드리븐

  • 시스템이나 애플리케이션에서 발생하는 이벤트를 중심으로 동작하는 방식
  • 이벤트 발생 시, 콜백 함수가 호출되어 이벤트가 처리됨
  • 비동기적 방식으로 동작
    • 여러 이벤트가 동시에 발생해도, 각 이벤트를 각각의 스레드에서 처리함
    • 다른 이벤트에 영향을 미치지 않음
  • 입출력 장치는 자신의 작업이 완료되면, 인터럽트 신호를 발생시켜 CPU에 작업을 요청함

 

2. 종류

동기적 인터럽트 (사용자 인터럽트)

  • 실행중인 명령어로 인해 발생

 

종류
  • 프로그램상의 문제 때문에 발생 (Divide By Zero)
  • 프로세스를 의도적으로 중단하기 위해 발생
  • 주변장치의 조작에 의해 발생

 

비동기적 인터럽트

  • 하드웨어적인 오류로 인해 발생하는 인터럽트
  • 입출력 장치에 의해 트리거됨

 

3. 인터럽트 처리 과정

인터럽트 발생
현재 프로세스 상태 저장
  • 현재 실행중인 프로세스는 일시정지됨
  • 현재 프로세스 관련 정보를 PCB에 저장

 

인터럽트 컨트롤러 실행
  • 인터럽트 처리 순서를 결정함
  • 어떤 인터럽트를 실행할 것인지 선택함
  • 해당 인터럽트 정보를 CPU에 전달

 

인터럽트 핸들러 호출
  • CPU는 인터럽트 백터 테이블을 참조 (인터럽트를 처리할 핸들러 주소가 저장된 테이블)
  • CPU는 이 테이블을 참조하여 적절한 핸들러를 호출함

 

원래 작업 복귀 또는 문맥 교환
  • 인터럽트 핸들러가 처리를 마치면 일시 정지된 프로세스가 다시 실행됨

 

동시 처리

  • 인터럽트는 한 번에 하나씩 발생할 뿐만 아니라, 여러개가 동시에 발생하기도 함
  • 인터럽트 백터를 이용하여 동시에 발생하는 인터럽트를 하나로 묶어 처리