Interrupt-Driven I/O
Jan 23, 2026 · Updated Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”장치가 준비되면 CPU에 인터럽트 신호를 보내 I/O 완료를 알리는 방식이다. 폴링 방식과 달리 CPU가 장치 상태를 계속 확인할 필요 없이, 장치가 능동적으로 CPU에 알림을 보낸다.
동작 원리
섹션 제목: “동작 원리”Interrupt-Driven I/O 흐름
1 I/O 시작
디바이스 드라이버가 I/O 시작 명령을 컨트롤러에 전달 2 CPU 병행 작업
CPU는 다른 작업 수행 (I/O와 연산 병행) 3 인터럽트 발생
컨트롤러가 I/O 완료 시 interrupt-request line에 신호 발생 4 인터럽트 감지
CPU가 인터럽트 감지 → 현재 상태 저장 → 인터럽트 핸들러로 점프 5 서비스 및 복원
핸들러가 장치 서비스 (데이터 읽기, 인터럽트 클리어) 후 → 상태 복원 → 원래 작업 재개 키보드 입력
섹션 제목: “키보드 입력”사용자가 키를 누를 때마다 키보드 컨트롤러가 인터럽트 발생. CPU는 인터럽트를 받아 키 데이터를 읽는다.
장단점
섹션 제목: “장단점”- CPU가 I/O 대기 중 다른 작업 가능 → CPU 활용도 향상
- 장치가 느려도 CPU 낭비 없음
- 비동기 이벤트 처리에 적합
- 인터럽트 처리 오버헤드 (상태 저장/복원, 컨텍스트 스위치)
- 초당 수십만 개 인터럽트 처리 시 오버헤드 누적
- 고처리량 I/O에서는 폴링이 더 효율적일 수 있음
관련 개념
섹션 제목: “관련 개념”- Polling - CPU가 장치 상태를 반복 확인하는 방식으로, 인터럽트의 대안
- DMA (Direct Memory Access) - 대량 데이터 전송 시 인터럽트 횟수를 블록당 1개로 줄이는 기법
- 인터럽트 (Interrupt) - 인터럽트의 기본 개념과 하드웨어 메커니즘
- 인터럽트 벡터 (Interrupt Vector) - 인터럽트 발생 시 적절한 핸들러를 찾기 위한 주소 테이블
- 디바이스 드라이버 - 인터럽트 핸들러를 구현하고 장치를 제어하는 커널 모듈