직접 I/O 사용

한 번에 많은 양의 데이터를 전송할 수 있는 디바이스의 드라이버는 이러한 전송에 직접 I/O를 사용해야 합니다. 큰 전송에 직접 I/O를 사용하면 인터럽트 오버헤드를 줄이고 버퍼링된 I/O에 내재된 메모리 할당 및 복사 작업을 제거하여 드라이버의 성능을 향상시킵니다.

일반적으로 대용량 스토리지 디바이스 드라이버는 DMA(직접 메모리 액세스) 또는 PIO(프로그래밍된 I/O)를 사용하는 최저 수준 드라이버와 그 위에 연결된 중간 드라이버를 포함하여 전송 요청에 대한 직접 I/O를 요청합니다.

I/O 관리자는 다음과 같이 I/O 작업이 직접 I/O를 사용하고 있음을 확인합니다.

직접 I/O를 사용하는 드라이버는 버퍼링된 I/O를 사용하여 일부 IRP를 처리하는 경우도 있습니다. 특히 드라이버는 일반적으로 드라이버가 읽기 및 쓰기 작업에 직접 I/O를 사용하는지 여부에 관계없이 데이터 전송이 필요한 IRP_MJ_DEVICE_CONTROL 요청에 대해 일부 I/O 제어 코드에 버퍼링된 I/O를 사용합니다.

직접 I/O 전송 설정은 DMA 또는 PIO 사용 여부에 따라 약간 다릅니다. 자세한 내용은 다음을 참조하세요.

DMA에서 직접 I/O 사용

PIO에서 직접 I/O 사용

드라이버는 DMA 및 PIO 전송 중에 캐시 일관성을 유지하기 위한 단계를 수행해야 합니다. 자세한 내용은 캐시 일관성 유지 관리를 참조하세요.