버퍼 고정
커널은 DMA 대상 페이지가 이동하지 않게 준비하고 장치가 이해하는 descriptor를 만든다.
인터럽트는 완료 알림에 강하고, DMA는 데이터 이동에 강하며, 드라이버는 둘 사이의 큐와 버퍼 소유권을 관리한다.
커널은 DMA 대상 페이지가 이동하지 않게 준비하고 장치가 이해하는 descriptor를 만든다.
디스크나 NIC 컨트롤러가 버스 마스터로 메모리와 장치 사이의 데이터를 직접 옮긴다.
전송이 끝나면 인터럽트가 발생하고 top half는 빠르게 상태를 확인한 뒤 지연 작업을 넘긴다.
softirq, tasklet, workqueue가 패킷 처리나 대기 프로세스 깨우기처럼 긴 일을 맡는다.
짧은 지연이 필요하고 장치가 곧 준비될 때는 바쁜 대기가 인터럽트 왕복보다 빠를 수 있다.
네트워크 카드가 여러 패킷 완료를 묶어 알리면 CPU 사용률은 낮아지지만 개별 지연은 늘 수 있다.
연속되지 않은 페이지 목록을 descriptor 체인으로 넘겨 큰 복사를 피하고 DMA 효율을 높인다.