본문 바로가기
CS/운영체제

운영체제 - 인터럽트(Interrupt)

by 현걸 2025. 3. 6.

1. 인터럽트(Interrupt)란?

CPU가 실행 중인 작업을 일시적으로 중단하고, 운영체제가 지정한 특정 처리를 수행한 후 다시 원래 작업으로 복귀하도록 하는 메커니즘이다. 인터럽트는 하드웨어 또는 소프트웨어에 의해 발생할 수 있으며, 운영체제가 이를 효율적으로 관리하여 시스템의 응답성과 성능을 향상시킨다.

1.1 인터럽트의 개념 예시

컴퓨터가 A 작업을 수행하다가 B라는 더 중요한 일이 생기면, A 작업을 잠시 멈추고 B 작업을 처리한 후 다시 A 작업으로 돌아가는 것과 같다.

1.2 인터럽트의 필요성

  • CPU가 직접 I/O 장치의 상태를 감시(폴링 방식)하면 비효율적 → CPU 자원 낭비 발생
  • 인터럽트를 활용하면 CPU가 필요한 순간에만 작업을 처리 → 효율적인 멀티태스킹 가능
  • 실시간 시스템(RTOS)에서는 빠른 응답 보장이 필수적

2. 인터럽트 동작 과정

image2

  1. 인터럽트 발생
    • 특정 이벤트(키보드 입력, 네트워크 패킷 수신 등)로 인해 인터럽트 요청(IRQ, Interrupt Request) 발생
    • CPU는 현재 실행 중이던 명령어를 완료한 후 인터럽트 플래그를 확인
  2. 현재 작업 중단 & 문맥 저장
    • CPU는 현재 실행 중이던 프로세스의 레지스터 값, 프로그램 카운터(PC) 등을 PCB(Process Control Block)에 저장
  3. OS에게 제어권 넘김
    • OS가 인터럽트 벡터 테이블을 참고하여 적절한 핸들러(Interrupt Handler)를 찾아 실행
  4. 인터럽트 처리: ISR 실행
    • 인터럽트 핸들러(Interrupt Service Routine, ISR) 실행
  5. 원래 작업 재개
    • PCB에서 저장된 문맥을 불러와 CPU가 원래 수행하던 작업을 계속 수행

3. 싱글 인터럽트 vs 멀티 인터럽트

3.1 싱글 인터럽트 (Single Interrupt)

  • 한 번에 하나의 인터럽트만 처리 가능
  • 새로운 인터럽트 발생 시 현재 인터럽트가 끝날 때까지 대기
  • 우선순위 없음
  • 단순한 시스템(초기 컴퓨터 시스템)에서 사용
  • 단점: 시스템 반응 속도가 느림

3.2 멀티 인터럽트 (Multiple Interrupt)

  • 여러 개의 인터럽트 동시 처리 가능
  • 우선순위 적용 → 더 중요한 인터럽트를 먼저 처리
  • 현재 실행 중인 인터럽트를 중단하고, 더 높은 우선순위 인터럽트를 먼저 처리 가능
  • 현대 운영체제에서 사용
  • 단점: 잘못 관리하면 인터럽트 폭주(Interrupt Storm) 발생 가능

3.2.1 멀티 인터럽트 처리 방법 (우선순위 관리)

  • 인터럽트 마스킹(Interrupt Masking): 특정 인터럽트 처리 중 낮은 우선순위 인터럽트 무시
  • 인터럽트 우선순위 (Interrupt Priority): 높은 우선순위 인터럽트 발생 시 현재 실행 중인 인터럽트 중단 후 즉시 실행
  • 중첩 인터럽트 (Nested Interrupts): 높은 우선순위 인터럽트 실행 후, 원래의 인터럽트로 복귀

4. 인터럽트의 종류

4.1 하드웨어 인터럽트 (외부 인터럽트)

컴퓨터 외부 장치가 CPU에 요청을 보낼 때 발생하는 인터럽트

예시: 키보드 입력, 마우스 클릭, 프린터 요청 등

  • 타이머 인터럽트: 일정 시간이 지나면 CPU가 다음 작업을 수행하도록 신호를 보냄 (CPU의 일정한 시간 분배를 위해 활용)
  • I/O 인터럽트: 키보드, 마우스, 프린터 등 입출력 장치에서 발생
  • 전원 이상 인터럽트: 정전 등으로 인해 시스템을 안전하게 종료할 때 발생

4.2 소프트웨어 인터럽트 (내부 인터럽트)

CPU가 실행 중인 프로그램에서 발생하는 인터럽트. CPU가 실행할 수 없는 명령을 만났거나, OS에 도움을 요청할 때 발생

예시: 0으로 나누는 연산 시도 시 오류 발생, 실행할 수 없는 명령어 실행 시, 운영체제가 System Call 처리할 때

  • 예외 인터럽트: 실행 불가능한 명령이 수행되었을 때 발생 (예: 0 나누기 오류)
  • SVC 인터럽트: 프로그램이 운영체제의 기능을 요청할 때 발생 (System Call 활용)

'CS > 운영체제' 카테고리의 다른 글

운영체제 - CPU 스케줄링  (0) 2025.03.14