38
Systèmes d’Exploitation I Chapitre II : La gestion des processus Préparé par Amine DHRAIEF Révisé par Chiheb-Eddine Ben N’Cir Université de Manouba

Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

Systèmes d’Exploitation I

Chapitre II :

La gestion des processus

Préparé par Amine DHRAIEF

Révisé par Chiheb-Eddine Ben N’Cir

Université de Manouba

Page 2: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

Plan du cours

● Processus Vs Programme● États des processus● Structure d’un processus● Mémoire allouée aux processus● Structures de données pour la gestion des

Processus● Les processus sous Unix

Page 3: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 3

Contexte

● Les premiers OS autorisaient un seul programme à être exécuté à la fois. – Un tel programme avait un contrôle complet du système et

un accès à toutes les ressources du système

● Les OS actuels permettent à plusieurs programmes d'être charger en mémoire et exécuter en même temps.– Cette évolution a nécessité un contrôle plus strict et un

cloisonnement plus rigoureux des différents programmes.

Page 4: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 4

Contexte

● Ces besoins ont conduit à la création de la notion de processus, qui est « un programme en exécution ». – Un processus est l'unité fondamental dans le cadre d’un OS

moderne temps partagé.

● Un système se compose d'un ensemble de processus: – les processus du OS exécutent le code du OS

– et des processus utilisateurs exécutent le code de l'utilisateur.

● Tous ces processus s'exécutent en même temps.

→ En commutant le processeur entre les processus, le système d‘exploitation peut rendre l'ordinateur plus productif.

Page 5: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 5

Programme Vs Processus

● Le programme n'est pas en soi un processus ! – un programme est une entité passive, comme un fichier contenant

une liste d'instructions

– alors qu'un processus est une entité active avec un ensemble de ressources associées.

→ Un programme devient un processus lorsqu'un fichier exécutable est chargé en mémoire.

● Même si deux processus peuvent être associés à un même programme, ils sont néanmoins considérés comme deux séquences d'exécution séparées. – Chacune d'elles est un processus distinct, et bien que les sections de

texte sont équivalentes, les data section, la pile, le tas sont différents.

Page 6: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 6

Etats des processus

Page 7: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 7

Etat des processus

Page 8: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 8

Transitions des états d’un processus

1) en exécution → enattente : a lieu quand le processus ne peut plus poursuivre son exécution car il a besoin d'une ressource non disponible.

2) en exécution → prêt : a lieu quand le processus a terminé le temps imparti par le système d'exploitation pour son exécution.

Remarque: Un processus ne s'exécute pas forcément jusqu'à la fin car le système d'exploitation a d'autres processus à exécuter. Cette transition a également lieu si un processus plus urgent doit prendre la main (par exemple processus du système d'exploitation)

Page 9: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 9

3) prêt → en exécution : signale que le système d'exploitation a sélectionné un processus pour l'exécuter.

4) en exécution → Terminé : indique que le processus a fini son exécution.

5) En attente → prêt: a lieu sitôt que le processus n'a plus de raison d'être bloqué; par exemple les données deviennent disponibles. Le processus passe à l'état prêt.

6) prêt → en exécution a lieu quand l'événement attendu par le processus ne peut se réaliser. Il est donc inutile de faire patienter davantage ce processus, autant le terminer (interblocage).

Transitions des états d’un processus

Page 10: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 10

Structure d’un processus et allocation de la mémoire

Page 11: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 11

Structure d’un processus

● Un processus est souvent définit comme étant un programme en exécution. – Un processus est plus que le code du programme (text section)

● Un processus inclus une représentation de l'activité en cours du programme :– Le contenu des registres du processeur tel que le program counter (PC) (un

registre qui contient l’adresse mémoire de l’instruction en cours/prochaine selon les architectures des CPUs)

– une pile d’exécution (stack) qui contient des données provisoires (tels que la fonction, les paramètres, des adresses de retour, et les variables locales),

– une section de données (data section), qui contient les variables globales.

– un tas (heap) qui est une mémoire allouée dynamiquement lors de l'exécution processus.

Page 12: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 12

Structure d’un processus

Representation d'un processus en mémoire

Page 13: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 13

La mémoire associée à un processus

Allocation de la mémoire

● Au cours de son exécution, un processus alloue de la mémoire. Il existe trois types d’allocations :

1)allocation statique

2)allocation sur la pile (« stack allocation »)

3)allocation sur le tas (« heap allocation »)

Page 14: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 14

La mémoire associée à un processusAllocation de la mémoire

● Allocation statique :– Exemple : static int exemple=1 ;

– Espace mémoire nécessaire précisé dans le code avant l’exécution

– Espace réservé au moment de la compilation dans le fichier binaire résultant

– Espace accessible lors du chargement du binaire avant l’exécution

→ Pas d’allocation lors de l’exécution

Page 15: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 15

La mémoire associée à un processusAllocation de la mémoire

● Allocation statique :– La mémoire allouée statiquement placée dans le segment de données ou

le segment bss

– Segment de données: ● variables globales ● variables statiques initialisées

– Segment BSS : ● zone de données non initialisées ● les variables globales et statiques qui sont initialisées à zéro ou non initialisées

Page 16: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 16

La mémoire associée à un processusAllocation de la mémoire

● Allocation dynamique de mémoire du processus– Se fait pendant l’exécution du programme

– Espace non prévue dans le binaire du programme

– Demande d’allocation se fait durant l’exécution

● Deux segments de processus concernés :– Segment de pile

– Segment de tas

Page 17: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 17

La mémoire associée à un processusAllocation de la mémoire

● Allocation sur la pile (stack allocation)– Programme : routines (fonctions/procédures) + variables

locales (lexicales)

– Variables locales (lexicales) : sa portée est définie par le texte du programme

● Mémoire allouée à l’entrée de la routine ● Mémoire libérée au retour de la routine● → Le segment de pile est utilisé pour ces

allocations/dés-allocations

Page 18: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 18

La mémoire associée à un processusAllocation de la mémoire

● Allocation sur le tas (heap allocation)– Selon l’execution, un programme peut allouer de la

mémoire (malloc) et la libérer par la suite

– l’allocation se fait alors dans le segment de tas.

– Un tas : est une structure de données de type arbre qui permet de retrouver rapidement un élément.

Page 19: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 19

Exemple : Anatomie d’un processus sous Linux

Page 20: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 20

Exemple : Anatomie d’un processus sous Linux

Page 21: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 21

Exemple : Anatomie d’un processus sous Linux

Page 22: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 22

Structures de données pour la gestion des processus

Page 23: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 23

● Chaque processus est représenté dans le SE par un PCB (process control block) qui représente le contexte d’un processus

PCB: le Contexte d’un processus est une structure de données qui décrit un processus en cours d'exécution. Ce bloc est créé au même moment que le processus et il est mis à jour en grande partie lors de l'interruption du processus afin de pouvoir reprendre l'exécution du processus ultérieurement.

Structure de gestion des processus

Process Control Block (PCB)

Page 24: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 24

Structure d’un PCB

Le contexte d'un processus comporte principalement les informations suivantes :

● Le compteur ordinal : adresse de la prochaine instruction à exécuter par le processeur

● Les contenus des registres généraux : ils contiennent les résultats calculés par le processus

● Les registres qui décrivent l'espace qu'il occupe en mémoire centrale (l'adresse de début et de fin par exemple)

● Le registre variable d'état qui indique l'état du processusD'autres informations telles que la valeur de l'horloge, la priorité du processus

● Etc …..

Page 25: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 25

Table des processus

Page 26: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 26

Commutation de contextes de processus et transition d’états

Page 27: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 27

Programme réentrant: plusieurs processus pour un même programme

Page 28: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 28

Processus Sous UNIX

Page 29: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 29

Contexte : la division cellulaire

Page 30: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 30

Contexte : UNIX est multitâche

● La qualité du fonctionnement multitâche d’Unix représente l’un des points les plus attractifs de ce système d’exploitation.

● On peut faire exécuter simultanément plusieurs programmes sans qu’aucun d’eux ne ressente la présence des autres, ou à l’inverse en leur permettant de dialoguer entre eux.

Page 31: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 31

Appel systéme fork()

● Le parallélisme Unix bas niveau est fourni par le noyau qui duplique un processus lorsqu’on invoque l’appel-système fork() .

● Les deux processus sont alors strictement identiques, et seule la valeur de retour de fork() permet de les distinguer.

Page 32: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 32

Comment faire un processus ?

● Un nouveau processus est créé par fork() du système appelant.

● Le nouveau processus comprend une copie de l'espace d'adressage de l'original processus.– Ce mécanisme permet au processus parent de communiquer facilement avec

son processus enfant.

● Les deux processus (le parent et l'enfant) poursuivre l'exécution à l'instruction après le fork(), avec une différence: – le code retour du fork() est égal à zéro pour le nouveau (enfant)

processus,

– alors que le PID (non nulle) de l'enfant est retourné au processus père.

Page 33: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 33

Comment faire un processus ?

● L'appel-système fork() est déclaré dans <unistd.h> : pid_t fork(void);

● DEUX valeurs de retour en cas de succès:– Dans le processus père : valeur de retour = le PID du fils,

– Dans le processus fils : valeur de retour = zéro.

● Sinon– Dans le processus père : valeur de retour = -1.

● Afin d'obtenir le numéro du processus, il suffit de faire l'appel système getpid(), ou getppid() pour obtenir le numéro du père.– PID (Process IDentifier)

– PPID : numéro du processus père (Parent Process Identifier)

Page 34: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 34

Naissance d’un processusexemple

Page 35: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 35

Mort naturelle et Zombie

● Un processus peut se terminer normalement ou anormalement.

● Dans le premier cas, l'application est abandonnée à la demande de l'utilisateur, ou la tâche à accomplir est finie.

● Dans le second cas, un dysfonctionnement est découvert, qui est si sérieux qu'il ne permet pas au programme de continuer son travail

Page 36: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 36

Orphelin et Zombie

● Processus orphelins– si un processus père meurt avant son fils ce dernier

devient orphelin.

● Processus zombie– Si un fils se termine tout en disposant toujours d'un PID

celui-ci devient un processus zombie– Le cas le plus fréquent : le processus s’est terminé mais

son père n’a pas (encore) lu son code de retour.

Page 37: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 37

Orphelin et Zombie

● Un processus fils peut devenir orphelin si son père termine avant lui, auquel cas le noyau s'arrange pour le « faire adopter » par un processus système (INIT), le processus fils peut donc lui transmettre son statut de terminaison.

● Un processus est dit zombie s’il s'est achevé, mais qui dispose toujours d'un identifiant de processus (PID) et reste donc encore visible dans la table des processus. On parle aussi de processus défunt.

Page 38: Chapitre II : La gestion des processus · 2017. 2. 26. · Orphelin et Zombie Processus orphelins – si un processus père meurt avant son fils ce dernier devient orphelin. Processus

26/02/17 OS I 38

The END