Gestion des Processus



Documents pareils
Cours de Systèmes d Exploitation

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Cours A7 : Temps Réel

Cours Programmation Système

Introduction aux Systèmes et aux Réseaux

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Partie 7 : Gestion de la mémoire

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Problèmes liés à la concurrence

Les processus légers : threads. Système L3, /31

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Chapitre 4 : Exclusion mutuelle

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Un ordonnanceur stupide

gestion des processus La gestion des processus

Gestion des processus

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Chapitre 4 : Outils de communication centralisés entre processus

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

1 Mesure de la performance d un système temps réel : la gigue

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Exécutif temps réel Pierre-Yves Duval (cppm)

Systèmes d exploitation Gestion de processus

Architecture des ordinateurs

Ordonnancement temps réel

Synchro et Threads Java TM

Introduction à la programmation concurrente

L exclusion mutuelle distribuée

Programmation système en C/C++

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

Support de cours système d exploitation

Cours de Base de Données Cours n.12

On appelle variable condition une var qui peut être testée et

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes

Cours 6 : Tubes anonymes et nommés

Qu'est-ce qu'un processus: Définitions

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Introduction à la Programmation Parallèle: MPI

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Métriques de performance pour les algorithmes et programmes parallèles

Le langage C. Séance n 4

Cours Bases de données 2ème année IUT

Structure fonctionnelle d un SGBD

Gestion des transactions et accès concurrents dans les bases de données relationnelles

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Système de Gestion de Fichiers

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Temps Réel. Jérôme Pouiller Septembre 2011

Gestion distribuée (par sockets) de banque en Java

Introduction : les processus. Introduction : les threads. Plan

Introduction au langage C

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Solutions du chapitre 4

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Démarrer et quitter... 13

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Licence Sciences et Technologies Examen janvier 2010

Programmation d Applications Concurrentes et Distribuées (INF431)

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

SYSTÈME DE GESTION DE FICHIERS

SPF FIN. Patris Spécification de Use Case: 15-UC01 Obtenir de l'information patrimoniale. Version 1.1

Analyse du temps de réponse des systèmes temps réel

ACTIVITÉ DE PROGRAMMATION

PROJET 1 : BASE DE DONNÉES REPARTIES

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Conception des systèmes répartis

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

TP3 : Manipulation et implantation de systèmes de fichiers 1

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Bases de données Cours 1 : Généralités sur les bases de données

Threads. Threads. USTL routier 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

GPA770 Microélectronique appliquée Exercices série A

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Programmation système de commandes en C

Programmation C. Apprendre à développer des programmes simples dans le langage C

Les structures de données. Rajae El Ouazzani

Bases de données avancées Concurrence d'accès et reprise

Network musical jammin

Ordonnancement temps réel

PROGRAMMATION EVENEMENTIELLE sur EXCEL

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Réplication des données

Gestion répartie de données - 1

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Installation et utilisation du client FirstClass 11

Transcription:

Plan Gestion des Processus Concept de processus Ordonnancement Ryan Cassel cassel@limsi.fr Synchronisation Université Paris XI 2 de Tanenbaum Pour préparer un gateau: Recette <-> Programme Ingrédients <-> Données Ustensiles <-> Ressources Pâtissier <-> Processeur Processus:activité qui consiste à préparer le gateau: Lire la recette Mélanger les ingrédients Scénario 1: Le pâtissier se fait piquer par une guêpe Suspendre la préparation du gâteau Basculer vers le processus «Mettre une pommade pour calmer la douleur» Reprendre la préparation du gâteau Scénario 2: Il faut préparer un 2è gâteau Pas besoin de prendre une autre recette Seulement ajouter des ingrédients Mettre au four 3 4 Processus:définition Introduit dans les années 60 avec MULTICS Processus: un programme en cours d exécution + son contexte d exécution Un processus possède: Un espace d adressage qui contient : Le programme Ses données Sa pile (stack) PCB Des registres : Compteur ordinal Pointeur de pile Bloc de Contrôle de Processus Représentation interne d un processus : PCB 5 6 Etats d un processus Etats d un processus Un processus peut changer d état: Nouveau: le processus est en cours de création En cours d exécution: les instructions sont en train d être exécutées. En attente:le processus est en attente d un événement Prêt: le processus attend pour être exécuté Terminé: le processus a fini son exécution 7 8

9 Etats d un processus Le SE détermine et modifie l état d un processus en fonction: d événements internes au processus: Demande d E/S (passage de «en exécution» à «en attente» d événements externes, provenant du SE: Attribution de ressource (passage de «en attente» à «prêt») Opérations sur les processus Ensemble minimum d opérations réalisées par le SE: Création et destruction Mise en attente et réveil Suspension et reprise Modification de la priorité 10 Création Création Un processus peut en créer un autre: Processus père et fils Structure partiellement ordonnée: 11 Dans UNIX, primitive système fork(); Duplique le processus en cours pour créer un processus identique au premier Retourne 0 si on se trouve dans le fils le PID du fils si nous nous trouvons dans le père -1 en cas d erreur nécessité de modifier son code pour exécuter un autre programme avec les primitives exec: int execv(const char * app,const char * argv[]); app : chemin complet de l application, le dernier élément est NULL argv[] : paramètre à donner à l application int execl(const char * app,const char * arg, ); app : chemin complet de l application arg : paramètre sous forme d une liste d argument, termine par pointeur NULL. 12 Destruction Mise en attente et réveil Un processus fils peut terminer de différentes façons: Normalement, après exécution de sa dernière instruction Auto-destruction (exit dans UNIX) Détruit par un autre processus (kill dans UNIX) Processus détruit: n existe plus pour le SE Ressources libérées Bloc de contrôle effacé 13 Si un processus demande des ressources (autres que le CPU) non disponibles, il est mis dans l état «en attente» Si elles deviennent disponibles: réveil et passage à l état «prêt»: le processus dispose des ressources dont il a besoin sauf du CPU. 14 Suspension et reprise Passage à l état «suspendu»: Progression figée Arrêt de l exécution Entraîne la sauvegarde de son contexte Lors de la reprise: Passage à l état «prêt» ou «en attente» Modification de la priorité Très simple: Modification d une information dans le bloc de contrôle du processus Utile pour l algorithme d ordonnancement 15 16

L ordonnancement? L ordonnancement: définition et objectifs Multiprogrammation entraîne une concurrence des processus Sur un monoprocesseur, quel processus utilisera le CPU? La réponse : c est l ordonnanceur (scheduler) et son algorithme d ordonnancement (scheduling algorithm) qui le déterminent 18 Avant et maintenant Avant : un job à la fois. Un processus se termine et on en démarre un autre. les processeurs : pas assez rapide pour traiter les informations de l utilisateur Maintenant : processeurs beaucoup plus rapides que l utilisateur. Peut-on faire utiliser le processeur par un autre processus pendant que l utilisateur réfléchit? Plusieurs utilisateurs, plusieurs processus et il faut essayer de satisfaire tout le monde, le plus vite possible. Comment faire? : un utilisateur rédige un mail, l envoie et ferme l application Si la fermeture prend 2 secondes, l ordinateur est considéré comme lent. Si la fermeture se fait instantanément et le mail à envoyer retardé de 2 secondes, l utilisateur est satisfait. L ordonnanceur doit donc bien choisir 19 20 Quand ordonnancer? Critères d ordonnancement création d un processus fils processus terminé processus en sommeil quand une interruption d E/S se produit Dans tous les cas : A qui donne-t-on le droit de s exécuter? 21 Efficacité : % d utilisation du CPU Rendement : Nb de processus exécutés en un temps donné Temps d exécution : le plus rapide possible Interactif : faible temps de réponse Equité : chaque processus a droit au même temps processeur 22 Types d ordonnanceur Objectifs des ordonnanceurs Non préemptif sélectionne un processus qui s exécute jusqu à blocage ou libération volontaire du processeur Préemptif sélectionne un processus qui s exécute pendant un délai déterminé si le processus toujours en cours après ce délai alors suspendu et un autre est choisi Tous les systèmes Equité : attribuer un temps équitable à chaque processus et respecter la politique du système (sécurité, stockage, ) Equilibré : toutes les parties du système doivent être occupées 23 24

25 Objectifs des ordonnanceurs Systèmes interactifs Temps de réponse : répondre rapidement aux requêtes Répondre aux attentes des utilisateurs Systèmes temps réel respecter les délais prévisibilité : éviter la dégradation de la qualité dans les systèmes multimédias L ordonnancement: les algorithmes First In First Out (non préemptif) Shortest job first (non préemptif) Processus Temps d exécution P1 24 ms P2 3 ms P3 3 ms Temps d attente moyenne (AWT): P1, P2 et P3 : (24+27+30)/3 = 27 ms P2, P3 et P1 : (3+6+30)/3 = 13 ms FIFO est correct mais très forte dépendance avec le temps d exécution 27 Processus Temps d exécution P1 8 ms P2 4 ms P3 4 ms P4 4 ms AWT = (4+8+12+20)/4 = 11 ms le S.E. doit connaître le temps d exécution du processus AWT optimal uniquement si tous les jobs sont soumis en même temps 28 Shortest remaining time next (préemptif) Le S.E choisit le processus dont le temps d exécution restant est le plus court Il faut connaître le temps d exécution à l avance Favorise les jobs courts Tourniquet (Round Robin) Le processeur fait tourner les processus dans une file A chaque processus est assigné un intervalle de temps (quantum) pendant lequel il s exécute A la fin de ce quantum : si le processus n est pas terminé, il est placé en fin de file Sinon un autre processus passe en exécution immédiatement sans attendre la fin du quantum, le processus terminé est supprimé Problème : comment fixer le quantum? si 1ms pour basculer et quantum de 3ms = 4ms alors 20% de temps de gaspillé si quantum = 100ms alors 1% de perdu mais si 10 utilisateurs qui appuient sur Entrée : 10 processus dans la file, le deuxième doit attendre 100ms et le dernier 1 seconde 29 30 Par priorité Files multiniveaux Existence d une file de processus d une priorité donnée Chaque file est gérée par l algorithme du Round Robin La file de priorité maximale traitée en premier Quand une file est vide, on traite la file de priorité inférieure Problème : il faut revoir les priorités sinon Plusieurs files qui possèdent chacune leur algorithme d ordonnancement Chaque file a un but Une file pour les jobs de 1er plan Une file pour les jobs de 2ème plan Chaque processus est assigné à une file lors de sa création Variante : migration d un processus d une file vers une autre famine dans les priorités basses 31 32

Synchronisation Synchronisation Un processus peut être coopératif ou indépendant. indépendant : s il n affecte pas les autres processus ou ne peut pas être affecté par eux. Un processus qui ne partage pas de données avec d autres processus est indépendant Un processus est coopératif s il peut affecter les autres processus en cours d exécution ou être affecté par eux Un processus qui partage des données avec d autres processus est un processus coopératif données partagées par les processus coopératifs : en mémoire principale ou en mémoire secondaire dans un fichier Risque d incohérence des données 34 Mise à jour d un compte bancaire d un client. Compte: fichier avec solde courant du client Procedure crediter_compte(entier numero_client, entier somme) entier solde ; debut /* lecture du solde dans le fichier du client */ solde=lire_dans_fichier(numero_client); solde = solde + somme ; /* écrire dans le fichier le nouveau solde */ ecrire_dans_fichier(numero_client, solde) ; fin; 35 Si la procédure est exécutée simultanément par deux processus P0 et P1 dans un système d exploitation à temps partagé. Sans faire d hypothèse sur la durée du quantum, on peut faire les exécutions suivantes : P0 : crediter_compte( 1233, 1000) solde = lire_dans_fichier(1233) ; /* P0 bloqué car P1 s exécute */ solde=solde+1000 ; Ecrire_dans_fichier(1233,solde) ; P1 : crediter_compte( 1233, 500) solde = lire_dans_fichier(1233) ; /* P1 bloqué car P0 s exécute */ solde=solde+500 ; Ecrire_dans_fichier(1233,solde) ; Comme le montre cet exemple, le résultat final n est pas le résultat escompté (le client a perdu 1000 euros dans cette affaire). 36 Sections critiques (S.C) Dans l exemple: problème dû aux conflits d accès au même fichier car accès en lecture et en écriture. Si seulement accès en lecture pas de problème Sections critiques (S.C) Comment éviter ces conflits d accès? Il faut trouver un moyen d interdire la lecture ou l écriture des données partagées à plus d un processus à la fois. Il faut une exclusion mutuelle qui empêche les autres processus d accéder à des données partagées si cellesci sont en train d être utilisées par un processus. On appelle section critique la partie d un programme où se produit le conflit d accès. 37 Dans l exemple précédent, il faut obliger le processus P1 à attendre la terminaison de P0 avant d exécuter à son tour la même procédure. 38 Pour une bonne coopération entre processus Pour que les processus qui partagent des objets (données en mémoire centrale ou dans fichiers) puissent coopérer correctement et efficacement, quatre conditions sont nécessaires : 1. Exclusion mutuelle : deux processus ne peuvent être en même temps en section critique 2. Famine : aucun processus ne doit attendre trop longtemps avant d entrer en section critique 3. Interblocage (deadlock) : aucun processus suspendu en dehors d une section critique ne doit bloquer les autres pour y entrer. 4. Aucune hypothèse ne doit être faite sur les vitesses relatives des processus Exclusion mutuelle Un processus désirant entrer dans une section critique doit être mis en attente si la section critique n est pas libre Un processus quittant la section critique doit le signaler aux autres processus Protocole d accès à une section critique : <entrer_section_critique> /* attente si SC non libre */ <Section_Critique> /* Un seul processus en SC */ <Quitter_Section_Critique> 39 40

41 Exclusion mutuelle L attente peut être : Active : procédure entrer_section_critique=boucle dont la condition est un test qui porte sur des variables indiquant la présence ou non d un processus en Section critique Non active : le processus passe dans l état endormi et ne sera réveillé que lorsqu il sera autorisé à entrer en section critique Techniques Désactivation des interruptions Variables de verrou Alternance stricte Algorithme de Peterson 42 1ère Solution : Masquage des interruptions Moyen le plus simple :chaque processus masque les interruptions avant d entrer en section critique l interruption horloge qui permet d interrompre un processus lorsqu il a épuisé son quantum (temps CPU) sera ignorée plus de commutation de processus Lorsqu un processus quitte la section critique, doit restaurer les interruptions Solution dangereuse en mode utilisateur : Si dans un processus, le programmeur a oublié de restaurer les interruptions, c est la fin du système 43 2ème solution : les variables de verrouillage Un verrou est une variable binaire partagée qui indique la présence d un processus en Section Critique : si verrou = 0 alors la section critique est libre si verrou = 1 alors la section critique est occupée Procédure entrer_section_critique () : void entrer_section_critique () { if (verrou == 0) verrou=1 ; else while (verrou == 1) ; /* attente active */ verrou=1 ; Procédure quitter_section_critique () void quitter_section_critique () { verrou=0 ; L exclusion mutuelle n est assurée que si le test et le positionnement du verrou est ininterruptible (sinon le verrou constitue une section critique) 44 3ème Solution : l alternance Solution de Peterson (1981) On utilise une variable partagée (tour) qui mémorise le numéro du processus autorisé à entrer en section critique d utilisation pour N processus : void entrer_section_critique (int MonNumero) { while (tour!= monnumero) ; /* attente active */ void quitter_section_critique () { tour=(monnumero +1) % N ; /* au suivant! */ Avantage : simple et facile à utiliser Inconvénient : problème de famine, un processus possédant tour, peut ne pas être intéressé immédiatement par la section critique 45 Pour le cas de deux processus P0 et P1 : #define FAUX 0 #define VRAI 1 #define N 2 int tour ; /* à qui le tour */ int interesse[n] ; /* initialisé à FAUX */ void entrer_section_critique (int process) /* n de pro cessus : 0 ou 1*/ { int autre ; autre = 1-process ; interesse[process]=vrai ; /* indiquer qu on est intéressé */ tour = process ; /* lever le drapeau */ while (tour == process && interesse[autre] == VRAI) ; /* attente active */ void quitter_section_critique(int process) { interesse[process]=faux ; 46 Solution de Peterson (1981) Solution évitant l attente active Pourquoi l exclusion mutuelle est assurée par cette solution? Réponse : Considérons la situation où les deux processus appellent entrer_section_critique simultanément. Les deux processus sauvegarderont leur numéro dans la variable tour. La valeur sauvegardée en dernier efface la première. Le processus qui entrera en SC est celui qui a positionné la valeur tour en premier. Gros inconvénient : elle est basée sur l attente active ; un processus ne pouvant entrer en SC Idée : un processus ne pouvant entrer en section critique, passe dans un état endormi, et sera réveillé lorsqu il pourra y entrer. nécessite un mécanisme de réveil Le SE fournit deux appels système : Sleep (dormir) qui suspend le processus appelant Wakeup (réveiller) qui réveille le processus donné en argument utiliserait l UC inutilement. 47 48

49 Solution évitant l attente active Suivre le nombre d informations? Application au modèle Producteur/Consommateur Les deux processus coopèrent en partageant un même tampon (buffer) Le producteur produit des objets qu il dépose dans le tampon Le consommateur retire des objets du tampon pour les consommer Conflits Le producteur veut déposer un objet alors que le tampon est déjà plein Le consommateur veut retirer un objet du tampon alors que celui-ci est vide Le producteur et le consommateur ne doivent pas accéder simultanément au tampon Suppose que le nombre d informations soit stocké dans un variable Count Soit N la taille du buffer Le Producteur : Si Count == N alors Producteur en sommeil Il ajoute l information; Count++; Si Count == 1 alors Réveille le consommateur Le Consommateur : Si Count == 0 alors Consommateur en somme Il retire l information; Count--; Si Count == N-1 alors Réveille le producteur 50 Analyse de cette solution Réveils perdus L accès à la variable compteur n est pas protégé, ce qui peut entraîner des incohérences dans les valeurs prises par cette variable Réveils perdus : c est le principal défaut de ce mécanisme. Un signal wakeup envoyé à un processus qui ne dort pas (encore) est perdu. 51 Consommateur lit Count à 0 et le S.E. bascule sur le producteur Producteur insère une information. Lit Count à 1 donc réveille le consommateur. Le signal est perdu car le consommateur ne dort pas S.E. bascule sur le consommateur Le consommateur a lu 0 donc s endort Le producteur finit par remplir le buffer et s endort 52 Solution Utilisation de sémaphore 53