본문 바로가기
CS

[운영체제] 인터럽트 Interrupt

by Rudy 2025. 1. 29.

인터럽트

인터럽트는 CPU가 실행 중인 작업을 중단하고 즉시 다른 작업을 수행해야 할 때 발생하는 신호이다. 예를 들어, 키보드를 누르거나 네트워크 패킷이 도착하면 CPU는 이를 처리하기 위해 실행 중이던 작업을 잠시 멈추고 인터럽트 처리 루틴을 실행한다.

인터럽트 처리 과정

인터럽트가 발생하면 CPU는 아래와 같은 과정으로 처리하게 된다.

  1. 인터럽트 발생: 하드웨어 또는 소프트웨어에서 인터럽트 발생
  2. 현재 작업 저장: CPU는 현재 실행 중이던 프로그램의 상태를 저장
  3. 인터럽트 벡터 테이블 확인: 발생한 인터럽트의 종류에 따라 적절한 인터럽트 서비스 루틴의 주소를 참조
  4. 인터럽트 서비스 루틴 실행: 해당 인터럽트에 대한 처리를 수행
  5. 이전 작업 복구: 인터럽트 처리가 끝나면 저장된 레지스터 값을 복원하고 중단되었던 프로그램을 다시 실행

Polling

Polling은 CPU가 주기적으로 특정 장치의 상태를 확인하여 요청이 있으면 이를 처리하는 방식이다.

Polling은 CPU 활용이 비효율적이다. 왜냐하면 필요 없는 검사를 주기적으로 계속 반복하기 때문이다.

그리고 응답 속도도 상대적으로 느린 편이나, 구현이 간단하다.

 

Polling vs Interrupt

  Polling Interrupt
동작 방식 CPU가 주기적으로 장치 상태 확인 장치가 CPU에 직접 요청
CPU 활용 비효율적 (필요 없는 검사 반복) 효율적 (필요할 때만 처리)
응답 속도 상대적으로 느림 빠름
구현 난이도 쉬움 복잡함

 

하드웨어 vs 소프트웨어 인터럽트

  하드웨어 인터럽트 소프트웨어 인터럽트
발생 원인 하드웨어 장치 (키보드, 마우스, 네트워크 등) 프로그램(예: 시스템 호출, 예외 발생)
발생 방식 외부 장치가 인터럽트 요청(IRQ) 신호를 보냄 명령어 실행 중에 소프트웨어가 직접 요청
예시 키보드 입력, 타이머 신호, 네트워크 패킷 수신 int 명령어, 시스템 콜, 예외(0으로 나누기 등)

 

동시에 두 개 이상의 인터럽트가 발생하는 경우

여러 개의 인터럽트가 동시에 발생하게 되면 우선순위를 정해서 처리하게 된다.

보통 우선순위는 CPU나 운영체제가 인터럽트마다 정해주게 된다. 우선순위가 높은 인터럽트를 먼저 처리하고, 낮은 인터럽트는 대기하게 만드는 방식이다.

이때, 우선순위가 높은 인터럽트가 실행 중에 있을 때, 더 높은 우선순위의 인터럽트가 발생하면 기존 인터럽트를 중단하고 새로운 인터럽트를 처리한다. 이를 처리한 후, 중단되었던 인터럽트와 원래 실행 중이던 프로그램을 순차적으로 복구한다.

 

마스크 가능한 인터럽트 (Maskable Interrupt)

우선순위에 따라 무시될 수 있는 인터럽트

 

마스크 불가능한 인터럽트 (Non-Maskable Interrupt)

반드시 처리해야 하는 중요한 인터럽트(시스템 오류 등)

댓글