Cours Systèmes d’exploitation: Gestion des Processus
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
1
1- Processus
le concept de base de tout système
- Un processus est un ensemble d'octets (en langage machine) en cours d'exécution - C'est l'exécution d'un programme par le système. - le processus est d’exploitation. - Un processus est une entité dynamique correspondant à l’exécution d’une suite d’instructions : un programme qui s'exécute, ainsi que ses données, sa pile d’exécution, son compteur ordinal, son pointeur de pile et les autres contenus de registres nécessaires à son exécution. Remarque: à ne pas confondre un processus (aspect dynamique, exécution qui peut être suspendue, puis reprise), avec un programme exécutable (aspect statique: fichier sur disque).
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
2
2- Multiprogrammation
-Un système d'exploitation doit en général exécuter plusieurs programmes en même temps. Comme il n'a (la plupart du temps) qu'un processeur, il résout ce problème grâce à un pseudo parallélisme: Il traite une tâche à la fois, s'interrompt et passe à la suivante. -La commutation de tâches étant très rapide, elle donne l'illusion d'effectuer un traitement simultané. -La multiprogrammation se base sur le basculement de la CPU entre plusieurs processus qui s’exécutent pendant des périodes de temps très réduites.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
3
3- Généalogies des processus:
- Un processus est généralement créés par un autre processus. Il peut lui même lancer ensuite d'autres processus. - Le processus créateur est appelé «père », et les processus créés «fils ». Les processus peuvent donc se structurer sous la forme d'une arborescence.
seul
processus,
- Au lancement du système, il n'existe qu'un appelé processus « init », qui est l'ancêtre de tous les autres. C’est le seul processus sans père au moment de sa création.
P1
P2
P3
P4
Eléments de TP: -Commandes ps: liste de processus -Commande pstree: arborescence des processus
P5
P6
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
4
4- Espace mémoire d’un processus Les processus sont composés d'un espace de travail (espace d'adressage) en mémoire formé de 3 segments et accessible par les programmes utilisateur :
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
5
Un processus est donc un «programme» qui s'exécute et qui possède : - son propre compteur ordinal (@ de la prochaine instruction exécutable), -ses registres -ses variables.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
6
Le noyau maintient une table en mémoire, appelée « table des processus », pour gérer l'ensemble des processus (ici P1, ..., P5, ...). Elle contient la liste de tous les processus avec des informations concernant chacun d’entre eux. - Le nombre des emplacements dans cette table des processus est limité pour chaque système et pour chaque utilisateur
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
7
5- Contexte d’un processus l’ensemble des données qui Le contexte d’un processus est permettent de reprendre l’exécution d’un processus qui a été interrompu. Le contexte d’un processus comporte:
1. son état 2. son mot d’état (PSW) : comprend
- La valeur des registres actifs - Le compteur ordinal
3. les valeurs des variables globales statiques ou dynamiques 4. son entrée dans la table des processus 5. sa zone u 6. Les piles user et system 7. les zones de code et de données.
Le noyau et ses variables ne font partie du contexte d’aucun processus! L’exécution d’un processus se fait dans son contexte. Quand il y a changement de processus courant, il y a réalisation d’une commutation de mot d’état et d’un changement de contexte. Le noyau s’exécute alors dans le nouveau contexte.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
8
6- Commutation de mot d’état et interruptions - Ce sont des fonction fondamentales (de très bas niveau) pour un système d’exploitation. - Pour être exécuté et donner naissance à un processus, un programme et ses données doivent être chargés en mémoire centrale. Les instructions du programme sont transférées une à une de la mémoire centrale sur l’unité centrale ou elles sont exécutées. - L’unité centrale comprend des circuits logiques et arithmétiques (qui efféctuent les instructions) et des mémoires appelées registres tels que:
* L’accumulateur: reçoit le résultat d’une instruction * le registre d’instruction: contient l’instruction en cours *le compteur ordinal: adresse de la prochaine instruction en mémoire à exécuter * le registre d’adresse * les registres de données: utilisés pour lire ou écrire une donnée à une adresse spécifiée en mémoire. * les registres d’´etat du processeur: actif, mode (user/system), retenue, vecteur d’interruptions, ..) * les registres d’´etat du processus :droits, adresses, priorités, .. 9
Beyaoui Walid
Licence appliquée en TI- Cours Systèmes d'exploitation
6- Commutation de mot d’état et interruptions (suite) Ces registres forment le contexte d’unité centrale d’un processus. A tout moment, un processus est caractérisé par ces deux contextes :
- le contexte d’unité centrale qui est composé des mêmes données pour tous les processus -le contexte qui dépend du code du programme exécuté. Pour pouvoir exécuter un nouveau processus, le système doit sauvegarder le contexte d’unité centrale du processus courant (mot d’´etat), puis charger le nouveau mot d’´etat du processus à exécuter: cette opération est appelée commutation de mot d’´etat. Elle utilise 2 adresses qui sont respectivement :
- l’adresse de sauvegarde du mot d’´etat - l’adresse de lecture du nouveau mot d’´etat
Le processus interrompu pourra ainsi reprendre exactement ou il avait abandonné.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
10
7- interruptions Une interruption est une commutation de mot d’´etat (de contexte) provoquée par un signal produit par le matériel. Ce signal étant la conséquence d’un événement extérieur ou intérieur, il modifie l’´etat d’un indicateur qui est régulièrement testé par l’unité centrale. Une fois que le signal est détecté, il faut déterminer la cause de l’interruption. Pour cela on utilise un indicateur, pour les différentes causes, on parle alors du vecteur d’interruptions. On distingue trois grands types d’interruptions :
interventions de
(indépendantes du processus)
- externes l’opérateur, pannes, .. - déroutements: erreur interne dans l’exécution du processus courant (débordement de mémoire ,division par zéro,..) - appels systèmes: demande d’entrée-sortie par exemple. Généralement un numéro de priorité est affecté à un niveau d'interruption pour déterminer l'ordre de traitement lorsque plusieurs interruptions sont positionnées. L’horloge est l’interruption la plus prioritaire sur un syst`eme Unix.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
11
8-Processus et SE
● Plusieurs processus indépendants doivent pouvoir s'exécuter sans interférence -partage des ressources : processeur, mémoire, stockage... -isolation des processus (sécurité, fiabilité) ● l'inverse, les processus doivent pouvoir communiquer si leur programme le demande -mécanismes de Communication Inter-Processus: (IPC)
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
12
Publicité
9-Informations sur les processus : gestionnaire de tâches Windows
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
13
9-Informations sur les processus : gestionnaire de tâches Linux
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
14
10- Bloc de contrôle processus PCB :Process Control Block
informations sont dans une zone mémoire accessible
● Structure de données du SE contenant les informations sur un processus ● Ces uniquement par le noyau ● Pour obtenir des informations sur les processus, il est donc nécessaire de passer par des appels systèmes: getpid, getppid, getuid, geteuid, setuid...
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
15
11-Informations du PCB
1- Identité ●Identificateur de processus (PID): numéro unique (à un instant donné, mais réutilisable) ●Informations éventuellement processus enfants ●Information de droits: -utilisateur propriétaire du processus -utilisateur effectif (augmentation ou diminution de droits), exemples :
généalogie:
processus
(PPID),
parent
de
- droits d'administration « locale » - serveurs lancés par l'administrateur - serveur d'application
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
16
11-Informations du PCB
2- Exécution ●Etat du processus ●Contexte processeur: état des registres du processeur pour ce processus ●Autres informations d'ordonnancement
exemple : priorité
3- Ressources ● Informations sur la mémoire utilisée / utilisable: tables de pages (cf. cours gestion de la mémoire) ● Informations sur le temps passé: temps réel (d’exécution), temps utilisateur ● Liste des fichiers ouverts: fichiers classiques, périphériques, moyens de communication avec d'autres processus (pipe...) ● Autres ressources utilisées...
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
17
12-Exemple simplifié d’un processus
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
18
12-Exemple simplifié d’un processus (suite)
Ce processus a le numéro 36. Il a été lancé par l'utilisateur qui a 106 pour UID. Il est en train d'exécuter le programme 'cmd1'. Il a consommé 0.3 seconde, avec une priorité de 20. Son masque de création de fichier est 027. Son terminal de contrôle est /dev/term/c4. Son répertoire courant est /usr/c1.
0 :entrée standard 1 :sortie standard 2 :sortie standard d'erreur.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
19
13-Etats d’un processus - Selon les systèmes, le nombre et le nom des états peut varier. -Tous les systèmes comportent au minimum les trois états suivants : Élu ou Actif : - Le processus est en cours d’exécution par le processeur. -Si le processus épuise le temps qui lui est alloué par le SE, il est remis en file d’attente des prêts. -S’il a besoin d’une ressource non disponible (opérations sur les périphériques), il est mis en attente prolongée (Interruption : état bloqué) jusqu’à la libération de la ressource nécessaire. Eligible ou prêt: en attente de pouvoir s'exécuter sur le processeur (il passera alors à l’état Actif). Bloqué ou en attente: en attente d'un événement (interruption ou ressource). Dès sa libération il repasse à l’état Prêt
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
20
13-Etats d’un processus: transitions
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
21
14- Création des processus La création d’un processus peut se faire suite à:
-L’initialisation du système : au chargement du système il y’a création automatique du processus racine père de tous les processus utilisateurs (id=0) -Un processus peut lancer un autre processus, il en devient le parent, l’autre sera désigné comme processus fils. (Un processus père ne se termine que lorsque tous ses fils sont terminés). -Une requête de l’utilisateur (commande par exemple) -Initiation d’un travail en traitement par lot
La destruction d’un processus (et la libération de toutes ses ressources allouées a quatre causes possibles : -Arrêt normal : volontaire, lorsque le processus termine sa tâche. -Arrêt pour erreur : volontaire suite à une erreur pour une instruction illégale -Arrêt pour erreur fatale : involontaire tel que les mauvais paramètres de l’exécution du processus - Arrêt volontaire par un autre processus
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
22
14- Création des processus: sous Windows
les
sont données en
caractéristiques
●Appel système CreateProcess : crée un processus dont paramètres de l'appel système (10 paramètres) ● Exemple : STARTUPINFO si; // à renseigner PROCESS_INFORMATION pi; // utilisé en sortie bool succes = CreateProcess(0, "mon_prog.exe", 0, 0, FALSE, 0, 0, 0, &si, &pi);
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
23
14- Création des processus: sous Unix
● Appel système fork() : - duplique le processus courant avec toutes ses informations: copie de la zone mémoire du père (seul le PID et le PPID changent). A la création les 2 processus s’exécutent parallèlement, on ne connait pas lequel des processus continuera à s’exécuter avant l’autre. - retourne une valeur différente dans le processus père et le processus fils pour faire la distinction (0 dans le fils et le PID du fils dans le père) ● Exemple : int pid_fils = fork(); if (pid_fils == 0) // il s’agit du fils….. else // il s’agit du père……
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
24
14- Création des processus: sous Unix (suite)
● Si on souhaite que le fils exécute un autre programme que le père, on utilise un appel système de type exec qui remplace le programme courant par un autre programme ● Exemple : int pid_fils = fork(); if (pid_fils == 0) exec("chemin d’un autre programme");
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
Publicité
25
15- Ordonnancement des processus
P1 ; P2 ; ……… ; Pn
Chargement
En M.C
Mémoire
centrale
CPU
Exécution
Selon un ordre bien déterminé
Rôle de l'ordonnanceur : choisir, parmi tous les processus éligibles, lequel va devenir élu (utiliser la CPU pour s’exécuter). Stratégies / politiques d'ordonnancement: Algorithmes d’ordonnancement. Objectifs: - une bonne gestion du processeur (taux d'utilisation élevé de l'UC). - Augmenter le nombre de processus exécuté pendant une période - Minimiser le temps moyen d’exécution d’un processus - Minimiser le temps d’attente d’un processus (satisfaction des utilisateurs). - Minimiser les temps d’inactivité d’un processeur.
Beyaoui Walid
26
Licence appliquée en TI- Cours Systèmes d'exploitation
16- Algorithmes d’ordonnancement
Performance s des algorithmes d’ordonnancement:
•Temps de rotation d’un processus = date de fin d’exécution - date d’arrivée
•Temps de rotation moyen = ∑ Temps de rotation /nombre de processus
•Temps d’attente d’un processus = temps de rotation - durée d’exécution
•Temps moyen d’attente = ∑ temps d’attente / nombre de processus
•Rendement = durée totale d’exécution /nombre de processus
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
27
16- Algorithmes d’ordonnancement
1- Algorithme du premier venu premier servi (first come first serve : FCFS) : ● géré par une file d’attente FIFO (first in first out) ● Ordonnancement nom préemptif (pas de préemption) ● Quand l’unité centrale est libre, elle est allouée au processus en tête de la file d’attente des processus « prêt ».
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
28
16- Algorithmes d’ordonnancement
Exemple:
Processus
Temps CPU
P1
P2
P3
25
3
11
*Ordre d’exécution : P1 ; P2 ; P3.
P1
P2
P3
-Temps d’attente:
P1 0
P2 25
0 25 28 39 P3 28
Temps d’attente moyen = (25 + 28) / 3 = 17,66.
*Ordre d’exécution : P2 ; P3 ; P1. -Temps d’attente:
P1 14
P2 0
P3 3
Temps d’attente moyen = (14 + 3) / 3 = 5,66.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
29
16- Algorithmes d’ordonnancement l’algorithme FCFS n’est généralement pas optimal. Il dépend de l’ordre de l’arrivée du processus, ainsi que le temps d’exécution. Cet algorithme est particulièrement incommode pour les systèmes à temps partagés. ● Avantages : - simple, surcoût faible, équitable - assez efficace en multi-processeurs, pour des processus très fréquemment bloqués(gestions E/S) ● Inconvénient : - temps de réponse dépend du processus qui a la main: tant qu'il ne se bloque pas, les autres doivent attendre - pénalise les processus courts: proportion temps d'attente / temps d'exécution
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
30
16- Algorithmes d’ordonnancement
2- Algorithme du travail le plus court d’abord ou SJF (Shortest Job First) : ● Ordonnancement nom préemptif (pas de préemption) ● On donne toujours la main à celui qui met le moins de temps avant de se bloquer / terminer. ● Suppose d'avoir une connaissance / estimation de ce temps pour chaque processus :hypothèse forte(cas du travail par lot) ● En cas d’égalité, l’ordonnancement FCFS est utilisé. Exemple:
Processus
Temps d’arrivée
Temps CPU
P1
P2
P3
0
2
4
5
2
Publicité
1
Donner un schéma illustrant l’exécution de ces processus.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
31
16- Algorithmes d’ordonnancement
3- Algorithme du temps restant le plus court SRT (Shortest Remaining Time): ● version préemptive de l’algorithme SJF. ● L’ordonnanceur compare la valeur estimée du temps de traitement restant du processus en cours avec le temps d’exécution d’un nouveau processus qui vient d’arriver. Si le temps de traitement du nouveau processus est inférieur, le processus en cours est préempté c'est-à-dire interrompu pour que le nouveau processus prenne sa place. Exemple:
Processus
Temps d’arrivée
Temps CPU
P1
P2
P3
0
1
2
5
3
1
Donner un schéma illustrant l’exécution de ces processus.
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
32
16- Algorithmes d’ordonnancement
4- Algorithme du Tourniquet (Round Robin : RR) : ● FCFS avec préemption ● Chaque processus reçoit un quantum de temps ● Une fois le quantum épuisé, le processus passe la main et retourne dans la file d'attente .
Terminaison de l’exécution <= 1 quantum
P1 P2 P3 … …. Pn
Processeur
> 1 quantum
Partitionnement du temps du cycle en quantas
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
33
16- Algorithmes d’ordonnancement
4- Algorithme du Tourniquet (Round Robin : RR) : Exemple
Processus P1 P2 P3
Temps d’arrivée 0 1 3
Temps CPU 2 4 3
* qantum = 2 unités
commutation de contexte
P1 P2 P3 P2 P3 0 2 4 6 8 9
Le processeur effectue une commutation de contexte uniquement lorsqu’il atteint la fin du quantum, et que le processus ne s’est pas terminé. * Temps d’attente de P1 : 0 * Temps d’attente de P2 : 1.97 + 2 = 3.97 (lorsque P3 est en exécution, P2 est en attente). * Temps d’attente de P3 : 3.96 + 2 = 5.96 Temps d’attente moyen : 9.93/3 = 3.31 unités * Si le temps CPU de P1 = 5 …?
Beyaoui Walid
34
Licence appliquée en TI- Cours Systèmes d'exploitation
16- Algorithmes d’ordonnancement
5- Algorithme avec priorité: •Chaque processus est muni d’une priorité. •Le processus le plus prioritaire va s’exécuter en premier lieu. •Généralement, on considère toujours la priorité avec préemption • Généralement, la priorité est croissante (processus à priorité élevée plus prioritaire) Exemple:
Processus
P1
P2
P3
P4
Temps d’arrivée 0
1
4
4
Temps CPU
Priorité
6
5
3
4
3
4
2
5
a) Priorité avec préemption : b) Priorité sans préemption :
Licence appliquée en TI- Cours Systèmes d'exploitation
Beyaoui Walid
35