DMA (Direct Memory Access)
Jan 22, 2026 · Updated Jan 25, 2026
핵심 개념
섹션 제목: “핵심 개념”장치 컨트롤러가 CPU의 개입 없이 장치와 주 메모리 간에 전체 데이터 블록을 직접 전송하는 방식.
인터럽트 기반 I/O는 소량의 데이터 이동에는 적합하지만, Network Video Server I/O와 같은 대량 데이터 이동에 사용하면 높은 오버헤드가 발생한다. 저속 장치는 바이트당 하나의 인터럽트를 발생시키므로 대량 데이터 전송 시 CPU 부하가 크게 증가한다.
동작 원리
섹션 제목: “동작 원리” 1 설정
버퍼, 포인터, 카운터 설정 2 전송
장치 컨트롤러가 블록 직접 전송 (CPU는 다른 작업 수행) 3 완료
블록당 하나의 인터럽트로 알림 인터럽트 기반 I/O vs DMA
섹션 제목: “인터럽트 기반 I/O vs DMA”| 비교 항목 | 인터럽트 기반 I/O | DMA |
|---|---|---|
| 인터럽트 발생 | 바이트당 1개 | 블록당 1개 |
| CPU 개입 | 매 전송마다 필요 | 설정 및 완료 시에만 |
| 적합한 용도 | 소량 데이터 | 대량 데이터 (bulk data) |
DMA 동작 상세
섹션 제목: “DMA 동작 상세”- DMA command block: 소스 포인터, 목적지 포인터, 전송 바이트 수를 포함하는 메모리 블록
- Scatter-gather: 비연속적인 여러 소스/목적지 주소를 하나의 DMA 명령으로 전송
- Handshaking: DMA-request와 DMA-acknowledge 와이어로 컨트롤러와 DMA 간 통신
- Cycle stealing: DMA가 메모리 버스를 점유하는 동안 CPU가 잠시 메인 메모리 접근 불가 (캐시는 접근 가능)
- DVMA: 가상 주소를 사용하여 두 메모리 맵 장치 간 직접 전송
디스크에서 대량의 데이터를 메모리로 읽어올 때, DMA를 사용하면 CPU는 그 동안 다른 프로세스를 실행할 수 있다.
트레이드오프
섹션 제목: “트레이드오프”- 장점: CPU 실행 부하 감소, 대량 데이터 전송 효율성 향상, 시스템 전체 성능 개선
- 단점: 추가 하드웨어(DMA 컨트롤러) 필요, cycle stealing으로 CPU의 메모리 접근 일시 지연
관련 개념
섹션 제목: “관련 개념”- Interrupt-Driven I/O - 바이트당 인터럽트를 발생시키는 방식으로, DMA는 이 오버헤드를 블록당 인터럽트로 줄임
- Polling - CPU가 장치 상태를 반복 확인하는 가장 단순한 I/O 방식
- 디바이스 드라이버 - DMA 전송을 설정하고 완료를 처리하는 커널 모듈
- 버퍼링 (Buffering) - DMA가 데이터를 전송할 대상 메모리 버퍼를 관리하는 기법
- 인터럽트 (Interrupt) - DMA 전송 완료 시 CPU에 알림을 보내는 하드웨어 메커니즘
- Operating System Concepts, 10th Edition, Chapter 1, p.15