Interrupt
Interrupt (인터럽트)
📝 개념 정의
프로세서에 이벤트를 알려 현재 명령을 중단하고 다른 일을 하도록 처리하는 비동기적 방법
핵심:
- 현재 명령 위치 저장
- 중단
- 다른 일 처리
- 복귀
🔀 Interrupt 종류
하드웨어 인터럽트
1. 일반 하드웨어 인터럽트
하드웨어 장치 컨트롤러가 CPU 서비스 요청
예시:
- 키보드 입력
- 마우스 클릭
- 디스크 I/O 완료
2. 타이머 인터럽트 (Timer Interrupt)
공평한 CPU 시간 할당
동작:
- 각 프로그램에 세팅된 시간 동안 CPU 사용
- 사용 시간 종료 시 인터럽트 발생
- 다음 프로그램으로 전환
소프트웨어 인터럽트 (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. 인터럽트 발생 시 처리 과정을 설명해보세요.
답변:
- 실행 중인 프로그램을 중단
- 현재 프로그램 상태를 PCB에 보관 (Context Switching)
- 인터럽트 처리 루틴을 실행
- 인터럽트 서비스 루틴(ISR)을 실행
- 보관한 PC 값을 복원하여 이전 실행 위치로 복귀
- 이어서 프로그램을 진행
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