Le noyau du système d'exploitation doit fournir un processus complet de contrôle des E/S et préparer un grand nombre de structures de données diverses pour gérer le flux d'E/S entre les différents modules. Ces modules incluent : la couche de répertoire VFS, la couche de cache de page, la couche de système de fichiers, la couche de traitement réseau, la couche de bloc commun, la couche de planificateur d'E/S, la couche de pilote de périphérique de bloc, la couche de pilote de contrôleur de canal d'E/S externe. Ces couches forment ensemble une pile de protocoles d'E/S vaste et complexe. Je suis sûr que vous avez déjà une idée de la façon dont les programmes utilisent les périphériques d'E/S. Les périphériques d'E/S les plus courants se répartissent en trois catégories : carte réseau dispositifs, périphériques de stockage(st2400mm0129), et les appareils interactifs tels que les claviers/souris. Ces appareils peuvent être connectés au système via des ports PCIE ou USB. La question est de savoir comment les données qui leur sont envoyées sont-elles générées et envoyées jusqu'au pilote de périphérique et au périphérique ? Si un programme en mode utilisateur veut lire le contenu du secteur 0 d'un ventilateur de disque dur, il ne peut pas manipuler directement le disque dur, car il ne peut pas appeler les fonctions fournies par le périphérique de disque dur pilote du tout, il ne peut que déléguer le code du noyau pour le faire via l'appel système read. Dans les paramètres de l'appel système read, le programme côté utilisateur doit au moins indiquer au noyau : quel périphérique lire, quels octets du périphérique lire, où remettre les données lues en mémoire et d'autres paramètres (tels que quelle manière de lire lors de la lecture, etc.). Il en va de même pour la lecture de fichiers.