Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement court terme : allocation du processeur 5) Support à la conception d applications parallèles Problématique Revue des mécanismes d interaction pour les 2) Modèles de Notion de = activité d'exécution d'un programme par une machine Processus programme livre ~ programme (statique) ; activité de lecture d un livre ~ (dynamique) Plusieurs peuvent exécuter simultanément un même programme, chacun ayant travaillant sur ses propres données Exemple : traitement de texte. Processus -1- Processus -3-1) Contexte Rôle du SX : réaliser une interface des ressources matérielles pour les applications Mieux employer les ressources " parallélisme et partage des ressources entre calculs " final RAM processeur carte réseau logiciel système " contrôler chacun des traitements en cours d exécution ( actifs) " gérer le partage des ressources entre les actifs programmeur logiciel d application = activité d'exécution d'un programme par une machine Point de vue du programmeur CO Programme variables globales Espace d adressage («objets connus») Etat de la machine = état du processeur (registres) + état de la mémoire (données) Exécution d'une instruction (action) changement d'état de la machine (une instruction est définie par la relation qu elle établit entre états initiaux et états finaux) Exécution d un programme = exécution d une suite d instructions BA 1 Pile BA n Image mémoire du " Processus = suite d'actions = suite d'états obtenus = trace Tas descripteurs de fichiers 0 1 2 4 Processus -2- Processus -4-
Point de vue SX et s " = de ressources le SX doit assurer la disponibilité des ressources demandées par les l /programmeur doit disposer d une interface pour demander/restituer les ressources nécessaires à l exécution de ses l activité d un est abstraite (réduite) aux opérations d allocation/restitution de ressources " pour le SX : état d un = état (demandeur/) par rapport à l allocation des différentes ressources Interface de gestion des : opérations sur les Créer un Windows BOOL CreateProcess ( LPCTSTR lpapplicationname, // programme exécutable LPTSTR lpcommandline, // ou ligne de commande LPSECURITY ATTRIBUTES lpprocessattributes LPSECURITY ATTRIBUTES lpthreadattributes BOOL binherithandles, // indicateurs d héritage DWORD dwcreationflags, // priorité, nouvelle fenêtre,... LPVOID lpenvironment, // environnement LPCTSTR lpcurrentdirectory, LPSTARTUPINFO lpstartupinfo, // fenêtre, redirections LPPROCESS_INFORMATION lpprocessinformation // résultat ); typedef struct _PROCESS INFORMATION { HANDLE hprocess ; HANDLE hthread ; DWORD dwprocessid ; DWORD dwthreadid ; PROCESS_INFORMATION, *LPPROCESS_INFORMATION ; Processus -5- Processus -7- Modèle fourni par le SX Contrôle des ressources disponibles pour le : environnement d exécution le processeur et la mémoire vive peuvent être gérées automatiquement par le SX " disponibilité transparente/automatique pour l /programmeur l utilisation des ressources périphériques est souvent demandée explicitement, via une interface spécifique Remarque Unix propose une interface unifiée (flots/fichiers) pour les échanges de données entre un et son environnement fd liste les variables d environnement qui peuvent être échangées entre le SX 2 et les fournissent un moyen général et flexible de contrôler ls et d ajuster les informations et ressources disponibles lors de 1 l exécution : 0 identifiant de l courant, de la machine, protocole utilisé par le terminal, chemins d accès aux bibliothèques et exécutables Unix Séparation en 2 primitives Création d un «fils» : fork() " Héritage implicite de l environnement construit par le «père» " Exécute le même programme Commutation de programme : exec() Le «fils» charge un nouveau programme à exécuter Exemple if (fork()==0) { /* code exécuté par le fils */ exec("prog fils",); else { /* code exécuté par le père */ Remarque : terminologie fork() création exec() La création de définit une hiérarchie de : lancé = fils, lanceur = père Processus -6- Processus -8-
Terminer un : Windows : VOID ExitProcess(UINT uexitcode) // code de retour Unix : VOID exit(int ret) // code de retour Comment le SX garantit-il la terminaison «propre» d un?? int main(int arc, *char argv[]) { 3)Mise en œuvre de la gestion des Représentation des Point de vue SX = de ressources " état d un = état d allocation des ressources pour chaque, les informations d allocation des ressources (obtenues/demandées) sont conservées dans un descripteur de (ou PCB : Process Control Block) la table des regroupe les différents descripteurs de descripteur P 1 descripteur P 2 système image mémoire de P i masques signaux fichiers ouverts desc. P i descripteur P N code exécutable table des Processus -9- Processus -11- Réponse : appel d une enveloppe du programme principal Autres opérations start { main(); exit(0); Appel Noyau lister les informations de gestion d un ressources utilisées, identifiant, programme, int main(int arc, *char argv[]) { suspendre/reprendre un : masquées dans d autres primitives : wait(), sleep(), read(),... Descripteur de identifiant du copie du contexte processeur (à la dernière interruption) : mot d'état programme (CO,CC), registres (généraux,adresses piles et segments) informations de gestion des ressources " UC : état du (prêt, bloqué), priorité " mémoire : adresse de la table des pages (zones allouées, droits d accès) " E/S : périphériques accessibles (descripteurs de fichiers ouverts : droits d accès, tampons) " statistiques d'utilisation (utilisé pour les algorithmes d allocation des ressources) liens vers les créateur (père)/créés(fils) Le contexte du comprend le descripteur de et les structures qu il référence (tables, piles) Processus -10- Processus -12-
Exemple (Unix) 4)Ordonnancement des But : gérer l allocation des ressources aux tables «résidentes» Structure de Structure de texte Structure pile noyau Données vidables (va et vient [swapping pile usager texte tas données statiques image du Situation : Certaines ressources (UC, imprimante) n admettent qu un nombre limité d s simultanés " une file est associée à chaque ressource, dans laquelle sont placés les (descripteurs des) en attente de la ressource Par la suite et par abus de langage, mais pour être plus concis, «mettre un en attente» sera employé pour «intégrer le descripteur d'un à une structure de données associée à l'état d'attente». " lorsque la ressource est disponible, l algorithme de choix du prochain auquel allouer la ressource dépend " de la nature de la ressource " de la fréquence des décisions d allocation zone système zone Descripteur de = Structure + Structure de Processus -13- Processus -15- Opérations sur les Création Création du descripteur de initialisé " à partir des paramètres d appel pour Windows " à partir du descripteur de père pour Unix Le est prêt ou suspendu Destruction/Terminaison Libération des ressources utilisées par le Libération du descripteur de Niveaux d ordonnancement Définis en fonction de la fréquence des décisions prises : reprise Processus suspendus (va-et-vient) Processus prêts préemption (quantum) périphérique Travaux soumis UC attente E/S suspension Court Terme Moyen Terme Long Terme à long terme (régulation) : choix des programmes à lancer (cf traitement par lots) à moyen terme : choix des pouvant s exécuter (synchronisation, régulation de la charge par va-et-vient, attente d E/S) à court terme (exécution) : choix du actif (allocation de l'uc) Processus -14- Processus -16-
Terminologie : états d un pour l ordonnancement Premier arrivé, premier servi (algorithme FIFO) Principe : servir les requêtes par ordre chronologique d'arrivée préemption/ commutation prêt actif allocation UC réalisation E/S demande E/S bloqué simple sans priorités (équitable) sans réquisition " forte variance du temps de service : le temps de service d un dépend du comportement des qui le précèdent " inadapté au temps partagé : Processus -17- Processus -19- Algorithmes (politiques) d ordonnancement court terme : allocation du processeur Caractéristiques des algorithmes priorité associée aux, ou non " pas de priorité " service équitable (tout finit par être servi) et gestion simple " priorités " contrôle fin de l allocation " risque de famine pour les non prioritaires " remède : faire croître la priorité avec le temps passé dans le système (ancienneté) réquisition, ou non " pas de réquisition " simple, pas de contraintes/hypothèses sur le matériel " réquisition " possibilité de garantir des temps de réponse " nécessaire aux systèmes interactifs et/ou temps-réel Remarque : pas d'algorithme convenable pour tous les critères Tourniquet (Round-Robin) Principe Quantum : durée maximale d activité continue pour le actif (élu) Les prêts sont rangés dans une file Le processeur est alloué au en tête de file Le processeur est préempté au profit du suivant dans la file " soit en fin de quantum; " soit sur blocage du actif (attente d une synchronisation, d une E/S) Prêt File des prêts Prêt Actif Processeur Fin de quantum Blocage logique ~ FIFO, avec réquisition " adapté au temps partagé Paramètre essentiel : valeur du quantum (valeurs usuelles : 10-100 ms) Processus -18- Processus -20-
Allocation à deux niveaux Principe Les prêts sont divisés en catégories ( interactifs, tâches de fond) Chaque catégorie a sa politique d'allocation (FIFO,tourniquet) Une politique d'allocation est définie entre catégories (FIFO, tourniquet, priorités ) Exemples Files multiniveaux " gestion interne aux catégories : FIFO " ordonnancement entre catégories : priorités statiques (un niveau par catégorie) FSS (Fair Share Scheduling) " Une fraction du temps processeur (nombre de quantums) est attribuée à chaque catégorie " Le nombre de quantums alloué à chaque catégorie peut être ajusté dynamiquement Tourniquet multiniveaux " gestion interne aux catégories : tourniquet " ordonnancement entre catégories : priorités statiques (un niveau par catégorie) " adaptatif : un peut changer de niveau selon qu il épuise son quantum ou non Exemple 2 : structuration «classique» de l activité d un SX Structuration type biod shell crond Mon_pg syncd un par activité un (démon) par périphérique paged lpd init RAM un ou plusieurs (démons) pour la gestion mémoire les services système peuvent être réalisés par des ou bien comme des procédures nfsd inetd système Processus -21- Processus -23-5)Support à la conception d applications parallèles Démarche de conception d une application parallèle 1 - définir (spécifier) des activités parallèles 2 - composer (coordonner) ces activités pour constituer des activités «complexes» Exemple : enregistrement d un flux de donnéees reçu à haut débit RD tampon (mémoire centrale) Nécessité de traiter en parallèle la réception et l enregistrement des données " deux activités : RD (réception des données) et ED(enregistrement des données), qui doivent être aussi autonomes que possible se transmettre des données " utilisation d un tampon en mémoire centrale Une coordination entre ED et RD reste nécessaire pour l accès au tampon ED doit attendre RD si le tampon est vide RD doit attendre ED si le tampon est plein " disposer de primitives pour communiquer (tampons, messages) et synchroniser (attente, signaux) ED Structure de base de l activité d un SX : cycliques (démons) message Démon légende Caractère permanent " activité échange d'information boite à lettres attachée au choix exécution signal (aux autres) simple (conception) { efficacité de mise en œuvre " utilisé dans les couches basses (SX) Processus -22- Processus -24-
Mécanismes d interaction pour les Communication Synchrone : lecture/écriture vers des flots/fichiers " prochain cours + TD (Unix) Couplée : tampons " tubes (pipes) + TD (Unix/Shell) Asynchrone : " communication par événements, schéma s abonner/publier " service d interruptions logicielles (signaux UNIX " TD) " E/S non bloquantes (" TD Unix) " mémoire partagée (" Cours + TD mémoire virtuelle) Synchronisation (attente contrôlée par le programmeur) couplage induit par l accès aux tubes schéma fork/join : possibilité pour un père d attendre la terminaison d un fils (" TD) Les schémas et objets de synchronisation généraux (verrous, moniteurs, sémaphores) sont un sujet technique qui sera développé dans une UE spécifique, en 2e année. Processus -25-