자격증 정복/컴퓨터시스템기사

컴퓨터시스템기사 실기 06 — 입출력 제어 (채널·DMA·인터럽트)

올드 IT직장인 2026. 10. 16. 00:30

컴퓨터시스템기사 실기 06 — 입출력 제어 (채널·DMA·인터럽트)

출제기준 코드: 3-2-1 채널 · 3-2-2 DMA · 3-2-3 인터럽트
시험일: 2026-10-25 / 시리즈: 컴퓨터시스템기사 실기 06편

 

실기 시리즈 여섯 번째 글입니다.

05편이 기억장치였다면 이번 편은 입출력 장치를 CPU가 어떻게 제어하는가 입니다.


이 단원은 계산보다 단답형 용어 맞추기가 압도적입니다.

"~하는 방식은?" 형태의 설명을 읽고 용어를 쓰는 문제가 반복해서 나옵니다.

아래 표의 용어와 정의를 짝지어 외우면 거의 그대로 점수가 됩니다.


1. 실기 출제 포인트

구분 자주 나오는 형태 중요도
인터럽트 우선순위 폴링 / 데이지 체인 / 벡터 인터럽트 구분 ⭐⭐⭐
DMA 전송 모드 사이클 스틸링 정의 ⭐⭐⭐
채널 셀렉터 채널, 멀티플렉서 채널 ⭐⭐
I/O 주소 방식 격리형(독립형) I/O vs 메모리 맵 I/O ⭐⭐
인터럽트 벡터 인터럽트 벡터 테이블(IVT) ⭐⭐
핸드셰이킹 비동기 입출력의 준비·응답 신호 ⭐⭐
입출력 방식 비교 프로그램 제어 / 인터럽트 / DMA ⭐⭐
캐시 연계 DMA와 CPU의 캐시 일관성 문제 (05편) ⭐⭐

💡 답안 키워드 박스
폴링(Polling) 데이지 체인(Daisy Chain) 벡터 인터럽트 인터럽트 벡터 테이블 DMA 컨트롤러 사이클 스틸링 셀렉터 채널 멀티플렉서 채널 격리형 I/O 메모리 맵 I/O 핸드셰이킹 ISR 복귀 주소


2. 입출력 제어의 세 가지 방식

방식 동작 장점 단점
프로그램 제어 I/O
(Programmed I/O)
CPU가 상태 플래그를 계속 확인(Busy-Wait) 하며 직접 전송 구조 단순 CPU 낭비
인터럽트 구동 I/O 장치가 준비되면 인터럽트로 CPU에 알림,
CPU는 그동안 다른 일 수행
CPU 효율↑ 매 전송마다 인터럽트 오버헤드
DMA DMA 컨트롤러가 CPU를 거치지 않고 메모리 ↔ 장치 직접 전송 대용량 고속 하드웨어(DMA 컨트롤러) 필요

 

기출 (B 2019-11, A 2017-3, 2022-3): CPU를 거치지 않고 주기억장치와 입출력장치 간에 직접 데이터를 전송하는 방식은? → DMA (Direct Memory Access)

 

2-1. I/O 주소 지정 방식

방식 특징
메모리 맵 I/O (Memory-Mapped) 메모리와 같은 주소 공간 사용, 별도 I/O 명령 불필요, 메모리 주소 일부를 I/O에 소모
격리형 I/O (Isolated / 독립형) 별도의 주소 공간 + 전용 I/O 명령(IN/OUT) 사용, 기억공간을 최대한 활용

 

기출 (2019-1, 2022-3): 입출력 인터페이스를 CPU에 연결하는 방법 중, CPU/기억장치 명령어와 다른 입출력 명령을 사용하며 기억공간을 최대로 활용할 수 있는 방식은?
→ 격리형 I/O (독립형 입출력 방식)

 

2-2. 핸드셰이킹과 스트로브

방식 설명
스트로브(Strobe) 한쪽(송신 또는 수신)이 한 방향 신호만 보냄 → 상대가 받았는지 모름
핸드셰이킹(Handshaking) 요청 ↔ 응답 신호를 주고받아 상대의 준비·수신 확인 → 신뢰성 높음

 

기출 (B 2017-11): Computer와 I/O 주변장치 사이 데이터 전송 시 입출력 준비 완료를 나타내는 신호가 필요한 비동기식 입출력 시스템에 널리 쓰이는 방식은? → 핸드셰이킹

 

기출 (A 2022-3): 인터페이스와 입출력 버스의 연결에서 데이터를 출력 주변장치로 전달하기 위해 사용되는 것은? → 주변장치 레지스터(Peripheral Register) (원문 그림 필요)


3. 채널 (3-2-1)

채널(Channel): 입출력 전용 프로세서. CPU가 입출력 명령만 내리면 채널이 독립적으로 입출력을 수행하고 완료 시 인터럽트로 알립니다. (DMA보다 더 지능적, 채널 명령어(CCW) 프로그램을 수행)

종류 특징 적합한 장치
셀렉터 채널 (Selector, 선택 채널) 한 번에 한 장치가 채널을 독점,
블록 단위 고속 전송, 전송 중 중단 없음
자기 디스크, 자기 테이프 등 고속 장치
멀티플렉서 채널 (Multiplexer) 여러 저속 장치가 채널을 시분할로 공유
(바이트 단위 교대)
프린터, 터미널 등 저속 장치
블록 멀티플렉서 채널 블록 단위로 여러 고속 장치를 다중화 디스크 다수

 

기출 (2021-1): 채널 하나를 하나의 입출력 장치가 독점해서 사용하며 블록 단위로 고속 전송이 가능한 방식은? → 셀렉터 채널

 

⚠️ 함정: "독점 + 블록 + 고속" = 셀렉터, "여러 장치 + 저속 + 시분할" = 멀티플렉서. 키워드로 구분하세요.


4. DMA (3-2-2) ⭐⭐⭐

4-1. DMA 컨트롤러 구성

레지스터 역할
주소 레지스터 전송할 메모리의 시작 주소
워드(바이트) 카운터 남은 전송 개수 (0이 되면 종료)
제어 레지스터 전송 방향(읽기/쓰기), 모드

 

4-2. 동작 순서

① CPU가 DMA 컨트롤러 초기화 (주소, 개수, 방향 설정) → 이후 CPU는 다른 작업
② 장치가 DMA 요청 (DMA Request)
③ DMA 컨트롤러가 버스 요청 (HOLD / Bus Request)
④ CPU가 버스 사용 허가 (HLDA / Bus Grant) — 버스 제어권 이양
⑤ DMA가 메모리 ↔ 장치 간 데이터 전송 (주소 증가, 카운터 감소)
⑥ 카운터 = 0 → 전송 완료를 인터럽트로 CPU에 통보

 

4-3. DMA 전송 모드 ⭐⭐⭐

모드 동작 키워드
버스트(Burst) / 블록 전송 블록 전체를 전송하는 동안 버스를 독점, 끝나면 반환 고속, CPU는 대기
사이클 스틸링 (Cycle Stealing) 한 워드(한 사이클)씩 CPU의 버스 사이클을 훔쳐서 전송 CPU 지연 최소, 워드 단위
투명(Transparent) CPU가 버스를 사용하지 않을 때만 전송 CPU 성능 영향 없음, 느림

 

기출 (2021-1, 2023-3, 2025-1 동일):

- CPU가 실행하던 프로그램을 잠시 대기시키고 DMA에게 우선권을 주는 방식
- 한 번의 DMA 동작으로 워드 단위의 데이터를 전송
- DMA가 CPU의 버스를 잠시 빌려 한 워드씩 전송하는 방식은?

→ 사이클 스틸링 (Cycle Stealing)

 

4-4. 인터럽트 vs 사이클 스틸링 (B 2016-04 Q15)

항목 인터럽트 사이클 스틸링
CPU 상태 저장 필요 (PC·레지스터 저장 후 복구) 불필요 (한 사이클만 양보)
처리 주체 CPU가 ISR 실행 DMA 컨트롤러가 전송
지연 컨텍스트 전환 오버헤드 버스 한 사이클

4-5. DMA와 캐시 일관성 (05편 연계)

기출 (2024-3): DMA와 CPU가 같은 메모리를 참조할 때 캐시에서 발생할 수 있는 문제점은? → 캐시 일관성 문제
DMA가 메모리를 갱신하면 CPU 캐시에 옛 데이터(Stale)가 남고, Write-Back 캐시에서는 CPU가 캐시만 수정한 상태라 DMA가 오래된 메모리를 읽습니다.
해결: 캐시 스누핑, Non-cacheable 영역 지정, 소프트웨어 Flush/Invalidate.


5. 인터럽트 (3-2-3) ⭐⭐⭐

5-1. 종류

구분 설명 예
외부 인터럽트 하드웨어 장치·외부 요인 I/O 완료, 타이머, 전원 이상, 정전, 키보드
내부 인터럽트 (트랩/예외) CPU 내부 오류 0으로 나누기, 오버플로, 잘못된 명령, 페이지 부재
소프트웨어 인터럽트 프로그램이 명령으로 발생 시스템 콜 (SVC, INT)

 

기출 (B 2016-11, 2021-11): 디스크 장애·정전 등 긴급한 상황이 발생했을 때 마이크로프로세서에 직접 전달하는 인터럽트는? → 외부 인터럽트 (복원본 정답 기준)

🔎 마스크할 수 없는 긴급 인터럽트를 가리키는 NMI(Non-Maskable Interrupt) 개념과 같은 맥락입니다.
시험지가 "긴급 / 정전 / 마이크로프로세서에 직접"으로 묻는다면 외부 인터럽트(전원 이상)를 우선 쓰고, NMI를 괄호로 병기하세요.

5-2. 처리 절차

① 현재 실행 중인 명령어를 완료
② 복귀 주소(PC)와 프로그램 상태(PSW/플래그)를 스택(메모리)에 저장
③ 인터럽트 원인 식별 → 서비스 루틴 주소 결정 (벡터)
④ 인터럽트 서비스 루틴(ISR) 실행
⑤ 저장했던 상태 복구 → 복귀(IRET)하여 원래 프로그램 재개

 

기출 (B 2016-04, 2020-11): CPU가 인터럽트 신호를 받으면 PC의 복귀 주소를 스택에 저장한 뒤 서비스 루틴으로 제어를 옮긴다. 이때 인터럽트 원인에 의해 분기 정보를 얻게 되는 정보는? → 인터럽트 벡터

 

기출 (2023-1): 인터럽트를 발생한 장치가 프로세서에게 분기할 곳을 알려주고, 서비스 루틴들의 주소를 가지고 있는 공간은? → 인터럽트 벡터 테이블 (IVT)

 

5-3. 우선순위 결정 방식 ⭐⭐⭐

방식 구현 동작 핵심 키워드
방식 구현 동작 핵심 키워드
폴링 (Polling) 소프트웨어 공통 인터럽트 진입 후 장치를 순서대로 검사해 요청 장치를 찾음 소프트웨어, 느림, 구조 단순
데이지 체인
(Daisy Chain)
하드웨어 장치를 우선순위 순으로 직렬 연결,
인터럽트 승인 신호가 앞 장치부터 전달
직렬, 가까운 장치가 우선
병렬 우선순위 하드웨어 우선순위 인코더 + 마스크 레지스터로 동시 판단 빠름, 회로 복잡
벡터 인터럽트 하드웨어 장치가 벡터 번호/주소를 직접 제공 → 즉시 ISR로 분기 빠름, 장치 식별 불필요

 

🔎 데이지 체인이 B형에서 4회 반복됩니다.
"직렬 연결 + 우선순위" 두 키워드를 보면 바로 쓰세요.

 

5-4. 인터럽트 마스크와 중첩

  • 마스크(Mask): 특정 인터럽트를 일시적으로 무시(비활성) 하는 기능. 중요한 코드 구간 보호.
  • 중첩 인터럽트: ISR 수행 중 더 높은 우선순위 인터럽트가 들어오면 중단하고 먼저 처리.

6. 기출 Q&A 모음

Q1. CPU를 거치지 않고 메모리와 입출력장치 간 직접 전송하는 방식은?
A. DMA.

 

Q2. DMA가 CPU의 버스를 잠시 빌려 한 워드씩 전송하는 방식은? (2021-1 외)
A. 사이클 스틸링.

 

Q3. 채널을 한 장치가 독점하며 블록 단위로 고속 전송하는 채널은? (2021-1)
A. 셀렉터 채널.

 

Q4. 별도 주소 공간과 전용 I/O 명령을 사용하는 방식은? (2019-1, 2022-3)
A. 격리형(독립형) I/O.

 

Q5. 공통 인터럽트 진입 후 장치를 차례로 검사하는 방식은? (2026-1)
A. 폴링 (Polling).

 

Q6. 인터럽트 장치를 우선순위 순으로 직렬 연결하는 방법은? (B형 4회)
A. 데이지 체인.

 

Q7. 서비스 루틴 주소를 모아 둔 영역은? (2023-1)
A. 인터럽트 벡터 테이블.

 

Q8. 비동기 입출력에서 준비·응답 신호를 주고받는 방식은? (B 2017-11)
A. 핸드셰이킹.

 

Q9. DMA와 CPU 동시 접근 시 캐시에서 생기는 문제는? (2024-3)
A. 캐시 일관성 문제.


7. ⚠️ 함정 패턴 정리

  1. 폴링(소프트웨어) ↔ 데이지 체인(하드웨어) 구분 — "차례로 검사" = 폴링, "직렬 연결" = 데이지 체인
  2. 사이클 스틸링 ↔ 인터럽트 — 상태 저장 필요 여부가 다름
  3. 셀렉터(독점·고속) ↔ 멀티플렉서(다수·저속)
  4. 격리형 I/O ↔ 메모리 맵 I/O — "전용 명령 + 별도 주소 공간"이면 격리형
  5. 벡터 인터럽트 ↔ 인터럽트 벡터 테이블 — 방식 vs 주소 테이블 이름. 문제를 끝까지 읽고 "공간/테이블"이면 IVT
  6. DMA 종료 통보는 인터럽트로 한다 (DMA와 인터럽트는 대립이 아니라 함께 쓰임)
  7. 핸드셰이킹 ↔ 스트로브 — 응답 신호가 있으면 핸드셰이킹

8. 💡 실무에서는?

  • 인터럽트 분산 (인프라): 고성능 네트워크 서버에서 NIC 인터럽트가 특정 CPU 코어 하나에 몰리면 해당 코어가 100%가 되어 패킷 드롭이 생깁니다. 리눅스에서 /proc/interrupts로 분포를 확인하고, smp_affinity/irqbalance, NIC의 RSS(다중 큐)로 분산합니다. 데이지 체인의 우선순위 개념이 현대에는 APIC/MSI-X 라우팅으로 이어집니다.
  • 폴링의 재등장: 초고속 네트워크에서는 인터럽트 폭주를 피하려고 NAPI(인터럽트 + 폴링 혼합), DPDK의 busy polling을 씁니다. "폴링은 비효율"이 아니라 부하에 따라 선택합니다.
  • DMA 보안: DMA는 CPU를 거치지 않고 메모리에 접근하므로 악성 PCIe/Thunderbolt 장치가 메모리를 읽는 DMA 공격이 가능합니다. 대응은 IOMMU(Intel VT-d, AMD-Vi) 로 장치별 접근 가능 메모리 범위를 제한하는 것이고, 가상화(PCI 패스스루, SR-IOV)에서도 필수 설정입니다. 보안 시스템 구축 시 점검 항목입니다.
  • 스토리지 성능: NVMe의 다중 큐와 인터럽트 병합(coalescing)은 IOPS와 지연 사이의 트레이드오프를 조정합니다. 05편의 RAID, 캐시와 함께 I/O 성능 분석의 기본 틀입니다.
  • 장애 분석: CPU %si(softirq)·%hi(hardirq)가 높은데 사용자 프로세스는 한가하다면 입출력 인터럽트 처리가 병목이라는 신호입니다.

9. 핵심 정리

✅ I/O 3방식 = 프로그램 제어(Busy-Wait) / 인터럽트 / DMA
✅ 격리형 I/O = 전용 명령 + 별도 주소 공간 / 메모리 맵 = 같은 주소 공간
✅ 핸드셰이킹 = 요청·응답 / 스트로브 = 한쪽 신호
✅ 셀렉터 채널 = 독점·고속·블록 / 멀티플렉서 = 다수·저속·시분할
✅ DMA 순서 = 초기화 → 요청 → 버스 허가 → 전송 → 완료 인터럽트
✅ DMA 모드 = 버스트 / 사이클 스틸링(워드 단위) / 투명
✅ 인터럽트 처리 = 명령 완료 → PC 저장 → 원인 식별 → ISR → 복귀
✅ 우선순위 = 폴링(SW) / 데이지 체인(HW 직렬) / 병렬 / 벡터
✅ 서비스 루틴 주소 모음 = 인터럽트 벡터 테이블
✅ DMA + 캐시 → 일관성 문제 (스누핑)

10. 다음 편 예고

다음 편(07편)은 네트워크 프로토콜 분석 입니다.

OSI 7계층과 TCP/IP, 네트워크 토폴로지, 대표 프로토콜의 동작과 패킷 분석까지 이어갑니다!

 

궁금한 점은 댓글로 남겨주세요!

반응형