Systèmes & Réseaux Georges Arhodakis Université Paris 8
Sommaire Introduction Historique Service du noyau Appel Système Trappes & Interruptions Horloge & Gestion du Temps Ordonnancement Contrôle & Gestion des Ressources Processus Création / Destruction / Planification États & Changements de Contexte Trappes / Interruptions / Exceptions Processus Légers (Threads) Mémoire Physique / Virtuelle Pagination / Swapping Espace de Travail Entrées / Sorties Pilotes de Périphériques Physiques / Logiques / Virtuels Raw / Block Devices Handlers Système de Gestion de Fichiers (SGF) Distribution / Répartition (Networking) Modèles Topologies Protocoles Normes & Standards Inter-Processus Communication (IPC) Signaux Sémaphores Mémoire Partagée (Shared Memory) Boite à lettres (Messaging Queues) Pipes (Named / Unnamed) Sockets Fichiers 2000, Georges Arhodakis - Université Paris 8 2
Sous Système d E/S: Vue Générale Processus Utilisateur Interface Système d Exploitation Pilotes de Périphériques Tables d états de Périphériques Gestionnaire d Interruptions Tampons Mémoire (Buffers) 2000, Georges Arhodakis - Université Paris 8 3
Sous Système d E/S: Pour Qui Périphériques de Communication Périphériques de Stockage Séquentiel - Caractère (Raw) Block (Cooked) Mécanismes d échanges entre composants logiciels 2000, Georges Arhodakis - Université Paris 8 4
Sous Système d E/S: Pourquoi Formats Spéciaux Génération ld spécifique Le Noyau s exécute en mode Absolu load Particulier Environnement Machine plutôt qu Environnement Processus Recompilation et Rechargement du Noyau sans Modification de ses propres sources (Applications Utilisateur, Daemon, ) 2000, Georges Arhodakis - Université Paris 8 5
Sous Système d E/S: Composition Logiciel Sockets Protocoles Réseau(x) Fichiers Simple Système Gestion Fichiers E/S Disque Traitées COOKED E/S Disque Traitées RAW RAW TTY COOKED TTY Discipline de la ligne Block BUFFER CACHE Net Device Block Device Char Device Matériel Compatibilité Logicielle Pas de Modifications (SE, AU) Incompatibilité Logicielle Modifications (SE, AU) SE : Système d Exploitation AU : Application Utilisateur 2000, Georges Arhodakis - Université Paris 8 6
Sous Système d E/S: Les Types File System & IPC Devices (Types Particuliers) Network Device Block Device Character Device Apparaissent dans l espace de nom (Name Space) du File System Points d entrées par Tableau Non Structuré 2000, Georges Arhodakis - Université Paris 8 7
Sous Système d E/S: Les Découpages open close read write ioctl open mount close unmount fcntl write read Appels Buffer Cache Table d aiguillage des pilotes de périphériques mode caractère Table d aiguillage des pilotes de périphériques mode block open close read write ioctl Pilote Gestion d Interruptions Vectorisées open close strategy Pilote Gestion d Interruption Vectorisées Interruptions du Périphérique 2000, Georges Arhodakis - Université Paris 8 8
Sous Système d E/S: Les Interactions Espace Utilisateur. Trappe. Espace Système Haut Bas. Exécutive Traitement Appel Système Structures de données partagées Pilote Gestion d Interruptions Vectorisées Interruptions du Périphérique. 2000, Georges Arhodakis - Université Paris 8 9
Sous Système d E/S: Les ID Utilisation d ID ou comment Travailler avec les ID ID Table d ID Tables d E/S Système de Gestion de Fichiers Communication Inter-Processus Périphériques en Mode Block et/ou Caractère 2000, Georges Arhodakis - Université Paris 8 10
Sous Système d E/S Pas de main() Appel à des temps spécifiques prédéfinis pour des raison de Pérennité / Sécurité Distinction par: Class Numéro du Périphérique (Device Number) ou Major : Point d entrée dans la table Minor : Interprété par le périphérique Contrôleur Périphérique Un Périphérique en mode Block peut/doit avoir un File System et valider le Block Cache 2000, Georges Arhodakis - Université Paris 8 11
Sous Système d E/S: Au Niveau Système Langage de Programmation de Haut Niveau (pas d assembler) Duplication du Code Inutile Partage des Ressources Limité ( RAM Buffers, ) Contrôle du Noyau en Adéquation avec le Fonctionnement de l Ordonnanceur (Scheduler Respect) 2000, Georges Arhodakis - Université Paris 8 12
Sous Système d E/S: Au Niveau Utilisateur A l Origine des Requêtes d E/S Le Processus Utilisateur Trois Possibilités de Transfert entre le Pilote et l Espace du Processus Utilisateur: 1. D.M.A. 2. Buffers gérés par le Pilote 3. Buffers gérés par le Noyau Espace d Adressage Virtuel du Processus Demandeur U-Area 2000, Georges Arhodakis - Université Paris 8 13
Sous Système d E/S: Structures de Données Statiques Dynamiques Partagées par l ensemble des Périphériques Espace Non Paginé clist (Linked Lists FIFO) buffers Structures de Données attachées au Pilote (Privés) Simples/Complexes (dépendante de la conception, occupation d espace mémoire) Peuvent/Doivent Découper en Partitions l Espace de Travail Communication via Status Flags Critique, buffers non partagés pour les E/S 2000, Georges Arhodakis - Université Paris 8 14
Sous Système d E/S: Règles de Désignation Préfixe (ID Périphérique) Suffixe (Nom Point d Entrée) Exemples ID Φ Suffixe hd hd fd lp tt hd_init() hd_strategy() fd_read() lp_write() tt_close() 2000, Georges Arhodakis - Université Paris 8 15
Sous Système d E/S: Sommeil / Réveil Utilisation à 100% de l U.C. (C.P.U.) par l Utilisateur sleep() Suspend l exécution du processus courant après sauvegarde du Contexte wakeup() 2000, Georges Arhodakis - Université Paris 8 16
Pilotes de Périphériques Txfer D.M.A. Structures de données du Noyau Périphériques d E/S Pilotes de Périphériques Noyau Txfer D.M.A. Processus Utilisateur 2000, Georges Arhodakis - Université Paris 8 17
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Appelée quand le système s amorce (Boot) xx_init() Commandes d initialisation Périphérique Physique u-area u-area du du ------------- ------------- Espace Espace des des du du Organisation/Initialisation des données de fonctionnement Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique 2000, Georges Arhodakis - Université Paris 8 18
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Appelées quand un processus utilisateur exécute les Appels Système open() / close() xx_open() xx_close() Commande reset Périphérique Physique u-area u-area du du ------------- ------------- Espace Espace des des du du Changement de statut Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique 2000, Georges Arhodakis - Université Paris 8 19
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Appelée quand un processus utilisateur exécute l Appel Système : ioctl() xx_ioctl() Commandes Périphérique Physique u-area u-area du du ------------- ------------- Espace Espace des des du du Données associées au pilote de périphérique Changement de statut Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique 2000, Georges Arhodakis - Université Paris 8 20
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Données à traiter ultérieurement par xx_read() / xx_write() Appelée quand le périphérique interrompt l U.C. (C.P.U.) xx_intr() Données Périphérique Physique u-area u-area du du ------------- ------------- Espace Espace des des du du Changement de statut Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique 2000, Georges Arhodakis - Université Paris 8 21
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Appelée par le soussystème d E/S du noyau pour une lecture/écriture sur un périphérique en mode block u-area u-area du du ------------- ------------- Espace Espace des des du du xx_strategy() Changement de statut Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique Périphérique E/S Physique Amorcée 2000, Georges Arhodakis - Université Paris 8 22
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Appelée quand un processus utilisateur exécute l Appel Système : read() / fread() Données stockées par xx_intr() ou D.M.A. xx_read() Amorcer les activités de lecture Périphérique Physique u-area u-area du du ------------- ------------- Espace Espace des des du du Données demandées par le processus utilisateur Changement de statut Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique 2000, Georges Arhodakis - Université Paris 8 23
Pilotes de Périphériques: routines Structures de données fournies par le Noyau block clist Appelée quand un processus utilisateur exécute l Appel Système : write() / fwrite() Données à transmettre au périphérique via xx_intr() ou D.M.A. xx_write() Commande initiale de sortie Périphérique Physique u-area u-area du du ------------- ------------- Espace Espace des des du du Données transmises par le processus utilisateur Changement de statut Structures Structures de de Locales Locales au au Pilote Pilote de de Périphérique Périphérique 2000, Georges Arhodakis - Université Paris 8 24
Sous Système d E/S: Périphériques d E/S Périphériques d E/S programmées Transfert sous contrôle d U.C. Un octet à la fois Surcharge possible Périphériques d E/S DMA Transfert sous contrôle DMA Un block à la fois Mise en œuvre délicate pour la routine de xx xx_strategy() 2000, Georges Arhodakis - Université Paris 8 25
Sous Système d E/S: E/S Programmées CPU dormant ou exécutant une tache quelconque Processus Utilisateur exécutant l Appel Système read() ou write() sur les structures des données clist Routine d interruption transférant des données à partir ou vers les structures de données clist du pilote xx_read read() ou xx_write write() ont appelé la routine sleep() xx_intr intr() a appelé la routine wakeup() 2000, Georges Arhodakis - Université Paris 8 26
Sous Système d E/S: E/S DMA CPU dormant ou exécutant une tache quelconque Processus Utilisateur exécutant l Appel Système read() ou write() ou le noyau appelant la routine xx_strategy strategy() Routine d interruption acquittant le transfert E/S DMA effective (Transfert) Appel de sleep() par le pilote de périphérique pour suspendre le processus appelant Appel de wakeup() par la routine d Interruption pour la reprise du processus interrompu 2000, Georges Arhodakis - Université Paris 8 27