CPU가 완료를 기다리는 방식은 완료 신호의 주인이 다르다

Polling, Interrupt, DMA는 장치 완료를 CPU가 확인하는지, 장치가 알려 주는지, 전송 자체를 넘기는지의 차이다.

요청CPU가 장치 레지스터에 명령을 쓴다.
대기완료 확인 방식에 따라 CPU 점유 시간이 달라진다.
완료데이터 준비 또는 메모리 전송 완료 신호를 처리한다.
Polling

CPU가 상태 레지스터를 반복해서 읽는다. 단순하지만 기다리는 동안 CPU 시간이 소모된다.

Interrupt

장치가 완료 시점을 알려 CPU가 다른 일을 하다가 handler에서 결과를 처리한다.

DMA

블록 전송은 DMA 컨트롤러가 메모리로 옮기고, CPU는 완료 인터럽트만 처리한다.

방식 CPU 역할 장치/메모리 역할 잘 맞는 경우
Polling 상태 비트를 계속 읽는다. 완료 플래그를 세운다. 짧고 드문 I/O, 구현 단순성이 더 중요한 경우
Interrupt 다른 작업을 하다가 handler로 전환한다. 완료 시 인터럽트를 보낸다. 키보드, 네트워크처럼 완료 시점이 불규칙한 경우
DMA 전송 범위만 설정하고 빠진다. 컨트롤러가 메모리 블록을 직접 옮긴다. 디스크, 대량 네트워크처럼 블록 전송이 큰 경우

판단 기준: 완료를 기다리는 비용이 크면 interrupt나 DMA로 CPU 대기를 줄이고, 전송량이 크면 DMA가 유리하다.