인터럽트부터 DirectX까지

Minseo Lim·2025년 4월 6일

🛎️ 인터럽트 & 시스템 I/O 정리

본 내용은 널널한 개발자 TV의 OS 강의를 공부하고 정리한 내용이다.

운영체제나 시스템 구조를 이해할 때 꼭 필요한 개념인 인터럽트, 그리고 실제 데이터가 입출력되는 흐름과 I/O 성능, 고성능 게임에서의 처리 방식까지 정리해봤다.


🔔 인터럽트(Interrupt)

인터럽트는 CPU가 현재 작업을 중단하고 중요한 이벤트를 처리하도록 유도하는 신호다.
크게 외부 인터럽트내부 인터럽트로 나뉘며, 각각 발생하는 상황이 다르다.

✅ 외부 인터럽트

  • 전원 이상 인터럽트: 전력 문제 발생 시 (⚡ 우선 순위 가장 높음)
  • 기계 착오 인터럽트: CPU 기능 오류 발생
  • 외부 신호 인터럽트: 예시로 Ctrl + Alt + Delete 같은 사용자 조작
  • 입출력 인터럽트: 주변기기에서 데이터 전송이 필요하거나 완료되었을 때
    • 과거엔 CPU가 직접 RAM 제어
    • 요즘은 I/O 관리자(Memory Manager)를 통해 간접 제어함

✅ 내부 인터럽트 (Trap)

  • 잘못된 명령어 혹은 데이터 사용 시 발생
  • 프로그램 검사 인터럽트
    • 0으로 나누기 (division by zero)
    • 오버플로우 / 언더플로우
    • 기타 예외(Exception)

⚙️ 인터럽트 동작 순서

  1. 인터럽트 요청 발생
  2. 현재 프로그램 일시 중단
    (단, 현재 실행 중인 Micro Operation은 마무리함)
  3. 현재 상태 저장 (Program Counter 등)
  4. 인터럽트 처리 루틴 실행
    (어떤 장치가 인터럽트를 일으켰는지 확인)
  5. 인터럽트 서비스 루틴(ISR) 실행
    (원인 분석 및 실제 처리 수행)
  6. 상태 복구 (PC 등 레지스터 복원)
  7. 중단된 프로그램 재개

🧩 브릿지(Bridge)

예전 컴퓨터 구조에선 CPU와 주변 장치 사이를 연결해주는 브릿지 칩셋이 있었다.

  • Northbridge: 고속 장치 (RAM, PCI-E 등) 관리
  • Southbridge: 저속 장치 (USB, BIOS 등) 관리

⚠️ 요즘은 대부분의 브릿지 역할을 CPU가 직접 수행


📤 I/O 성능과 데이터 흐름

예시: printf("Hello World")가 모니터에 출력되기까지

  1. User Mode에서 printf() 호출
  2. 내부적으로 write() 같은 System Call 발생
  3. Hello World가 RAM에 저장됨 → 이때 인터럽트 발생
  4. RAM → Video Device로 데이터 이동
  5. Video Device → 모니터로 출력
  6. 모니터가 출력 완료 후 → Video Device에 완료 알림
  7. Video Device가 → RAM에 완료 알림 (또 다른 인터럽트 발생)

입출력 처리는 시스템 콜과 인터럽트를 중심으로 비동기적 흐름으로 진행됨


🕹️ 고성능 게임 & DirectX

고성능 게임은 위의 입출력 흐름으로 처리하면 너무 느림

  • 그래픽 처리량이 많아 CPU, RAM, 디바이스 사이의 연산량/통신량이 많음
  • 성능 병목 → 렉, 프레임 드랍 발생

💡 그래서 나온 게 DirectX
→ 유저모드에서도 디바이스에 직접 시스템 콜 가능
→ GPU와 빠르게 통신하면서 성능 향상시킴


📌 한 줄 요약

인터럽트는 이벤트 기반으로 시스템을 제어하고, 고성능 환경에선 직접 접근 방식으로 병목을 해결함

profile
프로덕트 엔지니어 임민서입니다.

0개의 댓글