DMA (직접 메모리 접근)이란?
Dynamic Memory Allocation(동적 메모리 할당)과는 다르다
인체의 무조건반사와도 같이, CPU를 거치지 않고 디바이스 간에 직접적으로 데이터를 전송하는 메커니즘으로, 이는 고속이고 효율적인 입출력 처리를 가능하게 한다.
입출력 전송과 같은 특정한 컴퓨터 시스템 동작에서 어떤 디바이스가 스스로 읽기/쓰기 트랜젝션을 수행하는 과정이다. 여기서는 디스크(CD, Blueray)와 같은 장치에 접근하는 방법에 대한 내용을 위주로 설명하겠다.
DMA가 필요한 이유?
CPU가 디스크 읽기를 하는 동안 걸리는 잠재적인 시간은 16ms으로 이것은 1600여개의 명령을 수행할 수 있는 정도의 시간이다. 이 시간을 낭비하지 않기 위해 CPU는 디스크 읽기 개시 명령과 읽기가 끝난 후 인터럽트 명령만 처리한다.
CPU가 전달하는 명령 3가지

- 읽기 개시/종료 여부 및 데이터 양, 타임아웃 명령
- 디스크에 저장된 논리 블록(위 그림 참고) 중 어떤 값을 읽어와야 할지
- 읽어온 디스크 내용이 저장되어야 할 메인 메모리의 주소
DMA의 장단점
장점
- 속도 향상: CPU 개입 없이 디바이스 간 직접적인 데이터 전송으로 전체 시스템 성능이 향상된다.
- 자원 효율성: CPU가 다른 작업을 수행할 동안 DMA가 데이터 전송을 처리하므로 자원이 효율적으로 사용된다.
단점
- 복잡성: DMA는 추가적인 하드웨어 지원이 필요하며, 구현 및 관리가 상대적으로 복잡할 수 있다.
- 설정 및 제어 어려움: 올바른 설정이 필요하며, 오류가 발생하면 디버깅이 어려울 수 있다.
- 보안 문제: DMA는 CPU 우회로 데이터에 접근할 수 있기 때문에 보안 문제가 발생할 수 있다. 이에 대한 보안 조치가 필요하다.