Les processus DESS IAS : 2004 2005 1
Explication Stricto sensus, un processeur n exécute qu un seul programme à la fois Mais bascule rapidement entre 2 processus Résultat : impression de simultanéité Vrai simultanéité = multiprocesseur ou un cluster DESS IAS : 2004 2005 2
processus vs programme Exemple : faire un gâteau la recette = le programme les ingrédients = les données le cuisinier = le processeur Processus = activité qui consiste à concevoir le gâteau : lire la recette mélanger les ingrédients la cuisson DESS IAS : 2004 2005 3
La gestion d un processus Exemple : le cuisinier se fait piquer par une guêpe suspendre la conception du gâteau (sauvegarde de l état en cours) bascule vers le processus : administrer un anti-dote donc processus terminé reprise du processus : continuer le gâteau DESS IAS : 2004 2005 4
De père en fils Premier processus crée par le système processus init qui créer les processus démons Un processus crée par un autre processus le processus créateur = le père le processus créé = le fils Visualisation des processus en cours Sous Unix : commande ps Sous Windows 95-Me : Ctrl-Alt-Del une fois Sous Windows 2000-XP : gestionnaire des taches DESS IAS : 2004 2005 5
Création d un processus Appel système fork() déclaré dans <unistd.h> Crée un processus fils Copie des données du père Copie de l environnement Table descripteur de fichier Identifiant du processus en cours appel système getpid(); Identifiant du processus père au processus courant appel système getppid(); DESS IAS : 2004 2005 6
Identification processus/utilisateur Existence de 3 identifiants UID réel celui qui a lancé le programme uid_t getuid(void) UID effectif privilèges accordés au processus uid_t geteuid(void) UID sauvé sauvegarde de l ancien UID effectif s il est modifié uid_t getreuid(void) (>=Linux 2.2) uid_t défini dans <sys/types.h> getuid et geteuid définis dans <unistd.h> DESS IAS : 2004 2005 7
Identification processus/groupe Existence de 3 identifiants GID réel groupe de celui qui a lancé le programme gid_t getgid(void) GID effectif privilèges accordés au processus gid_t geteguid(void) GID sauvé sauvegarde de l ancien GID effectif s il est modifié gid_t getregid(void) (>=Linux 2.2) gid_t défini dans <sys/types.h> getgid et getegid définis dans <unistd.h> DESS IAS : 2004 2005 8
Etat d un processus Exécution ou Running (R) processus en cours de fonctionnement Sommeil ou Sleeping (S) processus en attente d un évènement extérieur 2 types de sommeil : interruptible (par un signal) non interruptible (uniquement interrompu par une interruption matériel) Arrêt ou Stopped (T) processus arrêté par un signal. Il faut un signal de redémarrage pour qu il reparte Zombie (Z) processus terminé mais son père n a pas récupéré son code de retour Prêt : Running ou Sommeil DESS IAS : 2004 2005 9
Succession des Etats fork Sommeil Signal ou interruption Attente d un événement Ex écution Fin d un processus Zombie Signal SIGSTOP Signal SIGCONT Lecture code de retour Arrêté DESS IAS : 2004 2005 10
Exécution d un nouveau programme Comme fork() duplique le processus en cours nécessité de modifier son code pour exécuter un autre programme 1er solution : utilise le fork() 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 2ème solution : Famille des commandes 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. DESS IAS : 2004 2005 11
Conditions de concurrence Exemple : un spool d impression Out : prochain slot à imprimer (=6) In : prochain slot libre (=7) A veut imprimer, lit In et enregistre 7 B veut imprimer, lit In et enregistre 7 A envoie au spool, donc dans le slot 7 et incrémente In (=8) B fait de même, donc écrase le slot 7 et incrémente In (=8) Le spool reste cohérent, il va imprimer 7 mais A n aura jamais sont impression DESS IAS : 2004 2005 12
Solution : les sections critiques (S.C) L exclusion mutuelle : si une ressource est occupé alors celle-ci n est pas utilisable. 4 conditions à assurer : Au plus un seul processus en S.C. Aucune supposition sur la vitesse et le nombre de processus ne doit être fait Aucun processus à l extérieur de la S.C. ne doit bloquer un processus demandeur Tout processus désirant entrer en S.C. doit y accéder au bout d un temps fini DESS IAS : 2004 2005 13
Exclusion mutuelle avec attente active Désactivation des interruptions Variables de verrou Alternance stricte Algorithme de Peterson DESS IAS : 2004 2005 14
Les processus La concurrence : les sémaphores DESS IAS : 2004 2005 15
Les sémaphores (Edsger Dijkstra) Un sémaphore S (le plus simple) est un drapeau qui est soit levé soit baissé Avant d entrer en S.C, un processus attend que le drapeau soit levé, puis le baisse : opération P () A la sortie de la S.C., le processus lève le drapeau opération V() et le S.E réveille un processus en attente DESS IAS : 2004 2005 16
Les sémaphores (2) Les opérations P() et V() sont atomiques P() : le test et la décrémentation sont atomiques V() : l incrémentation est atomique 2 opérations atomiques ne peuvent être exécutées simultanément En aucun cas, 2 processus ne verront le drapeau levé et l abaisseront DESS IAS : 2004 2005 17
Les sémaphores (System V) S entier entre 0 et n P(n) : bloquante si S < n demandé sinon décrémente S de n V(n) : incrémente S de n DESS IAS : 2004 2005 18
Le problème des producteursconsommateurs 2 processus partagent un buffer commun de taille fixe le producteur place des informations le consommateur les retire Les problèmes : buffer est plein et le producteur veut placer une information solution : passage en sommeil (ou attente) et réveille quand le consommateur aura retiré une information buffer est vide et le consommateur veut retirer une information solution : passage en sommeil et réveille quand une information est placée DESS IAS : 2004 2005 19
Suivre le nombre d information? 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 Ajoute l information; Count++; Si Count == 1 alors Réveille le consommateur Le Consommateur : Si Count == 0 alors Consommateur en sommeil Retire l information; Count--; Si Count == N-1 alors Réveille le producteur DESS IAS : 2004 2005 20
Où est la concurrence? 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 fini par remplir le buffer et s endort DESS IAS : 2004 2005 21
Un problème demeure Variable partagée donc utilisation d un mémoire partagée Comment faire sans mémoire partagée? Les processus doivent communiquer DESS IAS : 2004 2005 22
Communication interprocessus (IPC) 3 types de problèmes : comment échanger des informations sans mémoire partagée? utilisation des tubes (pipe) ou sockets DESS IAS : 2004 2005 23
Les processus l ordonnancement : définition et objectifs DESS IAS : 2004 2005 24
L ordonnancement? Multiprogrammation entraîne une concurrence des processus Sur un monoprocesseur, quel processus utilisera le CPU? La réponse : l ordonnanceur (scheduler) et son algorithme d ordonnancement (scheduling algorithm) qui le détermine DESS IAS : 2004 2005 25
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 : processeur sont beaucoup plus rapide que l utilisateur. Peut-on faire utiliser le processeur par un autre processus pendant que l utilisateur réfléchisse? Plusieurs utilisateurs, plusieurs processus et il faut essayer de satisfaire tout le monde, le plus vite possible DESS IAS : 2004 2005 26
Comment faire? Exemple : un utilisateur rédige un mail, l envoie et ferme l utilitaire d envoie de mail Si la fermeture prend 2 secondes, l ordinateur est considéré comme lent. Si la fermeture se fait instantanément et que le mail à envoyer est retardé de 2 secondes, l utilisateur est satisfait. L ordonnanceur doit donc bien choisir DESS IAS : 2004 2005 27
Quand ordonnancer? 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? DESS IAS : 2004 2005 28
Critères d ordonnancement % d utilisation du CPU Nb de processus exécutés en un temps donné Temps pour exécuter un processus Temps d attente d un processus dans la file prêt Système interactif : temps de réponse pour l S.E. pour répondre à l utilisateur DESS IAS : 2004 2005 29
Types d ordonnanceur Non préemptif sélectionne un processus puis il s exécute jusqu à ce qu il bloque ou qu il libère volontairement le processeur Préemptif sélectionne un processus puis il s exécute pendant un délai déterminé Si le processus toujours en cours après ce délai alors suspendu et choisi un autre DESS IAS : 2004 2005 30
Objectifs des ordonnanceurs 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 Systèmes de traitements par lots optimiser le nombre de jobs à l heure réduire le délai entre soumission et achèvement, temps d attente ou de rotation optimiser l utilisation du processeur DESS IAS : 2004 2005 31
Objectifs des ordonnanceurs (2) Systèmes interactifs Temps de réponse : répondre rapidement aux requêtes Répondre aux attentes des utilisateurs et leur soupçon Systèmes temps réel respecter les délais prévisibilité : éviter la dégradation de la qualité dans les systèmes multimédias DESS IAS : 2004 2005 32
Les processus L ordonnancement : les algorithmes DESS IAS : 2004 2005 33
First In First Out (non préemptif) Processus P1 P2 P3 Temps d exécution 24 ms 3 ms 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 DESS IAS : 2004 2005 34
Shortest job first (non préemptif) Processus P1 P2 P3 P4 Temps d exécution 8 ms 4 ms 4 ms 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 DESS IAS : 2004 2005 35
Shortest remaining time next (préemptif) Le S.E choisi 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 DESS IAS : 2004 2005 36
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 il est supprimé Problème : décider de la quantité du quantum? si 1ms pour basculer et quantum = 4ms alors 20% de temps de gaspiller si quantum = 100ms alors 1% de perdu mais si 10 utilisateurs qui appuie sur Entrée : 10 processus dans la file, le deuxième doit attente 100ms et le dernier 1 seconde DESS IAS : 2004 2005 37
Par priorité Existence d une file de processus d une priorité donnée Chaque file est géré par l algorithme du Round Robin Le file de priorité maximal traité en premier Quand une file est vide, on traite la file de priorité inférieure Problème : il faut revoir les priorités sinon famine dans les priorités basses DESS IAS : 2004 2005 38
Files multi niveaux Plusieurs files qui possèdent chacune leur algorithme d ordonnancement Chaque file a un but Une pour les jobs de 1er plan Une 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 DESS IAS : 2004 2005 39