: 주변 장치가 CPU를 거치지 않고 데이터를 메모리에 직접 전송하는 기능
원래는 CPU가 데이터 전송을 처리 했음. 근데 CPU가 직접 다른 장치에 접근하여 Ram에다가 옮기고 하는 과정이 비효율적이였음. → 중간에서 알아서 처리해줄 장치로 극복해보자 → DMA 컨트롤러!
! 반대되는 기능 PIO (Programmed Input/Output) : CPU가 직접 주변기기에 접근하여 데이터를 주고 받는 방식
Why? 비효율적 : CPU가 주변 장치 제어시, 메모리에서 레지스터에서 가져오게 되는데, 이 때 데이터 처리량이 많으면, 이 과정으로 인해 CPU 점유 시간이 길어진다. 게다가 해당 장치에서 데이터를 읽어 오는게 느리다면 그만큼 다른 일을 못하게 된다 ⇒ 느려짐
인터럽트(Interrupt)란? : (하드웨어 관점) CPU가 현재 실행중인 프로그램의 흐름을 일시적으로 중단**(CPU 중단 X)**하고, 다른 이벤트에 대한 처리를 수행하는 것
: DMA 컨트롤러, 버스, 메모리, 입출력장치
초기 설정 → DMA 요청 및 승인 → 버스 제어권 획득 → 데이터 전송 → 전송 완료 및 인터럽트 → 제어권 반환