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 |