Upload
internet
View
109
Download
0
Embed Size (px)
Citation preview
GEF 435Principes des systèmes d’exploitation
Principes et structure du logiciel d’E/S(Tanenbaum 5.2 & 5.3)
Revue
• Qu’est-ce que le mode rafale?• Sur quelle pile est-ce que l’on sauvegarde l’état du
système quand une interruption se produit?
Synopsis
• Principes et buts du logiciel d’E/S• Méthodes d’E/S• Structure du logiciel d’E/S (partie I)
Principes/Buts du logiciel d’E/S
• Indépendant des périphériquesIl devrait être possible d’écrire des programmes
qui peuvent accéder n’importe quel périphériques d’E/S sans avoir à spécifier un périphérique en avance
Par exemple: votre programme ne devrait pas être substantiellement différent (et même non différent) si vous ouvrez un fichier sur un disque mou, un disque dure ou un disque compact
Principes/Buts du logiciel d’E/S
• Nommage uniformeLe nom d’un fichier ou d’un périphérique devrait être une
chaîne de caractères ou un entier et ne doit pas dépendre du périphérique d’aucune façon
Est-ce que Windows rencontre ce but?
• Traitement des erreursLes erreurs devraient être traitées aussi près du matériel
que possible ie: Contrôleur → pilote de périphérique → et vers le hautPlusieurs erreurs d’E/S sont transitoires, si on essaie
encore on peut enlever la majorité des erreurs
Principes/Buts du logiciel d’E/S
• Transferts synchrones vs asynchronesAu niveau physique, la plus part des E/S sont
asynchrones• Le périphérique signale une interruption quand il est
prêt
Pour les utilisateurs, le programme est habituellement plus facile à créer si les E/S sont synchrones (ie: qui bloquent)
C’est le job du SE de rendre les transferts asynchrones en transferts qui semblent bloquer du point de vue de l’utilisateur
Principes/Buts du logiciel d’E/S
• Tamponnage Les données qui proviennent d’un périphérique
doivent souvent être collectées avant d’être fournies à la destination finale
Par exemple, un paquet de réseau doit être examiné pour déterminer quel processus a demandé le paquet
Les données qui vont vers un périphérique peuvent aussi être tamponnées. Par exemple: les baladeurs mp3 doivent avoir des données prêtes à lire en tout temps
• Ceci découple le taux de remplissage du taux de vidage
Principes/Buts du logiciel d’E/S
• Périphériques partagés vs. dédiésCertains périphériques, comme les disques,
peuvent être partagés entre plusieurs processus simultanément. On peut ouvrir plusieurs fichiers en même temps sans problème
Certains autres périphériques, tel que les lecteurs de rubans magnétiques ou les brûleurs CD peuvent n’avoir qu’un seul utilisateur à la fois jusqu’à ce que le job soit complété
• Les périphériques dédiés introduisent aussi le problème des interblocages
Comment est-ce que les E/S sont exécutées?
• Trois méthodes:E/S programméesE/S par interruptionsDMA
• Ceci est du point de vue du logiciel, malgré que cela peut impliquer des questions de matériel...
Comment est-ce que les E/S sont exécutées?
• E/S programméesE/S avec attente activeLe SE a un processus qui attend dans une boucle, qui vérifie si
un périphérique est prêt à communiquer et/ou envoyer/recevoir de l’information tel que requis
Comment est-ce que les E/S sont exécutées?
• E/S programmées
Cette méthode est simple à implémenter, mais cela accapare le CPU à plein temps (si on n’utilise pas un processus pour imprimer) ou utilise beaucoup de cycles
Si le temps d’attente est court (ie: l’impression va dans un tampon dans l’imprimante) ceci pourrait être acceptable
Comment est-ce que les E/S sont exécutées?
• E/S par interruptionCette méthode permet au CPU de faire d’autre
travail pendant que les E/S sont en coursComme avant, l’information à être imprimée est
transférée dans l’espace noyau• L’imprimante se fait passer un caractère et
l’ordonnanceur est appelé pour choisir un processus à être exécuté (fait partie de l’appel de système)
• Quand l’imprimante est prête pour un nouveau caractère, une interruption est générée et la routine de service d’interruption de l’imprimante est exécutée
Comment est-ce que les E/S sont exécutées?
• E/S par interruptionSi la routine d’interruption note qu’il n’y a plus de
caractère à imprimer le processus de l’utilisateur est débloqué
• Peut être par message, sémaphore, etc.
Comment est-ce que les E/S sont exécutées?
• E/S utilisant le DMAGros gain: ceci permet une seule interruption quand le transfert
est complété!Ceci est essentiellement des E/S programmées, mais le
contrôleur DMA fait le travail au lieu du CPUSi le CPU est habituellement inactif, alors cette méthode est
moins efficace que les interruptions. Pourquoi?
Le logiciel d’E/S ont des couches (comme les Ogres)
Le logiciel d’E/S ont des couches (comme les Ogres)
• Comment est-ce que le logiciel d’E/S est organisé?Quatre couches, chaque couche est de plus en plus
abstraite du matériel en montant dans le systèmeChaque couche a une interface bien définie pour la couche
adjacente (couche inférieur est un serveur pour la supérieure)
Le logiciel d’E/S ont des couches (comme les Ogres)
• Gestionnaires d’interruptionsLes interruptions doivent être utilisées pour faire au
moins une partie des E/S et elles doivent être cachées le plus loin possible de l’utilisateur; dans les entrailles du SE
La meilleur façon de travailler avec les interruptions est que le pilote se bloque sur un sémaphore, une attente sur une variable de condition (moniteur), sur une réception de message, ou une autre méthode similaire
Quand l’interruption arrive, le pilote est débloqué/envoyé un message/etc.
Le logiciel d’E/S ont des couches (comme les Ogres)
• Gestionnaires d’interruptionsComme de raison, cela n’est pas si simple. On doit
accomplir bien plus que cela quand on répond à une interruption• Sauvegarder tout les registres qui ne sont pas sauvés
par le matériel• Charger le RPA, le MMU, la table de pages et la pile
pour la routine de service d’interruption (RSI)• Confirmer avec le contrôleur d’interruptions (ou le
périphérique si il n’y a pas de CI
(cont.)
Le logiciel d’E/S ont des couches (comme les Ogres)
• Gestionnaires d’interruptions• Copier les registre de là où ils ont étés sauvegardés
à la table de processus• Exécuter la RSI (aller chercher l’info du
périphérique, débloquer le pilote, etc.)• Choisir le prochain processus à exécuter et charger
le RPA, MMU, registres, PC, PSW, table de pages, etc. pour ce processus
• Commencer l’exécution pour le nouveau processus
Le logiciel d’E/S ont des couches (comme les Ogres)
• Pilotes de périphériquesChaque périphérique d’E/S attaché à l’ordinateur
requiert du code spécifique pour faire l’interface entre le matériel et le SE. Ce code s’appel pilote de périphérique
• Ceci est parce que au niveau du matériel, les périphériques sont radicalement différents les uns des autres
• Parfois un pilote va prendre soins d’une classe de périphériques qui sont proche ex.: un nombre de souris
Les pilotes de périphériques sont normalement produit par le manufacturier du périphérique pour les SEs populaires
Le logiciel d’E/S ont des couches (comme les Ogres)
• Pilotes de périphériquesTypiquement les pilotes sont dans le noyau pour
qu’ils puissent avoir accès au registres de contrôle du périphérique
• Ce n’est pas un requis. Vous pourriez avoir un pilote dans l’espace utilisateur et faire des appels de systèmes pour communiquer avec les registres. Par contre la pratique courante est d’avoir les pilotes dans le noyau.
Étant donné que c’est la méthode habituel d’implémenter les pilotes, l’architecture normale est de mettre les pilotes ‘en bas’ du SE
Le logiciel d’E/S ont des couches (comme les Ogres)
• Non montré sur la diapo: Le SE requiert normalement que les périphériques par blocs supporte un ensemble standard d’interfaces et que les périphériques par caractères en supporte un autre
Le logiciel d’E/S ont des couches (comme les Ogres)
• Que font les pilotes de périphériques?Ils acceptent les commandes abstraites de
lecture/écriture de la couche supérieureFonctions assorties:
• Initialise le périphérique
• Gère la puissance – Arrête un disque de tourner, ferme un écran, ferme une caméra, etc.
Le logiciel d’E/S ont des couches (comme les Ogres)
• Qu’est-ce que un pilote fait sur une lecture/écriture?Vérifie les paramètres d’entrée & retourne les erreursConverti les commandes abstraites (lit du secteur) en
commandes physiques (tête, traque, secteur, et cylindre)Met les demandes dans une queue si le périphérique est
occupéAmène le périphérique en état de fonctionnement si requis
• Monter la vitesse du moteur, température, etc.
Contrôle le périphérique en envoyant des commandes par les registres de contrôle
Le logiciel d’E/S ont des couches (comme les Ogres)
• Qu’est-ce que un pilote fait sur une lecture/écriture?Quand une demande est envoyée, une des deux
solutions possibles peut arriver:• Le pilote doit attendre pour la demande de compléter,
donc le pilote bloque. Il va se réveiller plus tard, tel que décrit dans la section sur les interruptions
• Le résultat est instantané (ex.: écriture dans l’espace de mémoire de l’écran) donc le travail est continué jusqu’à ce que l’E/S soit terminé
Le logiciel d’E/S ont des couches (comme les Ogres)
• Complications de la vie réel pour les pilotes de périphériques:Interruption reçu durant l’exécution des E/S
• Peut se produire quand on assemble un paquet pour un réseau et qu’un nouveau paquet est reçu
• Dans ce cas les pilotes doivent être réentrants
Les périphériques peuvent être ajoutés ou enlevés pendant que l’ordinateur fonctionne
• Clés de mémoire
• Carte de réseau PCMCIA
• Etc.
Quiz Time!
Questions?