OS

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

noahkim_ 2024. 12. 12. 02:06

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

 

1. Event-Driven

  • 무언가 발생했을 때, 그에 반응해서 동작하는 구조
  •  이벤트 발생 시, 등록된 핸들러가 호출되어 이벤트가 처리됨
  • ✅ 입출력 장치는 자신의 작업이 완료되면, 인터럽트 신호를 발생시켜 CPU에 알림

 

비동기 방식

  • 작업을 요청한 뒤 결과를 기다리지 않고 다음 작업을 수행하는 방식
  • 작업 완료 시, 이벤트, 콜백 등을 통해 결과를 전달받음
  • ➡️ 다른 작업의 실행 흐름에 영향을 미치지 않음

 

2. 인터럽트

  • CPU에게 현재 수행중인 작업을 일시정지하고, 먼저 이것부터 처리하라는 신호
  • CPU는 요청받은 인터럽트 신호의 블록된 프로세스를 준비상태로 전환함
  • ⚠️ 준비에서 바로 실행되는것은 아님. 스케줄링 정책과 우선순위에 따라 다름

 

종류

구분 동기적 인터럽트 비동기적 인터럽트
설명 실행 중인 명령어로 인해 발생 (예외)
하드웨어 오류 또는 입출력 장치에 의해 발생
원인 프로세스의 문제 또는 의도적 중단 하드웨어 요청 또는 외부 이벤트
발생 시점 특정 명령어 실행 직후 또는 도중 프로그램 실행과 관계없이 트리거됨
처리 방식 명령어 실행과 밀접하게 연관됨 실행 흐름과 독립적으로 발생
예시 0으로 나누기, 잘못된 메모리 접근
키보드 입력, 마우스 클릭, 하드웨어 오류

 

처리 과정

  1. 인터럽트 발생
  2. 현재 프로세스 상태 저장
    • 현재 실행중인 프로세스는 일시 정지됨
    • 현재 프로세스 관련 정보를 PCB에 저장
  3. 인터럽트 컨트롤러 실행
    • 여러 인터럽트 중 우선순위를 결정함
    • 어떤 인터럽트를 처리할지 CPU에 알림
    • CPU는 해당 인터럽트를 승인함
  4. 인터럽트 핸들러 호출
    • CPU는 인터럽트 백터 테이블을 참조하여 ISR 주소를 찾음
    • 커널 모드에서 인터럽트 서비스 루틴 실행
  5. 원래 작업 복귀 또는 문맥 교환
    • 인터럽트 핸들러가 처리를 마치면 일시 정지된 프로세스가 다시 실행됨

 

출처