![[5일차] 정보처리산업기사 운영체제 – 입출력 시스템 개요 (Programmed I/O, Interrupt I/O, DMA) 1 정보처리산업기사 운영체제](https://i0.wp.com/jupocket.com/wp-content/uploads/2025/05/image.png?resize=492%2C492&ssl=1)
정보처리산업기사 1개월 단기 과정 스케줄을 확인하고 싶은분들은 아래글을 이용바랍니다.
정보처리산업기사, 운영체제에서 입출력 시스템(Input/Output System) 은 CPU와 주변장치(디스크, 프린터, 키보드 등) 간의 데이터 흐름을 관리하는 핵심 요소다. 현대 시스템은 수많은 I/O 장치를 동시에 처리하므로, 효율적인 제어 방식이 필요하다. 이번 학습에서는 Programmed I/O, Interrupt I/O, DMA(Direct Memory Access) 세 가지 주요 입출력 제어 방식을 중심으로 원리를 비교한다.
1. I/O 시스템의 기본 개념
입출력 시스템은 CPU, 메모리, 장치 제어기(Device Controller), 그리고 실제 장치(Device)로 구성된다.
운영체제는 이들 간의 데이터 이동을 I/O 제어 모듈을 통해 조정한다.
| 구성요소 | 설명 |
|---|---|
| CPU | 입출력 명령을 실행하고 상태를 감시 |
| 메모리(Main Memory) | 프로그램과 데이터를 저장 |
| 장치 제어기(Device Controller) | 각 I/O 장치별 제어 회로 (버퍼, 레지스터 포함) |
| I/O 버스 | CPU ↔ 제어기 ↔ 장치 간 통신 경로 |
| Device Driver | 운영체제가 장치를 제어하기 위한 소프트웨어 계층 |
운영체제는 이 계층을 통해 하드웨어 차이를 추상화하여, 응용 프로그램이 동일한 방식으로 파일이나 장치를 다룰 수 있게 한다.
이때 입출력 제어 방식에 따라 CPU와 I/O 장치의 협력 형태가 달라진다.
2. Programmed I/O (프로그램 제어 입출력)
CPU가 직접 입출력을 제어하는 가장 단순한 방식이다.
CPU가 장치의 상태를 확인하며, 준비가 될 때까지 Polling(폴링) 방식으로 반복 검사한다.
| 구분 | 내용 |
|---|---|
| 동작 방식 | CPU가 I/O 명령 실행 후 장치 상태를 반복 확인 |
| 특징 | 구현 단순, 효율 낮음 |
| 단점 | CPU가 대기 상태로 낭비됨 |
| 예시 | 간단한 임베디드 장치, 키보드 입력 처리 등 |
Programmed I/O는 CPU가 입출력 완료를 기다리는 동안 아무 작업도 수행하지 못하므로 CPU 활용률이 낮다.
시험에서는 이 구조가 CPU가 모든 제어를 직접 수행한다는 점을 강조한다.
Polling(폴링)
폴링(Polling) 이란 CPU가 주기적으로 I/O 장치의 상태를 확인하는 방식 즉, “지금 데이터 전송할 준비가 되었나요?” 하고 반복적으로 물어보는 구조를 말합니다.
3. Interrupt I/O (인터럽트 제어 입출력)
Programmed I/O의 비효율을 개선하기 위해 등장한 방식이다.
I/O 장치가 작업을 완료하면 인터럽트(Interrupt)를 발생시켜 CPU에 알리는 구조로, CPU는 다른 작업을 수행하다가 인터럽트를 감지하면 처리 루틴으로 분기한다.
| 구분 | 내용 |
|---|---|
| 동작 방식 | 장치 완료 시 인터럽트 신호 전송 → CPU가 처리 |
| 특징 | CPU와 I/O 병행 가능 |
| 장점 | CPU 낭비 감소, 응답 속도 향상 |
| 단점 | 인터럽트 빈도가 많으면 오버헤드 증가 |
| 예시 | 키보드 입력, 프린터 완료 신호, 네트워크 패킷 수신 등 |
운영체제는 인터럽트가 발생하면 ISR(Interrupt Service Routine) 으로 제어를 넘기며, 이를 처리한 후 원래 실행하던 작업으로 복귀한다.
이는 실제 컴퓨터의 비동기(Asynchronous) 동작의 기초이며, 시험에서는 “CPU가 직접 폴링하지 않는다”는 문장으로 구분된다.
4. DMA (Direct Memory Access, 직접 메모리 접근)
DMA는 대용량 데이터 전송 시 CPU 개입 없이 장치가 직접 메모리에 접근하는 방식이다.
CPU는 단지 전송 명령과 주소만 설정하고, 전송 완료 시 인터럽트를 통해 결과를 보고받는다.
| 구분 | 내용 |
|---|---|
| 동작 방식 | 장치 제어기가 직접 메모리와 데이터 전송 |
| 특징 | 대용량, 고속 I/O에 적합 |
| 장점 | CPU 부하 감소, 병렬성 향상 |
| 단점 | 하드웨어 복잡도 증가, 비용 상승 |
| 예시 | 디스크·네트워크 카드 등 대용량 장치 |
DMA는 CPU 대신 DMA 제어기(DMA Controller) 가 버스를 제어하며, 전송이 완료되면 CPU에 인터럽트를 보낸다.
즉, CPU는 데이터 복사 작업에 관여하지 않고 제어만 담당하므로 효율이 가장 높다.
5. 입출력 제어 방식 비교
| 방식 | CPU 개입 정도 | 병행 수행 가능성 | 속도 / 효율 | 적용 사례 |
|---|---|---|---|---|
| Programmed I/O | 매우 높음 | 불가능 | 느림 | 간단한 장치 |
| Interrupt I/O | 중간 | 가능 | 중간 | 프린터, 키보드 |
| DMA | 낮음 | 완전 병행 | 빠름 | 디스크, 네트워크 |
정리 포인트:
Programmed I/O는 CPU가 “직접 제어”,
Interrupt I/O는 CPU가 “신호에 반응”,
DMA는 CPU가 “제어만 위임”하는 구조다.
6. 실무 적용과 시험 포인트
현대 운영체제는 세 가지 방식을 혼합하여 사용한다.
- CPU-중심 제어: 폴링 기반 장치 (USB 초기화 등)
- 인터럽트 기반 제어: 사용자 입력, 이벤트 처리
- DMA 기반 전송: 디스크 I/O, 네트워크 패킷 처리
정보처리산업기사 실기에서는 다음 유형이 자주 등장한다.
- Programmed / Interrupt / DMA 동작 순서 구분
- CPU와 I/O 장치 간 데이터 흐름 비교 문제
- DMA 제어기 역할 및 인터럽트 우선순위 제어
결론
입출력 시스템은 CPU와 주변장치의 효율적인 협업을 가능하게 하는 운영체제의 핵심 기능이다.
Programmed I/O는 단순하지만 비효율적이며, Interrupt I/O는 CPU 활용률을 높인다.
DMA는 CPU의 부담을 줄이면서 고속 처리를 가능하게 해준다.
실무에서는 이러한 세 가지 방식을 상황에 따라 조합하여 시스템 성능을 극대화한다.
다음 학습 – 버퍼링과 스풀링
다음 학습에서는 버퍼(Buffer)와 스풀링(Spooling)의 개념, 그리고 단일·이중 버퍼링 구조를 통해 I/O 효율을 향상시키는 전략을 살펴본다.