Topic

I/O 인터럽트 구조(Interrupt-driven I/O)

JackerLab 2025. 4. 2. 15:31
728x90
반응형

개요

I/O 인터럽트(Interrupt)는 CPU가 입출력 장치의 동작 완료를 기다리지 않고, 다른 작업을 수행하다가 입출력 장치에서 신호가 오면 해당 처리를 수행하는 방식입니다. 이는 바쁜 CPU 자원의 낭비를 줄이고, 입출력 지연 시간을 숨길 수 있어 현대 운영체제에서 필수적인 비동기적 I/O 처리 기법입니다. 본 글에서는 I/O 인터럽트의 구조, 동작 원리, 장치 컨트롤러와의 관계, 인터럽트 처리 절차 및 실무 활용을 체계적으로 설명합니다.


1. 개념 및 정의

항목 설명
인터럽트(Interrupt) 외부 또는 내부 장치에서 발생한 이벤트를 CPU에 알리는 신호
I/O 인터럽트 I/O 장치(예: 키보드, 디스크, NIC 등)에서 작업 완료 후 CPU에 처리 요청
폴링(Polling) 방식과 차이 CPU가 반복적으로 상태를 확인하는 대신, 인터럽트는 이벤트 중심으로 동작

인터럽트 기반 I/O는 반응성과 자원 효율 측면에서 매우 우수한 구조입니다.


2. I/O 인터럽트 처리 흐름

단계 설명
1단계 I/O 장치에서 작업 완료 → 인터럽트 신호 발생
2단계 인터럽트 컨트롤러가 CPU에 신호 전달 (INTx 라인)
3단계 CPU는 현재 작업을 중단(Save Context)하고 ISR(Interrupt Service Routine) 진입
4단계 ISR에서 I/O 데이터 처리 또는 버퍼링 수행
5단계 인터럽트 처리 완료 → 이전 상태 복원 후 작업 재개

CPU는 인터럽트 우선순위와 벡터 테이블을 통해 다양한 장치 요청을 구분합니다.


3. 구성 요소

구성 요소 역할 설명
I/O Device 인터럽트 발생 주체 키보드, 마우스, 디스크, 네트워크 장치 등
Interrupt Controller 다수 장치의 인터럽트 신호 정리 및 CPU 전달 PIC, APIC, NVIC 등
Interrupt Vector Table 인터럽트 유형별 ISR 주소 매핑 테이블 OS에 의해 설정됨
ISR (Interrupt Service Routine) 인터럽트 처리 루틴 하드웨어 이벤트 처리 로직
CPU 인터럽트 수신 및 처리 주체 인터럽트 발생 시 ISR로 분기

이 구조는 하드웨어와 운영체제가 긴밀하게 연동되어야 정상적으로 작동합니다.


4. 인터럽트 유형

유형 설명 예시
하드웨어 인터럽트 장치가 직접 인터럽트 라인 활성화 키 입력, 디스크 데이터 도착 등
소프트웨어 인터럽트 프로그램이 의도적으로 인터럽트 발생 시스템 콜 (INT 0x80) 등
마스크 가능 인터럽트 우선순위에 따라 무시 가능 Timer, Keyboard
논마스크 인터럽트(NMI) 절대적으로 처리되어야 함 하드웨어 오류, 전력 경고 등

운영체제는 인터럽트 컨트롤러를 통해 우선순위 조정, 마스킹 등을 수행합니다.


5. 인터럽트 기반 I/O vs 폴링 기반 I/O

항목 인터럽트 방식 폴링 방식
자원 효율 높음 (대기 중 다른 작업 가능) 낮음 (CPU가 상태 반복 확인)
응답 시간 불규칙하지만 빠름 예측 가능하나 지연 가능성 존재
구현 복잡도 다소 복잡 (ISR, 벡터 테이블 등 필요) 간단함
고속 장치 대응 효과적 병목 현상 발생 가능

대부분의 현대 시스템은 인터럽트 기반 구조를 기본으로 하되, 특수한 경우 폴링을 병행 사용합니다.


6. 실무 활용 사례

분야 적용 사례 설명
운영체제 시스템 콜, 디스크 입출력, 네트워크 인터럽트 효율적인 자원 스케줄링 지원
마이크로컨트롤러 GPIO 입력 처리, 센서 이벤트 감지 디바운싱, 이벤트 루프 구성
고속 네트워크 NIC 인터럽트 기반 패킷 수신 MSI-X 등 고급 인터럽트 기술 활용
리눅스 드라이버 request_irq() 함수로 인터럽트 등록 사용자 정의 ISR 구현 가능

실시간 처리 요구가 높은 임베디드, 커널, 통신 분야에서 핵심 기술로 사용됩니다.


7. 결론

I/O 인터럽트 구조는 CPU와 주변 장치 간의 효율적인 통신을 가능하게 하는 운영체제 핵심 기술입니다. 적절한 인터럽트 처리 구조 설계는 시스템 반응성을 향상시키며, CPU 자원을 최적으로 활용할 수 있게 합니다. 고속 I/O 환경에서는 인터럽트 기반 구조와 DMA, 스레드 스케줄링 등과 함께 통합 설계되는 경우가 많으며, 커널 수준의 이해가 요구됩니다.

728x90
반응형

'Topic' 카테고리의 다른 글

버스 구조(Bus Architecture)  (0) 2025.04.02
NGFW(Next Generation Firewall)  (1) 2025.04.02
GPIO(General Purpose Input/Output)  (0) 2025.04.02
SSD vs HDD  (2) 2025.04.02
DMA(Direct Memory Access)  (0) 2025.04.02