Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Chap2 SE Processus

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 34

1ième Partie

Etude des systèmes d’exploitation


Plan modifiable

 Introduction
 Gestion des processus
 Synchronisation des processus
 Gestion de la mémoire
 Gestion des fichiers
 Interblocage!!!

2
1) Qu’est-ce qu’un processus?

Processus = unité d’exécution (unité de partage du


temps processeur et de la mémoire)

Processus ≠ Programme :
– un programme peut être exécuté plusieurs fois et se
trouver dans plusieurs unités d’exécution en même
temps

– le processus doit connaître à chaque instant


- le code du programme
- les variables
– on peut conserver un processus en changeant le
code qu’il exécute

3
2) Structures utilisées pour la gestion des processus

• Un processus est obtenu à partir de l'exécution d'un


fichier exécutable.

• Les informations présentes dans ce fichier sont alors


utilisées pour effectuer les différentes étapes
nécessaires à l'exécution :

- l'allocation de la mémoire pour stocker le code et les


données,
- l'allocation et l'initialisation de données utilisées par le
système d'exploitation pour gérer les processus

4
• Le SE permet d'attribuer des zones mémoire à chaque
processus et on dit parfois, par abus de langage, que
chaque processus travaille dans son propre espace
mémoire.

• Généralement, le programme d'un processus peut être


partagé avec d'autres processus, mais les données ne
sont en revanche accessibles que par le processus
propriétaire.

• Les processus doivent alors utiliser des communications


particulières, gérées par le système d'exploitation, pour
échanger des données.

5
2.1) Structure de l'espace mémoire d'un processus
L'espace mémoire utilisé par un processus est divisé en
plusieurs parties . On trouve en particulier le segment de
code (souvent appelé segment de text), le segment de
données, et la pile (stack en anglais).

text
data
BSS
Tas (heap)



Pile ( stack)

6
• Le segment de code

Le segment de code est obtenu en copiant directement


en mémoire le segment de code du fichier exécutable.

Au cours de l‘exécution du programme, la prochaine


instruction à exécuter est repérée par un pointeur
d'instruction ( compteur ordinal) .

Si l'exécution d'une instruction du code modifie


l'agencement de l'espace mémoire du processus et, par
exemple, provoque un déplacement du segment de
code, le pointeur d'instruction ne sera plus valable et le
programme se déroulera de façon incorrecte.

7
• Afin d'éviter ce problème, c-à-d éviter d'avoir à
modifier toutes les adresses du code , le segment de
code est toujours placé dans des zones fixes de la
mémoire (virtuelle), c'est-à-dire au début de la zone
disponible.

• Comme le système utilise la mémoire virtuelle, cette


zone débute généralement à l'adresse 0 et les
adresses obtenues seront ensuite traduites en
adresses physiques.

8
Le segment de données
Au dessus du segment de code se trouve le segment de
données.

Ce segment est traditionnellement composé d'un segment


de données initialisées (data), qui est directement copié à
partir de l'exécutable, et d'un segment de données non
initialisées (bss pour block storage segment) qui est créé
dynamiquement

Les données initialisées correspondent à toutes les


variables globales et statiques initialisées des
programmes.

Les données non initialisées correspondent aux variables


globales et statiques non initialisées.
9
• La pile (stack)
Pour stocker les données obtenues en cours
d'exécution, le système utilise alors un segment
nommé la pile (stack en anglais).

L'avantage de cette pile est qu'elle peut justement être


gérée comme une pile, c'est-à-dire en empilant et en
dépilant les données.

10
Exemple : la pile (que nous représenterons de gauche à
droite dans ce texte) contient les données ABCD et
l'instruction en cours fait appel à une fonction.

Le système peut alors placer sur la pile les paramètres à


passer à la fonction (pile ABCDQR),

puis placer sur la pile les différentes variables locales de


la fonction (pile ABCDQRXYZ).

La fonction s'exécute normalement et le système n'a plus


alors qu'à dépiler toutes les données qu'il a placées pour
l'appel de la fonction (pile ABCD).

Le système peut alors accéder directement aux données


qu'il avait stockées avant l'appel de la fonction et peut
exécuter l'instruction suivante.
11
2.2) Les différents états d’un processus

Un processus peut être dans 3 états possibles :

– élu (en cours d’exécution)


processus OK, processeur OK

– prêt (suspendu provisoirement pour qu’un autre


processus s’exécute)
processus OK, processeur occupé

– bloqué (attendant un événement extérieur pour


continuer)
processus non OK, même si processeur OK
2

12
13
La signification des 4 transitions légales est la suivante :

1. Bloqué en attente d’un événement externe (


données…)  Ordonnanceur averti par le processus
bloqué  élection d’un autre processus

2. Le processus a épuisé le quantum de temps qui lui a


été attribué  élection d’un autre processus

3. L’Ordonnanceur élit ce processus parmi les prêts

4. L’événement attendu se produit  traitement par le


SE  le SE fait passer le processus de l’état bloqué à
prêt
14
Ordonnancement des processus

• Plusieurs processus sont prêts à être exécutés  le


SE doit faire un choix.

• La partie du SE qui effectue ce choix est


l’ordonnanceur (scheduler)

• L’ algorithme que l’Ordonnanceur emploie s’appelle


algorithme d’ordonnancement

15
Rôle de l’ordonnanceur:

L'Ordonnanceur est un programme intégré au


noyau

L'Ordonnanceur (scheduler) définit l'ordre dans


lequel les processus prêts utilisent l'UC et la
durée d'utilisation, en utilisant un algorithme
d'ordonnancement.

Un bon algorithme d'ordonnancement doit


posséder les qualités suivantes :

16
• Rendement :
l'ordinateur doit exécuter le maximum de programmes
en un temps donné ;

• Temps d'exécution :
chaque programme doit s'exécuter le plus vite possible ;

• Interactivité :
les programmes interactifs doivent avoir un faible
temps de réponse ;

• Équité :
chaque programme a droit au temps processeur

17
Algorithmes
Il existe deux familles d'algorithmes :

- Sans réquisition (ASR) = non préemptif : un


processus est exécuté jusqu’à la fin

Le choix d'un nouveau processus ne se fait que sur


blocage ou terminaison du processus courant (utilisé en
batch par exemple)

inefficace et dangereux (ex: exécution d’une boucle sans


fin…)

- Avec réquisition (AAR) = préemptif : à intervalle


régulier, l'Ordonnanceur reprend la main et élit un
nouveau processus actif

18
ASR

Définition : On appelle le temps moyen d’exécution


d'un ensemble de tâches la moyenne des intervalles de
temps séparant la soumission d'une tâche de sa fin
d'exécution.

Exemple: soient 4 jobs A,B,C et D arrivés au même


moment avec des temps respectif d’exécution respectifs
de 8,4,4,4 minutes, exécuté dans cet ordre, le temps de
rotation ( soumission  fin) de A est 8, celui de B est
12, celui de C est 16 et celui de D est 20,

pour un temps moyen de 14=(8+12+16+20) / 4

19
Pour les ASR, on utilise :

- soit l'ordonnancement dans l'ordre d'arrivée


( premier arrivé, premier servi) en gérant une
file des processus. Cet algorithme est facile à
comprendre et à programmer

20
- soit exécution du job le plus court en premier :

Cet algorithme suppose que les délais d’exécution soient


connus par avance,

Exemple: Dans une compagnie d’assurances, les


responsables informatiques peuvent prédire assez
précisément combien de temps il faut pour exécuter un
lot de 1000 sinistres, étant donné que des tâches
analogues sont effectuées tous les jours.

21
Lorsque plusieurs travaux d'égale importance se
trouvent dans une file, l'ordonnanceur élit le plus
court d'abord.

considérons 4 travaux dont les durées


d'exécution sont a, b, c, d. Si on les exécute
dans cet ordre, le temps moyen d‘exécution
sera : (4a + 3b + 2c + d)/4.

Comme a possède le plus grand poids (4), il faut


donc que a soit le temps le plus court, etc...

22
Exemple :
• sans ordonnancement :
Tmoyen = 1/4 (Tb+Tf+Td+Ta) =
14
avec Tb=8, Tf=8+4,
Td=8+4+4, Ta=8+4+4+4

• avec ordonnancement :
Tmoyen = 1/4 (Tf+Td+Ta+Tb) = 11
avec Tf=4, Td=4+4,
Ta=4+4+4, Ta=8+4+4+4

23
AAR = Algorithme avec réquisition

– à chaque signal d ’horloge, le SE reprend la main,


décide si le processus courant a consommé son quota
de temps machine et alloue éventuellement le
processeur à un autre processus

24
Allocation du processeur aux processus

Le processeur est alloué par tranches de temps


successives (quanta) aux processus prêts à
s’exécuter (non bloqués).

25
• Dans la pratique, la valeur du quantum est d’environ 10
ms (temps d’exécution de quelques millions
d’instructions sur un processeur à 1 GHz).

• La commutation entre processus prend un temps non


nul (de l’ordre de 0,5 ms). Elle est réalisée par un
programme du noyau appelé ordonnanceur (
scheduler)

26
Mécanisme d’allocation du processeur = Mécanismes
de commutation

Que fait précisément le noyau du système lors de la


commutation de processus ?

1. Déterminer le prochain processus élu (en général, les


processus sont alloués dans l’ordre d’arrivée, mais il
peut y avoir des priorités). Le mécanisme utilise une file
d’attente.

27
2. Réaliser l’allocation proprement dite. Deux étapes :

a) Sauvegarder le contexte du processus élu actuel (les


données, variables, PID, PPID, User …), pour pouvoir le
retrouver ultérieurement, en vue de la prochaine
allocation

b) Restaurer le contexte du nouveau processus élu puis


lancer son exécution.

– il existe de nombreux algorithmes d’ordonnancement


avec réquisition :

28
Ordonnancement circulaire (tourniquet)
Il s'agit d'un algorithme ancien, simple et fiable.

Le processeur gère une liste circulaire de processus.

Chaque processus dispose d'un quantum de temps pendant


lequel il est autorisé à s'exécuter.

Si le processus actif se bloque ou s'achève avant la fin de


son quantum, le processeur est immédiatement
alloué à un autre processus.

Si le quantum s'achève avant la fin du processus, le


processeur est alloué au processus suivant dans la liste et le
processus précédent se trouve ainsi en queue de liste.
29
Problème = réglage du quantum :

– quantum trop petit  beaucoup de commutations (=


temps de passage d’un processus à l’autre) : le
processeur passe son temps à commuter
Avantage: un petit quantum assure un temps de réponse
rapide

– quantum trop grand : augmentation du temps de


réponse d’une commande (même simple)
Avantage: un grand quantum minimise le temps de
changement de contexte

– réglage correct: Quantum/commutation = 5

30
31
Ordonnancement avec priorité

Le modèle du tourniquet suppose tous les processus


d'égale importance. C'est irréaliste.

D'où l'attribution de priorité à chaque processus.

L'ordonnanceur lance le processus prêt de priorité la plus


élevée.

Pour empêcher le processus de priorité la plus élevée


d'accaparer le processeur, l'ordonnanceur abaisse à
chaque interruption d'horloge la priorité du processus
actif.

Deux choix sont possible pour avoir la commutation:

32
1) Si la priorité du processus actif devient inférieure à
celle du deuxième processus de plus haute priorité, la
commutation a lieu.

Ou bien

2) Assigner un quantum à chaque processus autorisé à


s’exécuter . Lorsque ce quantum est écoulé, le
processus prioritaire suivant peut enfin s’exécuter.

33
Ordonnancement garanti

S'il y a n utilisateurs connectés, on peut garantir à chacun


qu'il disposera de 1/n de la puissance du processeur.

Le SE mémorise combien chaque utilisateur a consommé


de temps processeur et il calcule le rapport : temps
processeur consommé / temps processeur
auquel on a droit .

On élit le processus qui offre le rapport le plus


faible jusqu'à ce que son rapport cesse d'être le
plus faible.

34

Vous aimerez peut-être aussi