Julien Forget 1 Université Lille 1 École Polytechnique Universitaire de Lille Cité Scientifique 59655 Villeneuve d Ascq GIS3 2011-2012 1. Inspiré des slides de Thomas Vantroys 1 / 58
Plan 1 Notions de base 2 Ordonnancement 3 Communication et synchronisation inter-processus 2 / 58
Programme et processus Définition Un processus est un programme en cours d exécution. Chaque exécution d un programme (éventuellement plusieurs fois le même) donne lieu à un processus différent ; A tout instant, un processeur exécute au plus un processus ; Dans un OS multi-tâches, le système alterne entre l exécution de plusieurs processus ; Seuls les systèmes multi-cœur ou multi-processeur exécutent réellement plusieurs processus en même temps (un par cœur/processeur) ; Plus généralement, les processus partagent l accès à différentes ressources : processeur mais aussi mémoire et périphériques. 3 / 58
Propriétés d un processus A un instant donné, un processus est caractérisé par de nombreuses informations, dont : Son état : exécution, suspendu, etc. ; Son identificateur ; Son compteur ordinal : indique la prochaine instruction à exécuter ; Sa pile d exécution : mémorise l empilement des appels de fonction ; Ses données en mémoire ; Toutes autres informations utiles à son exécution (E/S, fichiers ouverts,... ) 4 / 58
En Unix : Création de processus Au lancement du système, un unique processus ; L appel système fork crée un nouveau processus ; Le processus père et le processus fils s exécutent en parallèle ; Le père et le fils peuvent à nouveau effectuer un fork ; Hiérarchie arborescente de processus. Visualiser l arborescence des processus : pstree [options] i n i t NetworkManager 2 [d h c l i e n t ] 2 [{ NetworkManager } ] acroread 2 [{acroread } ] gnome terminal bash emacs sh evince 4 [{evince } ] {emacs } evince 3 [{evince } ] pstree 5 / 58
Mode d exécution Deux modes d exécution d un processus : Mode noyau : accès sans restriction (manipulation de la mémoire, dialogue avec les contrôleurs de périphériques,... ) Mode utilisateur : accès restreint, certaines instructions sont interdites (pas d accès direct aux périphériques). Il peut être interrompu par d autres processus. Les appels systèmes permettent à un processus en mode utilisateur d accéder (temporairement) à des fonctions nécessitant le mode noyau. 6 / 58
Identificateurs d un processus Plusieurs identificateurs sont associés à un processus (UNIX) : Numéro de processus (pid) ; Numéro du processus père (ppid) ; Identificateur d utilisateur réel ; Identificateur d utilisateur effectif (bit setuid) ; Identificateur de groupe réel ; Identificateur de groupe effectif (bit setgid) ; Liste d identificateurs de groupes. Possibilité de connaître ces informations dynamiquement via des appels systèmes. 7 / 58
Evolution de l état au cours de l exécution 8 / 58
Etat d un processus non créé : le code n est pas en mémoire ; créé : le code est en mémoire, en attente d activitation ; éligible : l activation a été demandée. En attente de l accès au processeur ; élu : le processus s exécute ; suspendu : une ressource est indisponible (allouée à un autre processus). 9 / 58
Préemption 1 Le système interrompt l exécution d un processus pour en exécuter un autre (ressource indisponible, processus prioritaire, etc.) ; 2 Il sauve le contexte du processus et le remplace par celui d un autre ; 3 Il rétablira plus tard le contexte du processus préempté. Contexte d un processus : valeur du compteur ordinal, adresse de la pile, valeur des registres, etc. 10 / 58
Classification des systèmes Gestion des processus mono-tâche : CPU dédié à un processus ; multi-tâche : CPU partagé entre les processus ; multi-tâche préemptif : possibilité de suspendre puis rétablir un processus en cours d exécution. Gestion des utilisateurs mono-utilisateur : pas de cohabitation entre utilisateurs ; multi-utilisateur : cohabitation possible. 11 / 58
Exemples de système d exploitation MS-DOS : mono-utilisateur, mono-tâche ; Windows : mono-utilisateur, multi-tâche ; WinNT : mono-utilisateur, multi-tâche préemptif ; UNIX : multi-utilisateur, multi-tâche préemptif. 12 / 58
Sous WinNT : Visualisation des processus 13 / 58
Visualisation des processus Sous UNIX : l information sur les processus en cours peut être obtenue par : ps [options] pour les options consultez le man 14 / 58
Visualisation des processus Sous UNIX : visualisation dynamique des processus : top [options] 15 / 58
Interruption des processus Sous UNIX : kill [numéro_de_signal] numéro_de_processus kill -l donne l ensemble des signaux disponibles exemple de signaux : SIGHUP (1) : émis à tous les processus associés à un terminal lorsque celui-ci se déconnecte SIGINT (2) : émis à tous les processus associés à un terminal lorsque <ctrl + C > est tapé SIGKILL (9) : tue un processus quel que soit son état. C est l arme absolue. SIGTERM (15) : signal de terminaison normale d un processus 16 / 58
Lancement en arrière plan Il est possible de lancer une commande sans que le shell courant en attende la terminaison : commande & Elle ne peut plus lire au clavier ; Les sorties standards sont toujours associées, par défaut, au terminal ; Elles ne sont plus interruptibles à partir du clavier (ctrl-c par exemple). Connaître les processus lancés en arrière plan (pour un shell donné) : jobs 17 / 58
Sous UNIX : Changement d état d un processus 18 / 58
Problématiques de la gestion de processus Difficulté principale : gestion de l accès concurrent à diverses ressources : Accès au processeur : ordonnancement ; Lecture/écriture de données : Assurer la cohérence des données ; Gérer les synchronisations lecteur/écrivain ; Eviter les blocages. 19 / 58
Plan 1 Notions de base 2 Ordonnancement 3 Communication et synchronisation inter-processus 20 / 58
Définition L ordonnancement (scheduling) est une fonction fondamentale d un système d exploitation ; A la base de la programmation multi-tâche : Plusieurs processus en mémoire en même temps ; Assignation du processeur à un processus en fonction de certains critères ; Objectif = optimiser l utilisation concurrente du processeur. 21 / 58
Ordonnanceur vs dispatcher L ordonnanceur est responsable de l organisation des file d attente des tâches éligibles ; Le dispatcher réalise l élection d un processus et le changement de contexte associé. 22 / 58
Décisions de l ordonnanceur Les décisions de l ordonnanceur peuvent avoir lieu dans les circonstances suivantes : 1 Quand un processus passe de l état "élu" à "suspendu" (attente de disponibilité d une ressource) ; 2 Quand un processus passe de l état "élu" à l état "éligible" (à cause d une interruption) ; 3 Quand un processus passe de l état "suspendu" à l état "éligible" (libération d une ressource) ; 4 Quand un processus se termine. 23 / 58
Réquisition Ordonnancement sans réquisition : L ordonnanceur n intervient qu en 1 et 4 ; Une fois le processeur alloué à un processus, celui-ci le garde jusqu à ce qu il ait terminé ou passe en attente. ordonnancement avec réquisition : l ordonnanceur intervient dans les cas 1 à 4 problèmes à résoudre : Le partage des données ; Accès à des périphériques non partageables. 24 / 58
Qualité de l ordonnancement Quelques critères de qualité de l ordonnancement : Taux d utilisation du processeur élevé ; Temps de réponse court : répondre rapidement à un événement extérieur ; Equité : partage équitable du processeur entre les processus ; Discrétion : le temps passé à faire les choix d ordonnancement doit rester faible. 25 / 58
Premier arrivé, premier servi (FCFS) First Come, First Serve c est le plus simple gestion d une file FIFO une fois le processeur alloué à un processus celui-ci le garde... peu utilisable pour le temps partagé désastreux si le processus en exécution ne se termine pas 26 / 58
Exercice Processus Arrivée Durée P1 20 10 P2 0 30 P3 10 40 P4 10 20 Questions : Un processus peut-il être préempté? Que faire en cas d égalité? Donner l ordonnancement en mono puis bi-processeur. 27 / 58
Plus court temps de traitement les temps d exécutions des tâches sont supposés connu technique favorisant les traitements courts en cas de charge, le temps de réponse des traitements longs sera catastrophique 28 / 58
Exercice Processus Arrivée Durée P1 20 10 P2 0 30 P3 10 40 P4 10 20 Questions : Un processus peut-il être préempté? Donner l ordonnancement en mono-processeur. 29 / 58
Le tourniquet (round robin) spécialement conçu pour le temps partagé file d atente circulaire un quantum de temps est alloué à chaque processus tout processus éligible est certain d être élu une fois 30 / 58
Le tourniquet : exemple 31 / 58
Le tourniquet : choix du quantum c est une affaire de compromis s il est trop court, le temps de commutation t1 devient prohibitif devant le temps consacré au processus t2 s il est trop long, le temps d attente des autres processus peut devenir gênant par rapport au temps de réponse à fournir 32 / 58
Exercice Processus Arrivée Durée P1 20 10 P2 0 30 P3 10 40 P4 10 20 On considère un quantum de 10 : Un processus peut-il être préempté? A-t-on une notion de priorité? Donner l ordonnancement en mono-processeur. 33 / 58
Par priorité attribution d une priorité à chaque processus priorité allouée statiquement ou dynamiquement sans ou avec réquisition du processeur sans : le processus est rangé en file d attente en fonction de sa priorité par rapport aux processus en attente avec : si le processus qui arrive dans la file d attente est plus prioritaire que celui en cours d exécution, il y aura réquisition du processeur en faveur du processus arrivant. 34 / 58
Exercice Processus Arrivée Durée Priorité P1 20 10 4 P2 0 30 1 P3 10 40 3 P4 10 20 2 Sachant que la priorité la plus faible est 1, donner l ordonnancement en mono-processeur : Sans réquisition ; Avec réquisition. 35 / 58
Par files d attente multi-niveaux Combinaison des systèmes précédents : Gestion par priorités et si priorités égales, gestion par tourniquet ou FIFO 36 / 58
Exercice Processus Arrivée Durée Priorité P1 30 10 3 P2 0 30 1 P3 10 40 2 P4 10 20 2 La priorité la plus faible est 1 et le quantum est de 10 : Le système peut-il fonctionner avec/sans réquisition? Donner l ordonnancement en mono-processeur. 37 / 58
Par priorité + temps partagé + âge les processus sont élus en fonction de leur priorité ; à chaque période d horloge (tick), la priorité des processus en attente augmente ; si un processus devient plus prioritaire que celui en cours d exécution, alors il y a préemption et le processus interrompu revient en file d attente avec sa priorité initiale. 38 / 58
Par priorité + temps partagé + âge (exemple) 39 / 58
Plan 1 Notions de base 2 Ordonnancement 3 Communication et synchronisation inter-processus 40 / 58
Processus communicants concurrents d un système d exploitation peuvent être : Indépendants : les traitements qu ils effectuent ne sont pas liés ; Communicants : les processus ont besoin d échanger des données. Plusieurs raisons pour la communication : Le partage d information ; L accélération du calcul ; La modularité (séparation d un programme complexe en plusieurs processus). La communication peut se faire : Via une zone mémoire commune ; Par échange de messages ; Par fichiers. Nécessite de synchroniser les processus communicants. 41 / 58
Le problème des accès concurrents communicants partagent des données assurer la cohérence des données. Exemple : out indique le fichier à imprimer ; in indique où mettre en attente un fichier à imprimer ; Problème : si B interrompt A juste quand il lit la valeur de in. 42 / 58
Exclusion mutuelle Il faut interdire l accès simultané à une ressource partagée ; On parle d exclusion mutuelle entre processus concurrents ; L exclusion mutuelle ne concerne qu une portion de l exécution des processus : les sections critiques ; Il faut assurer que : On n a jamais deux processus simultanément en section critique ; La solution ne dépend pas de la vitesse relative des processus ; Un processus suspendu hors section critique ne bloque pas les autres ; Tout processus finit par rentrer en section critique. 43 / 58
Exclusion par verrou Si verrou=1 alors la ressource est utilisée par un autre processus donc on attend ; Si verrou = 0 le processus met à 1 et utilise la ressource ; La variable verrou doit être commune aux processus coopérants ; Problème : Attente active gaspillage du temps processeur ; 2 processus en section critique si interruption/préemption au point "A". 44 / 58
Exclusion par alternance while (TRUE) { while ( t o u r! = 0 ) { s e c t i o n _ c r i t i q u e ( ) ; t o u r =1; s e c t i o n _ n o n c r i t i q u e ( ) ; } while (TRUE) { while ( t o u r! = 1 ) { s e c t i o n _ c r i t i q u e ( ) ; t o u r =0; s e c t i o n _ n o n c r i t i q u e ( ) ; } Le processus n rentre en section critique si tour = n ; En fin de section critique il indique que c est le tour de l autre processus ; Problèmes : Attente active ; Un processus (P1) peut bloquer l autre (P2) sans être (P1) en section critique. Ex : si la section non critique de P1 est très longue. 45 / 58
Les sémaphores Proposés en 1965 par E.W. Dijsktra ; Un sémaphore est un compteur muni de deux opérations : P(s)/wait(s) (prendre) : Si cpt(s) > 0 alors cpt(s) = cpt(s)-1 Sinon processus mis en attente de s V(s)/signal(s) (rendre) : cpt(s)=cpt(s)+1 liberer un processus en attente de s Toute opération sur un sémaphore est atomique (ininterruptible). 46 / 58
Exclusion par sémaphore Exemple : 3 tâches qui désirent utiliser une ressource commune (une imprimante) ; à synchroniser partagent un sémaphore ; Sémaphore binaire : le compteur vaut 0 ou 1 ressource unique, pas d accès simultané. 47 / 58
Sémaphore à compte Exemple : un consommateur et plusieurs producteurs ; Sémaphore à compte : cpt(s) varie entre 0 et un certain n (ici, n = 6). 48 / 58
Problème : Sémaphores : ressources multiples Tâche 1 écrit dans tampon 1, tâche 2 écrit dans tampon 2 ; Tâche 3 lit ces zones lorsqu elles sont toutes deux remplies ; Tâche 3 ne peut pas lire si tâche 1 ou tâche 2 écrit ; Tâche 1 et la tâche 2 ne peuvent pas écrire tant que leur zone tampon respective n a pas été lue. 49 / 58
Solution : Sémaphores : ressources multiples 50 / 58
Interblocage Soit deux processus P0, P1, tels que P0 est plus prioritaire que P1 et P0 commence un peu plus tard que P1. 1 P1 exécute wait(s2), qui est alors non bloquant. 2 A ce moment, P1 est interrompu par P0 qui exécute wait(s1) (non bloquant) puis wait(s2) (bloquant!). 3 P1 reprend donc la main et exécute wait(s1) (bloquant aussi!) 4 Interblocage : les processus s attendent mutuellement. 51 / 58
Un classique : philosophes et spaghetti Un philosophe a deux activités : manger ou penser ; Un philosophe mange des spaghetti avec 2 fourchettes ; Il n y a qu une fourchette par personne... Comment assurer le bon déroulement du repas? 52 / 58
Sémaphore et inversion de priorité Une erreur de ce type est à l orignie du crash du rover sur Mars. 53 / 58
Protocole d héritage de priorité Solution à l inversion de priorité : A l entrée en section critique : une tâche hérite de la plus haute priorité des tâches concurrentes sur cette section ; A la sortie de la section critique : la tâche retrouve sa priorité normale ; Limitations : N évite pas les deadlocks ; Dans le cas d une chaîne de blocage le changement de priorité peut amener un fort délai sur la tâche de haute priorité. 54 / 58
Communication par messages Dans le cas de systèmes distribués (mémoires distinctes) : On doit synchroniser des processus distants les uns des autres ; On utilise un système d échange de message : Envoi du message : sendmsg(destinataire, message) ; Réception du message : rcvmsg(expéditeur, message). Principaux modes d échange de messages possibles : Boîte aux lettres ; Rendez-vous. 55 / 58
Messages par boîte aux lettres Un producteur poste dans la boîte et continue ses traitements sans attendre ; Le consommateur relève le courrier quand il veut ; Questions : Quelle dimension pour la boîte aux lettres? Que faire lorsque la boîte est pleine : ignorer ou écraser? 56 / 58
Messages par rendez-vous Pas de mémoire tampon ; Le send et le receive sont synchronisés : Si send avant receive alors send bloquant ; Si receive avant send alors receive bloquant. Avantages : Economise la mémoire ; Pas de pertes de données. Inconvénient : ralentit les processus s ils ne vont pas au même rythme. 57 / 58
Echange de messages : problèmes classiques Réseau imparfait possibilité de perte de message ; Côté producteur : s assurer que le message est bien arrivé (acquittement) ; Côté consommateur, si aucune donnée n arrive : Continuer avec une donnée ancienne? Attendre l arrivée d une nouvelle donnée? 58 / 58