Envío de solicitudes de E/S a destinos de E/S generales

El controlador puede enviar solicitudes de E/S a destinos de E/S generales de forma sincrónica o asincrónica.

Si un controlador envía solicitudes de E/S de forma sincrónica, un subproceso de controlador envía las solicitudes de una en una. El subproceso espera a que cada solicitud se complete antes de enviar la siguiente. Este proceso es más sencillo que enviar las solicitudes de E/S de forma asincrónica. El controlador puede enviar solicitudes de E/S de forma sincrónica si no envía muchas solicitudes y si el rendimiento del sistema o del dispositivo no se reduce mientras el controlador espera cada solicitud de E/S.

Si un controlador envía solicitudes de E/S de forma asincrónica, un subproceso de controlador envía cada solicitud en cuanto la solicitud está lista para enviarse, sin esperar a que finalicen las solicitudes enviadas previamente. Si el controlador debe controlar muchas solicitudes de E/S en breves períodos de tiempo, es probable que no pueda permitir que el controlador espere a que se complete cada solicitud antes de enviar la siguiente solicitud. De lo contrario, puede perder datos o reducir el rendimiento de los dispositivos del controlador y, posiblemente, de todo el sistema.

El objeto de destino de E/S del marco proporciona dos conjuntos de métodos a los que puede llamar el controlador: uno establecido para enviar solicitudes de E/S de forma sincrónica y el otro conjunto para enviar solicitudes de E/S de forma asincrónica.

Para cada uno de estos métodos, debe proporcionar un objeto de solicitud y un espacio de búfer. Puede usar estos métodos para reenviar una solicitud que el controlador recibió en una de sus colas de E/S o para crear y enviar una nueva solicitud.