Système d'exploitation - Logiciels d'E / S

Les logiciels d'E / S sont souvent organisés dans les couches suivantes -

  • User Level Libraries- Cela fournit une interface simple au programme utilisateur pour effectuer des entrées et des sorties. Par exemple,stdio est une bibliothèque fournie par les langages de programmation C et C ++.

  • Kernel Level Modules - Cela permet au pilote de périphérique d'interagir avec le contrôleur de périphérique et les modules d'E / S indépendants du périphérique utilisés par les pilotes de périphérique.

  • Hardware - Cette couche comprend le matériel réel et le contrôleur matériel qui interagit avec les pilotes de périphérique et rend le matériel vivant.

Un concept clé dans la conception d'un logiciel d'E / S est qu'il doit être indépendant du périphérique où il doit être possible d'écrire des programmes qui peuvent accéder à n'importe quel périphérique d'E / S sans avoir à spécifier le périphérique à l'avance. Par exemple, un programme qui lit un fichier en entrée doit pouvoir lire un fichier sur une disquette, sur un disque dur ou sur un CD-ROM, sans avoir à modifier le programme pour chaque périphérique différent.

Pilotes de périphérique

Les pilotes de périphérique sont des modules logiciels qui peuvent être connectés à un système d'exploitation pour gérer un périphérique particulier. Le système d'exploitation prend l'aide des pilotes de périphériques pour gérer tous les périphériques d'E / S. Les pilotes de périphérique encapsulent le code dépendant du périphérique et implémentent une interface standard de telle sorte que le code contienne des lectures / écritures de registre spécifiques au périphérique. Le pilote de périphérique est généralement écrit par le fabricant du périphérique et livré avec le périphérique sur un CD-ROM.

Un pilote de périphérique effectue les tâches suivantes -

  • Pour accepter la demande du logiciel indépendant de l'appareil ci-dessus.
  • Interagir avec le contrôleur de périphérique pour prendre et donner des E / S et effectuer la gestion des erreurs requise
  • S'assurer que la demande est exécutée avec succès

La manière dont un pilote de périphérique gère une requête est la suivante: Supposons qu'une requête vienne lire un bloc N. Si le pilote est inactif au moment où une requête arrive, il commence immédiatement à exécuter la requête. Sinon, si le pilote est déjà occupé avec une autre demande, il place la nouvelle demande dans la file d'attente des demandes en attente.

Gestionnaires d'interruption

Un gestionnaire d'interruption, également appelé routine de service d'interruption ou ISR, est un logiciel ou plus précisément une fonction de rappel dans un système d'exploitation ou plus spécifiquement dans un pilote de périphérique, dont l'exécution est déclenchée par la réception d'une interruption.

Lorsque l'interruption se produit, la procédure d'interruption fait tout ce qu'elle doit pour gérer l'interruption, met à jour les structures de données et réveille le processus qui attendait qu'une interruption se produise.

Le mécanisme d'interruption accepte une adresse - un nombre qui sélectionne une routine / fonction de gestion d'interruption spécifique dans un petit ensemble. Dans la plupart des architectures, cette adresse est un offset stocké dans une table appelée table vectorielle d'interruption. Ce vecteur contient les adresses mémoire des gestionnaires d'interruption spécialisés.

Logiciel d'E / S indépendant du périphérique

La fonction de base du logiciel indépendant de l'appareil est d'exécuter les fonctions d'E / S communes à tous les appareils et de fournir une interface uniforme au logiciel de niveau utilisateur. Bien qu'il soit difficile d'écrire un logiciel complètement indépendant du périphérique, nous pouvons écrire certains modules qui sont communs à tous les périphériques. Voici une liste des fonctions du logiciel d'E / S indépendant de l'appareil -

  • Interfaçage uniforme pour les pilotes de périphériques
  • Nommage des appareils - Noms mnémoniques mappés aux numéros d'appareils majeurs et mineurs
  • Protection des appareils
  • Fournir une taille de bloc indépendante de l'appareil
  • Mise en mémoire tampon car les données provenant d'un appareil ne peuvent pas être stockées dans la destination finale.
  • Allocation de stockage sur les périphériques blocs
  • Allocation et libération d'appareils dédiés
  • Rapport d'erreurs

Logiciel d'E / S de l'espace utilisateur

Ce sont les bibliothèques qui fournissent une interface plus riche et simplifiée pour accéder aux fonctionnalités du noyau ou finalement interactives avec les pilotes de périphériques. La plupart des logiciels d'E / S de niveau utilisateur se composent de procédures de bibliothèque à quelques exceptions près comme le système de spoule qui est une façon de traiter les périphériques d'E / S dédiés dans un système de multiprogrammation.

Les bibliothèques d'E / S (par exemple, stdio) se trouvent dans l'espace utilisateur pour fournir une interface avec le logiciel d'E / S indépendant du périphérique résident du système d'exploitation. Par exemple, putchar (), getchar (), printf () et scanf () sont des exemples de bibliothèque d'E / S de niveau utilisateur stdio disponible en programmation C.

Sous-système d'E / S du noyau

Le sous-système d'E / S du noyau est chargé de fournir de nombreux services liés aux E / S. Voici quelques-uns des services fournis.

  • Scheduling- Le noyau planifie un ensemble de demandes d'E / S pour déterminer un bon ordre dans lequel les exécuter. Lorsqu'une application émet un appel système d'E / S bloquant, la demande est placée dans la file d'attente de ce périphérique. Le planificateur d'E / S du noyau réorganise l'ordre de la file d'attente pour améliorer l'efficacité globale du système et le temps de réponse moyen des applications.

  • Buffering - Le sous-système d'E / S du noyau maintient une zone de mémoire appelée bufferqui stocke les données lors de leur transfert entre deux appareils ou entre un appareil avec une opération d'application. La mise en mémoire tampon est effectuée pour faire face à une discordance de vitesse entre le producteur et le consommateur d'un flux de données ou pour s'adapter entre des périphériques qui ont des tailles de transfert de données différentes.

  • Caching- Le noyau maintient la mémoire cache qui est la région de la mémoire rapide qui contient des copies de données. L'accès à la copie mise en cache est plus efficace que l'accès à l'original.

  • Spooling and Device Reservation- Un spool est un tampon qui contient la sortie d'un périphérique, comme une imprimante, qui ne peut pas accepter les flux de données entrelacés. Le système de spoule copie les fichiers spoule en file d'attente sur l'imprimante un par un. Dans certains systèmes d'exploitation, la mise en file d'attente est gérée par un processus démon système. Dans d'autres systèmes d'exploitation, il est géré par un thread dans le noyau.

  • Error Handling - Un système d'exploitation qui utilise une mémoire protégée peut se prémunir contre de nombreux types d'erreurs matérielles et applicatives.