Prise en charge des E/S asynchrones
Le gestionnaire d’E/S fournit une prise en charge asynchrone des E/S afin que l’initiateur d’une demande d’E/S (généralement une application en mode utilisateur, mais parfois un autre pilote) puisse continuer à s’exécuter, plutôt que d’attendre que sa demande d’E/S soit terminée. La prise en charge asynchrone des E/S améliore à la fois le débit système global et les performances de tout code qui effectue une demande d’E/S.
Avec la prise en charge asynchrone des E/S, les pilotes en mode noyau ne traitent pas nécessairement les demandes d’E/S dans l’ordre dans lequel elles ont été envoyées au gestionnaire d’E/S. Le gestionnaire d’E/S, ou un pilote de niveau supérieur, peut réorganiser les demandes d’E/S à mesure qu’elles sont reçues. Un pilote peut fractionner une demande de transfert de données volumineuse en demandes de transfert plus petites. En outre, un pilote peut chevaucher le traitement des demandes d’E/S, en particulier dans une plateforme multiprocesseur symétrique, comme indiqué dans Multiprocessor-Safe.
En outre, le traitement par un pilote en mode noyau d’une requête d’E/S individuelle n’est pas nécessairement sérialisé. Autrement dit, un pilote ne traite pas nécessairement chaque IRP avant de commencer à traiter la demande d’E/S entrante suivante.
Lorsqu’un pilote reçoit un IRP, il répond en effectuant autant de traitement spécifique qu’il le peut. Si le pilote prend en charge le traitement IRP asynchrone, il peut envoyer un IRP au pilote suivant, si nécessaire, et commencer le traitement de l’IRP suivant sans attendre que le premier soit terminé. Le pilote peut inscrire une « routine d’achèvement », que le gestionnaire d’E/S appelle lorsqu’un autre pilote a terminé le traitement d’un IRP. Les pilotes fournissent une valeur status dans le bloc d’E/S status de l’IRP, auquel d’autres pilotes peuvent accéder pour déterminer la status d’une demande d’E/S.
Les pilotes peuvent conserver des informations d’état sur leurs opérations d’E/S actuelles dans une partie spéciale de leurs objets d’appareil, appelée extension d’appareil.
Pour plus d’informations, consultez Gestion des irps et des techniques d’entrée/sortie.