Operating Systemmedium면접 빈도: medium

Interrupt

Interrupt (인터럽트)

📝 개념 정의

프로세서에 이벤트를 알려 현재 명령을 중단하고 다른 일을 하도록 처리하는 비동기적 방법

핵심:

  • 현재 명령 위치 저장
  • 중단
  • 다른 일 처리
  • 복귀

🔀 Interrupt 종류

하드웨어 인터럽트

1. 일반 하드웨어 인터럽트

하드웨어 장치 컨트롤러가 CPU 서비스 요청

예시:

  • 키보드 입력
  • 마우스 클릭
  • 디스크 I/O 완료

2. 타이머 인터럽트 (Timer Interrupt)

공평한 CPU 시간 할당

동작:

  1. 각 프로그램에 세팅된 시간 동안 CPU 사용
  2. 사용 시간 종료 시 인터럽트 발생
  3. 다음 프로그램으로 전환

소프트웨어 인터럽트 (Trap)

1. 예외 상황 (Exception)

허용되지 않은 연산 수행 시도

예시:

  • 0으로 나누기
  • 권한 없는 메모리 참조
  • Null Pointer 접근

2. 시스템 콜 (System Call)

프로세스가 OS 서비스 요청

동작:

  • 커널 함수 호출
  • 인터럽트 발생

🎯 Interrupt 사용 이유

CPU 낭비 방지

Interrupt 없을 때:

CPU → wait loop (장치 상태 점검)
  ↓
다른 연산 불가
  ↓
CPU 낭비

Interrupt 있을 때:

CPU → 다른 작업 수행
  ↓
Interrupt 발생
  ↓
즉시 처리

🔄 명령어 사이클

Fetch → Decode → Execute → Check Interrupt
  ↑                              ↓
  └──────────────────────────────┘

핵심:

  • 명령어 사이클 끝에 Interrupt 처리
  • CPU 처리 효율성 향상

🛠️ ISR (Interrupt Service Routine)

인터럽트 핸들러

역할:

  • 실제 인터럽트 처리
  • 레지스터와 PC 저장 (CPU 상태 보존)
  • 인터럽트 처리 후 원래 상태 복귀

📋 Interrupt 처리 과정

1. 프로그램 중단

실행 중인 프로그램 중단


2. 상태 보관

현재 프로그램 상태 저장

= Context Switching (문맥 교환)


3. 인터럽트 처리 루틴 실행

Interrupt Handler 호출


4. ISR 실행

실제 인터럽트 처리


5. PC 복원

보관한 PC 값 복원

이전 실행 위치로 복귀


6. 프로그램 재개

이어서 프로그램 진행


🔄 Interrupt 처리 흐름도

프로그램 실행 중
  ↓
Interrupt 발생
  ↓
현재 상태 저장 (PCB)
  ↓
Interrupt Handler 호출
  ↓
ISR 실행
  ↓
상태 복원 (PCB)
  ↓
프로그램 재개

📊 Interrupt 우선순위

여러 Interrupt 동시 발생 시

전원 이상 (최고)
  ↓
기계 착오
  ↓
외부 신호
  ↓
입출력
  ↓
명령어 오류
  ↓
프로그램 검사
  ↓
SVC (최저)

💡 Interrupt vs Polling

Interrupt

이벤트 발생 시 CPU에 알림

장점: ✅ CPU 효율적 사용 ✅ 빠른 응답

단점: ❌ 구현 복잡


Polling

CPU가 주기적으로 상태 확인

장점: ✅ 구현 간단

단점: ❌ CPU 낭비 ❌ 느린 응답


❓ 면접 질문 예시

Q1. 인터럽트(Interrupt)가 무엇인가요?

답변: 인터럽트는 프로세서에 이벤트를 알려 현재 하던 명령의 위치를 저장 후 중단하고 다른 일을 하도록 처리하는 비동기적 방법입니다. 하드웨어 인터럽트와 소프트웨어 인터럽트(Trap)로 나뉘며, CPU를 최대한 낭비하지 않도록 하기 위해 사용됩니다.

Q2. 인터럽트 발생 시 처리 과정을 설명해보세요.

답변:

  1. 실행 중인 프로그램을 중단
  2. 현재 프로그램 상태를 PCB에 보관 (Context Switching)
  3. 인터럽트 처리 루틴을 실행
  4. 인터럽트 서비스 루틴(ISR)을 실행
  5. 보관한 PC 값을 복원하여 이전 실행 위치로 복귀
  6. 이어서 프로그램을 진행

Q3. 하드웨어 인터럽트와 소프트웨어 인터럽트의 차이는?

답변: 하드웨어 인터럽트는 하드웨어 장치의 컨트롤러가 CPU 서비스를 요청하기 위해 발생시키는 인터럽트로 키보드 입력, 타이머 등이 있습니다. 소프트웨어 인터럽트(Trap)는 프로그램 실행 중 발생하는 예외 상황이나 시스템 콜로 인해 발생하는 인터럽트입니다.

Q4. 인터럽트를 사용하는 이유는?

답변: CPU를 최대한 낭비하지 않도록 하기 위해서입니다. 인터럽트가 없다면 CPU는 장치 상태를 점검하는 wait loop가 발생하며 다른 연산을 할 수 없어 CPU가 낭비됩니다. 인터럽트를 사용하면 CPU가 다른 작업을 수행하다가 이벤트 발생 시 즉시 처리할 수 있습니다.

Q5. ISR(Interrupt Service Routine)이란?

답변: ISR은 인터럽트 핸들러라고도 하며 실제 인터럽트를 처리하는 루틴입니다. 실행 중이던 레지스터와 PC를 저장하여 실행 중이던 CPU의 상태를 보존하고, 인터럽트 처리가 끝나면 원래 상태로 복귀합니다.


📚 원본 참고 자료

출처: 2023-CS-Study

  • 파일: os_interrupt.md
  • 내용: Interrupt, 하드웨어/소프트웨어 인터럽트, ISR

추가 학습 자료