III. Gestion des Entrées / Sorties physiques

L'une des principales fonctions d'un système d'exploitation consiste à contrôler tous les périphériques d'entrée/sortie (E/S) de l'ordinateur. Il doit émettre des commandes vers les périphériques, intercepter les interruptions et gérer les erreurs. Il fournit également une interface simple entre les périphériques et le reste du système. Dans la mesure du possible, l'interface doit être la même pour tous les périphériques (indépendance des périphériques).

III.1. Définition d'une E/S 

Dans un système d'exploitation :

Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale.

Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran…).

III.2. Types d'E/S

Les principes de base sont employés pour réaliser les entrées-sorties entre la mémoire et un périphérique.

On peut imaginer, toujours dans le cas du système d'exploitation le plus rudimentaire, que le processeur pilote lui-même le dispositif de lecture ou d'écriture. Il gère directement le disque choisissant l'emplacement où écrire et enchaîne une à une toutes les opérations nécessaires. Ceci est un gaspillage car le processeur devra consacrer le plus clair de son temps à cette gestion, travaillant fort peu pour l'usager. On a donc depuis longtemps introduit une certaine intelligence dans les dispositifs de gestion des entrées-sorties. On distingue:

·         Les coupleurs: processeurs simples qui disposent d'un peu de mémoire et d'un jeu d'instructions limité. Ils peuvent gérer les adresses sur le disque et les déplacements des têtes d'écriture.

·         Les canaux et dispositifs d'accès direct à la mémoire (DMA ou direct memory access) qui sont de véritables processeurs, parfois non interruptibles, qui peuvent interrompre le processeur. Ils peuvent activer en parallèle plusieurs disques ou coupleurs, possèdent une mémoire qui leur permet de stocker l'information et de réordonner les accès pour accélérer les échanges.

III.3. Organisation des transferts

III.3.1. Instructions d'E/S

Les instructions d'entrée-sortie sont privilégiées, c'est-à-dire qu'elles ne peuvent figurer que dans des programmes exécutés en mode système. En mode utilisateur, un programme demande au système d'opérer l'entrée-sortie dont il a besoin. La seule façon pour exécuter une opération d’entrée-sortie par un programme est de faire un appel à une fonction du système judicieusement choisie par le programmeur. Cette fonction, une fois appelée, va s'exécuter en mode système et aura donc de ce fait accès aux instructions d'entrée/sortie. La forme de cet appel au système est celle d'un appel de procédure.

III.3.2. Découpage fonctionnel matériel/logiciel d'une E/S

Chaque périphérique est connecté à l'ordinateur par l'intermédiaire d'une carte électronique spéciale appelée contrôleur de périphérique.

Figure 13. Rôle du contrôleur.

Un contrôleur possède en général :

        une zone tampon (buffer),

        des bits de contrôle : bit d'état (prête, occupée), et bit de commande (lecture, écriture).

III.4. Modes de pilotage d'une E/S :

III.4.1. Pilotage synchrone

Lors d'entrées-sorties synchrones, le processeur est immobilisé pendant toute la durée du transfert. Le coupleur contient un mot d'état qui indique entre autre :

        s'il est prêt lorsque le périphérique est apte à fonctionner

        fini lorsque le transfert est terminé et qu'il est prêt pour un nouvel échange. Le processeur peut alors reprendre son activité

        erreur lorsqu'une erreur est détectée au cours du transfert. La nature de celle-ci est indiquée par un code qui fait partie du mot d'état. La qualité du diagnostic dépend de l'électronique, nombre de bits de contrôle par octet) et des possibilités de traitement du système d'exploitation.

Figure 14. Couplage synchrone.

Les entrées-sorties synchrones ne présentent d'intérêt que pour des processeurs rudimentaires lorsqu'il n'y a pas de raison de vouloir mieux employer les temps d'attente. C'est le cas, par exemple, du microprocesseur affecté au clavier d'un ordinateur. Leur programmation est simple puisque l'état de l'activité, en chaque point interruptible, est toujours parfaitement déterminé. Les coupleurs synchrones ne se rencontrent que dans des dispositifs spécialisés dont l'état est parfaitement prévisible à tout instant. Leur programmation est facile donc efficace et ne demande que peu de mémoire pour stocker le programme.

III.4.2. Pilotage asynchrone

Figure 15. Couplage asynchrone synchrone.

Le pilotage des entrées-sorties asynchrones est plus complexe. On ne peut pas prévoir à l'avance l'état des différents processus qui devront communiquer entre eux. Leur programmation nécessite le recours à des interruptions car le processeur et le coupleur travaillent simultanément à la différence du pilotage synchrone où ils travaillent en alternance. Chacun doit pouvoir être interrompu à des moments imprévisibles entre deux instructions. Ce mode de fonctionnement est évidemment plus performant puisque le processeur n'est pas immobilisé inutilement : lorsqu'il attend que le coupleur ait effectué une opération d'écriture pour un processus il peut retourner à d'autres activités.  Cependant ceci est la source de nombreuses possibilités d'erreurs. Il faut veiller à synchroniser correctement le périphérique et le processeur. Les données doivent être prêtes au moment voulu. Une mauvaise synchronisation est la source de nombreuses erreurs souvent difficiles à détecter et à corriger. Les canaux et dispositifs DMA fonctionnent généralement dans ce mode. Le processeur peut consulter leur mot d'état pour connaître leur activité. Dans le dispositif DMA le plus simple il se réduit à un registre qui contient l'adresse en mémoire des données à transférer, le nombre d'octets et le sens du transfert. Le processeur connaît l'état d'avancement du travail grâce à cette information.

III.5. Gestion d’E/S simultanées

Lorsqu’une requête d’E/S arrive en mode synchrone, une requête est en cours d’exécution à la fois, puisque le CPU attend la fin d’E/S.

Néanmoins, en mode asynchrone et mode DMA, l’E/S demandée est lancée. Puis, le contrôle est rendu immédiatement à un programme utilisateur, qui peut formuler de nouvelles requêtes d’E/S.

A cet effet, le système s’exploitation maintient une table contenant une entrée pour chaque périphérique d’E/S ; c’est la table d’état des périphériques (Device-Status Table).

Figure 16. Table d’état des périphériques.

Chaque entrée de la table indique le type du périphérique, son adresse et son état (inactif ou occupé), ainsi qu’une  liste des requêtes formulées d’E/S. Cette liste contient, pour chaque requête, le type d’opération, l’adresse de données et la longueur des données, …etc.