Systèmes d’exploitation avancés
Chapitre 1 : La gestion des processus
Najar Yousra
Email : [email protected]
ISI 1 ére ingérieur 2020/2021
Plan du cours
Gestion des Processus
Synchronisation interprocessus/interblocage
Gestion de la mémoire
Gestion des périphériques
Gestion de systèmes de fichiers
Plan du chapitre 1
• Rappels sur des notions de base sur les systèmes
• Notions de Processus
• Ordonnancement des processus
Notions de base
Le système d’exploitation est une couche de logiciel. La
fonction du système d’exploitation est de masquer la
complexité du matériel et de proposer des instructions plus
simples à l’utilisateur. Le système d'exploitation est un
gestionnaire de ressources, c'est-à-dire qu'il contrôle
l'accès à toutes les ressources de la machine .
Un système d’exploitation = noyau + logiciels utilitaires +
bibliothèques.
Noyau est responsable de la gestion du matériel : processeur,
Ram, périphériques d’E/S .. …..
Notions de base
Un système d’exploitation peut être :
Monoutilisateur/multiutilisateur : gère plusieurs utilisateurs en
leur offrant des espaces de travail protégés.
Monoprocesseur/multiprocesseurs : gère l’execution des
processus sur plusieurs processeurs.
Monoprogrammé/multiprogrammé : permet au processeur de
se partager entre tous les processus actifs. Ainsi, quand le
processeur atteint une instruction d'entrée-sortie, il interrompt le
programme en cours et passe à l'exécution d'un autre programme.
Monotâche/multitâche : Les processus partage le temps
processeur. Le SE peut interrompre l’execution d’un processus
pour executer un autre.
Notions de base
Un système d’exploitation propose deux modes de
fonctionnement : mode utilisateur (où certaines
instructions sont interdites) et mode superviseur (le
processeur peut exécuter toutes les instructions).
le système d'exploitation propose une interface de
programmation, c'est-à-dire qu'il permet d'accéder à un
certain nombre de fonctionnalités qu'il exécute pour
l'utilisateur. Les appels système sont l'interface proposée
par le système d'exploitation pour accéder aux différentes
ressources de la machine.
Exple : fork()
Notions de base
Les interruptions
constituent une concept fondamental des systèmes
d’exploitation. Les interruptions peuvent être matérielles ou
logicielles.
Une interruption est signal produit par un périphérique et
envoyé vers le processeur pour l’informer de la fin d’une E/S,
la production d’une erreur …
Les Processus
Le processus est un concept fondamental de tout
système d’exploitation. Un processus est l’unité système
qui permet l’exécution d’un programme.
Un processus est un programme en exécution +
contexte d’exécution.
◦ Il définit un objet dynamique (change d’ état
Et de taille) tandis que le programme est un
objet statique.
Les Processus
Processus vs Programme
Les Processus
Les processus doivent se charger dans la RAM pour s’executer
dans le processeur.
Un processus s’exécute d’une manière séquentielle. Un
déroutement se produit par une erreur interne au processus
lors de l’execution (prévisible , ex division par zéro).
Un système d’exploitation est responsable de la gestion des
processus :
• La création, suppression et interruption de processus
• L'ordonnancement des processus afin de décider d'un ordre
d'exécution équitable entre les utilisateurs tout en privilégiant
les processus du système.
• La synchronisation entre les processus ainsi que la
communication
• La gestion des conflits d'accès aux ressources partagées
Les Processus
Structure arborescente
•Les processus sont organisés sous forme d’une arborescence
ou chaque processus a un seul père et peut avoir plusieurs fils.
•Un processus est identifié par un PID (Process IDentifier) et un
PPID (Parent Process IDentifier).
Exemple: L’arborescence des processus sous Linux.
Les Processus
Les Etats
Lorsqu’un processus s’exécute; il change d’état. Il peut se trouver dans
l’un des trois états principaux suivants:
• Prêt (Ready) : le processus attend son
tour pour s’exécuter
• Élu (Running) : les instructions sont en
cours d’exécution.
• Bloqué (Sleep) : le processus bloqué en
attente d’événement: signal, E/S, …
Les Processus
L'espace mémoire utilisé par un processus est divisé en plusieurs zones. On
trouve en particulier le segment de code, le segment de données, la pile et le
tas.
Segment code : Le segment de code représente le programme
à exécuter. Il est toujours placé dans des zones
fixes de la mémoire
Segment données :est traditionnellement composé d'un
segment de données initialisées (les variables globales et
statiques) et d'un segment de données non initialisées qui
est créé dynamiquement.
Segment pile : Pour stocker les données obtenues en
Cours d'exécution, le système utilise un segment pile.
Les Processus
Les systèmes d'exploitation manipulent deux structures de données
principales pour gérer les processus créés sur une machine : la table
des processus et le bloc de contexte d'un processus.
La table des processus contient toutes les informations
indispensables au système d'exploitation pour assurer une
gestion cohérente des processus. Elle est stockée dans l'espace
mémoire du système d'exploitation, ce qui signifie que les processus
ne peuvent pas y accéder.
Elle comporte une entrée par processus qui rassemble toutes les
informations concernant un processus aussi bien celles concernant
son exécution au niveau du processeur mais également des
informations sur les fichiers qu'il manipule ainsi que des informations
sur son occupation mémoire. Quant aux informations sur
l'occupation mémoire on y trouve par exemple des pointeurs sur les
différents segments code, données et pile.
Les Processus
Contexte : PCB processes control block
Chaque processus est représenté dans le système
d’exploitation par une structure de données contenant toute
information décrivant le contexte du processus appelé bloc
de contrôle (Process Control Bloc: PCB).
Attributs d’un PCB:
◦ PID et PPID,
◦ État,
◦ Priorité,
◦ Compteur ordinal,
◦ Fichiers ouverts,
◦ Pointeurs: seg. code, seg. données, seg. Pile,
◦ Temps d’exécution.
Les Processus
Commutation de contexte
Sur un système multiprogrammé, le SE doit redonner le
contrôle du processeur d’un processus à un autre en
effectuant des commutations de contexte.
La commutation de contexte
consiste a mémoriser le PCB
du processus courant et charger
le PCB du processus a élire
Les Processus
- Les thread
Un processus contient au moins un thread de contrôle unique en plus
de l’espace d’adressage.
Un thread ou encore processus léger (lightweight process) est une unité
d’exécution de code. il est issu d’un processus mais ne contenant que la
pile d’exécution.
- Les processus zombie
est un terme désignant un processus qui s'est achevé, mais qui dispose
toujours d'un identifiant de processus ( PID ) et reste donc encore
visible dans la table des processus.
- Les processus Orphelins
est un terme désignant un processus dont le pére s’est terminé avant lui.
Ordonnancement des processus
Le SE est responsable de l’ordonnacement des processus : Étant
donnée un ensemble de processus prêts, l’Ordonnanceur
(scheduler) du SE doit choisir quel processus élire en utilisant un
algorithme d’ordonnancement.
Un bon algorithme d’ordonnancement :
1. Chaque processus doit avoir sa part de temps CPU : équité.
2. Utiliser le temps processeur à 100% : efficacité.
3. Minimiser le temps de réponse en mode interactif.
Ordonnancement des processus
L’ordonnanceur choisi un processus parmi les processus prêts et
lui alloue le processeur :
Chaque fois que le processus exécutant est interrompu
◦ un processus exécutant devient bloqué (4)
◦ un processus change d’élu à prêt (3)
◦ un processus exécutant se termine (6)
Chaque fois qu’un nouveau processus est prêt
◦ un processus se présente en tant que nouveau (1)
◦ un processus change de bloqué à prêt (5)
Ordonnancement des processus
Deux paramètres sont utilisés pour juger de la performance et de
l’efficacité d’un algorithme d’ordonnancement : Temps de rotation
et temps d’attente.
Temps de rotation = date de fin – date d’arrivée
Temps rotation moyen = ∑ temps rotation / nbr processus
Temps attente = temps de rotation – temps d’exécution
Temps attente moyen = ∑ temps attente / nbr processus
Ordonnancement des processus
Deux types d’algorithmes d’ordonnacement se distinguent :
1. Les algorithmes monotâche/non préemptif/ sans réquisition
Le SE ne peut pas interrompre l’execution d’un processus pour
exécuter un autre : FCFS, SJF, Priorité
2. Les algorithmes multitâche/ préemptif/ avec réquisition
Le SE interrompre l’execution d’un processus pour exécuter un autre
plus prioritaire :Tourniquet, SNRT, Priorité
Ordonnacement des processus
Les algorithmes d’ordonnacement monotâche
Le processeur est réquisitionné :
- Terminaison d’un processus
- Demande d’une E/S
Rq :
ta : temps d’arrivée à la RAM (temps de création du processus)
te : temps estimé d’execution du processus (unités d’horloge
/ns demandés dans le CPU)
Pr: priorité du processus selon sa classe (système, utilisateur)
peut être dynamique/statique.
Ordonnacement des processus
Les algorithmes d’ordonnacement monotâche
I. FCFS / FIFO (First comes First Served )
Critère : temps d’arrivée à la RAM (ta)
Principe : Le premier arrivée est le premier servi.
II. SJF (Shortest Job First )
Critère : temps d’execution(te)
Principe : Le processus qui demande le moins de te est élu.
III. Priorité sans interruption
Critère : Priorité statique (Pr)
Principe : Le processus le plus prioritaire est élu.
Ordonnacement des processus
Application : Donnez le diagramme de Gant de
l’occupation du processeur pour le cas suivant :
- FIFO , SJF et priorité sans interruption
- Comparez
ta te Pr
P1 0 5 3
P2 1 3 2
P3 2 1 4
P4 4 2 1
Ordonnacement des processus
Premier arrivé, premier servi, FCFS:
◦ Temps moyen d’attente non-optimal
◦ Mauvaise utilisation des ressources s’il y a apport continu de processus
aux cycles longs (v. effet d’accumulation)
Plus court servi, SJF:
◦ Difficulté de prévoir la durée du prochain cycle
◦ Famine possible des processus ‘longs’ s’il y a apport continu de
processus aux cycles courts.
Donc besoin d’une méthode systématiquement préemptive
si vous faites toujours les devoirs les plus courts en premier, vous pourriez avoir
l’impression de faire beaucoup mais vous pourriez ne jamais arriver aux plus
longs…
si vous faites les devoirs dans l’ordre d’arrivée, les longs pourraient vous bloquer
pour longtemps…
donc votre solution est de donner un peu de temps à chacun, cycliquement
Ordonnacement des processus
Les algorithmes d’ordonnacement multitâche
Le processeur est réquisitionné :
- Terminaison d’un processus
- Demande d’une E/S
- Arrivée d’un processus plus prioritire / fin du quantum
Ordonnacement des processus
Les algorithmes d’ordonnacement multiotâche
I. Tourniquet (Round Robin)
Critère : temps d’arrivée à la RAM (ta)
Principe : Les processus sont ordonnés par ordre d’arrivée. Le
premier s’execute pendant un quantum de temps Q et retourne à
la fin de la liste.
II. SNRT (Shortest Next Remainning Time)
Critère : temps d’execution(te)
Principe : Le processus qui demande le moins de te est élu. Lorsqu’un
processus avec un te < te restant de celui en cours
commutation.
III. Priorité avec interruption
Critère : Priorité statique (Pr)
Principe : Le processus le plus prioritaire est élu. Lorsqu’un processus
avec un pr > pr de celui en cours commutation.
Ordonnacement des processus
Application : Donnez le diagramme de Gant de
l’occupation du processeur pour le cas suivant :
- RR (Q=2) , SNRT et priorité avec interruption
- Comparez
ta te Pr
P1 0 5 3
P2 1 3 2
P3 2 1 4
P4 4 2 1
Ordonnacement des processus
Comparatifs
Algorithmes avec priorité statique lors de l’ exécution
(FIFO, priorité statique ) présentent un problème
d’équité.
Algorithmes avec priorité dynamique qui augmente
avec l’exécution (SJF, SRT) présentent un problème de
famine pour les processus de faible priorité.
Les algorithmes avec des priorités dynamique qui
diminue lors de l’exécution (RR, priorité dynamique)
sont équitables.
Le choix du quantum dans l’algorithme tourniquet
Linux vs Windows
Windows
Sous Windows NT, XP, Vista, l’ordonnanceur est de type
« Multilevel feedback queue » :
- Plusieurs queues (FIF0) classées selon la priorité des
processus
- Chaque processus s’execute pendant un Q
- Si un processus consomme bcp de temps processeur il passe
à la queue de priorité inférieur.
Linux
Politique du tourniquet modifié = Tourniquet avec priorités
dynamiques
Ordonnacement multiprocesseurs
Architectures multi-processeurs/multi-cores
Les cores peuvent être :
-homogènes (mm vitesse)
-Hétérogènes (vitesse différentes)
Algorithmes d’ordonnancement multiprocesseurs
- Affectation des tâches au processeurs : selon la
charge des processeurs ( migration des processus)
- Ordonnancement des tâches sur les
processeurs.