🛎️ 인터럽트 & 시스템 I/O 정리
본 내용은 널널한 개발자 TV의 OS 강의를 공부하고 정리한 내용이다.
운영체제나 시스템 구조를 이해할 때 꼭 필요한 개념인 인터럽트, 그리고 실제 데이터가 입출력되는 흐름과 I/O 성능, 고성능 게임에서의 처리 방식까지 정리해봤다.
🔔 인터럽트(Interrupt)
인터럽트는 CPU가 현재 작업을 중단하고 중요한 이벤트를 처리하도록 유도하는 신호다.
크게 외부 인터럽트와 내부 인터럽트로 나뉘며, 각각 발생하는 상황이 다르다.
✅ 외부 인터럽트
- 전원 이상 인터럽트: 전력 문제 발생 시 (⚡ 우선 순위 가장 높음)
- 기계 착오 인터럽트: CPU 기능 오류 발생
- 외부 신호 인터럽트: 예시로 Ctrl + Alt + Delete 같은 사용자 조작
- 입출력 인터럽트: 주변기기에서 데이터 전송이 필요하거나 완료되었을 때
- 과거엔 CPU가 직접 RAM 제어
- 요즘은 I/O 관리자(Memory Manager)를 통해 간접 제어함

✅ 내부 인터럽트 (Trap)
- 잘못된 명령어 혹은 데이터 사용 시 발생
- 프로그램 검사 인터럽트
- 0으로 나누기 (
division by zero)
- 오버플로우 / 언더플로우
- 기타 예외(Exception)
⚙️ 인터럽트 동작 순서
- 인터럽트 요청 발생
- 현재 프로그램 일시 중단
(단, 현재 실행 중인 Micro Operation은 마무리함)
- 현재 상태 저장 (Program Counter 등)
- 인터럽트 처리 루틴 실행
(어떤 장치가 인터럽트를 일으켰는지 확인)
- 인터럽트 서비스 루틴(ISR) 실행
(원인 분석 및 실제 처리 수행)
- 상태 복구 (PC 등 레지스터 복원)
- 중단된 프로그램 재개
🧩 브릿지(Bridge)
예전 컴퓨터 구조에선 CPU와 주변 장치 사이를 연결해주는 브릿지 칩셋이 있었다.
- Northbridge: 고속 장치 (RAM, PCI-E 등) 관리
- Southbridge: 저속 장치 (USB, BIOS 등) 관리
⚠️ 요즘은 대부분의 브릿지 역할을 CPU가 직접 수행함
📤 I/O 성능과 데이터 흐름

예시: printf("Hello World")가 모니터에 출력되기까지
- User Mode에서
printf() 호출
- 내부적으로
write() 같은 System Call 발생
- Hello World가 RAM에 저장됨 → 이때 인터럽트 발생
- RAM → Video Device로 데이터 이동
- Video Device → 모니터로 출력
- 모니터가 출력 완료 후 → Video Device에 완료 알림
- Video Device가 → RAM에 완료 알림 (또 다른 인터럽트 발생)
입출력 처리는 시스템 콜과 인터럽트를 중심으로 비동기적 흐름으로 진행됨
🕹️ 고성능 게임 & DirectX
고성능 게임은 위의 입출력 흐름으로 처리하면 너무 느림

- 그래픽 처리량이 많아 CPU, RAM, 디바이스 사이의 연산량/통신량이 많음
- 성능 병목 → 렉, 프레임 드랍 발생
💡 그래서 나온 게 DirectX
→ 유저모드에서도 디바이스에 직접 시스템 콜 가능
→ GPU와 빠르게 통신하면서 성능 향상시킴
📌 한 줄 요약
인터럽트는 이벤트 기반으로 시스템을 제어하고, 고성능 환경에선 직접 접근 방식으로 병목을 해결함