OS

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

noahkim_ 2024. 12. 12. 02:06

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

 

1. 이벤트 드리븐

  • 시스템이나 애플리케이션에서 발생하는 이벤트를 중심으로 동작하는 방식
  • 입출력 장치는 자신의 작업이 완료되면, 인터럽트 신호를 발생시켜 CPU에 작업을 요청함
  • 이벤트 발생 시, 콜백 함수가 호출되어 이벤트가 처리됨

 

비동기적 방식
  • 여러 이벤트가 동시에 발생해도, 각 이벤트를 각각의 스레드에서 처리함
  • 다른 이벤트에 영향을 미치지 않음

 

2. 인터럽트

종류

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

 

처리 과정

  1. 인터럽트 발생
  2. 현재 프로세스 상태 저장
    • 현재 실행중인 프로세스는 일시 정지됨
    • 현재 프로세스 관련 정보를 PCB에 저장
  3. 인터럽트 컨트롤러 실행
    • 인터럽트 처리 순서를 결정함
    • 처리할 인터럽트 정보를 CPU에 전달
  4. 인터럽트 핸들러 호출
    • CPU는 인터럽트 백터 테이블을 참조 (인터럽트를 처리할 핸들러 주소가 저장된 테이블)
    • CPU는 이 테이블을 참조하여 적절한 핸들러를 호출함
  5. 원래 작업 복귀 또는 문맥 교환
    • 인터럽트 핸들러가 처리를 마치면 일시 정지된 프로세스가 다시 실행됨

 

동시 처리

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