Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Syst` emes d’Exploitation Cours 2/10 : Processus I
Nicolas Sabouret
Universit´e Paris-Sud Licence 3 - semestre S5
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Plan
1 Processus : d´efinition
2 Rˆole de l’OS
3 Cr´eation de processus
4 Notion dethread
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Plan
1 Processus : d´efinition
2 Rˆole de l’OS
3 Cr´eation de processus
4 Notion dethread
5 Synth`ese
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
D´efinition Programme
Unprogrammeest unes´equence d’instructions Processeur
Unprocesseurest unautomate (´electronique) de traitement. Il peut ex´ecuterun programme
Il modifie sont ´etat en fonction des instructions Processus
Unprocessusest unprogramme ex´ecut´e par un processeur.
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
D´efinition Programme
Unprogrammeest unes´equence d’instructions
Processeur
Unprocesseurest unautomate (´electronique) de traitement. Il peut ex´ecuterun programme
Il modifie sont ´etat en fonction des instructions Processus
Unprocessusest unprogramme ex´ecut´e par un processeur.
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
D´efinition Programme
Unprogrammeest unes´equence d’instructions Processeur
Unprocesseurest unautomate (´electronique) de traitement. Il peut ex´ecuterun programme
Il modifie sont ´etat en fonction des instructions Processus
Unprocessusest unprogramme ex´ecut´e par un processeur.
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
D´efinition Programme
Unprogrammeest unes´equence d’instructions Processeur
Unprocesseurest unautomate (´electronique) de traitement.
Il peut ex´ecuterun programme
Il modifie sont ´etat en fonction des instructions
Processus
Unprocessusest unprogramme ex´ecut´e par un processeur.
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
D´efinition Programme
Unprogrammeest unes´equence d’instructions Processeur
Unprocesseurest unautomate (´electronique) de traitement.
Il peut ex´ecuterun programme
Il modifie sont ´etat en fonction des instructions Processus
Unprocessusest unprogramme ex´ecut´e par un processeur.
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Programme et processus Processus
Un processus est un programme ex´ecut´e par un processeur
→Un mˆeme programme peut donner naissance `aplusieurs processus.
Exemples de processus
Logiciel de traitement de texte en cours d’ex´ecution Compilation de code source
Tˆache syst`eme (ex : envoi de donn´ees vers l’imprimante) Cr´eation
Un processus est forc´ement cr´e´e par un autre processus
(ex : par l’OS)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Programme et processus Processus
Un processus est un programme ex´ecut´e par un processeur
→Un mˆeme programme peut donner naissance `aplusieurs processus.
Exemples de processus
Logiciel de traitement de texte en cours d’ex´ecution Compilation de code source
Tˆache syst`eme (ex : envoi de donn´ees vers l’imprimante) Cr´eation
Un processus est forc´ement cr´e´e par un autre processus
(ex : par l’OS)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Programme et processus Processus
Un processus est un programme ex´ecut´e par un processeur
→Un mˆeme programme peut donner naissance `aplusieurs processus.
Exemples de processus
Logiciel de traitement de texte en cours d’ex´ecution Compilation de code source
Tˆache syst`eme (ex : envoi de donn´ees vers l’imprimante)
Cr´eation
Un processus est forc´ement cr´e´e par un autre processus
(ex : par l’OS)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Programme et processus Processus
Un processus est un programme ex´ecut´e par un processeur
→Un mˆeme programme peut donner naissance `aplusieurs processus.
Exemples de processus
Logiciel de traitement de texte en cours d’ex´ecution Compilation de code source
Tˆache syst`eme (ex : envoi de donn´ees vers l’imprimante) Cr´eation
Un processus est forc´ement cr´e´e par un autre processus
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Remarque Concurrence
Dans un syst`eme moderne,plusieurs processus s’ex´ecutent en parall`ele
Exemples :
Leshell(tout l’interface graphique→plusieurs processus) L’´editeur TexStudio avec lequel je tape ce cours
Le compilateur LaTeX Le visualisateur PDF
Les processus de l’OS (gestion du r´eseau, gestion des utilisateurs, . . . )
Mode superviseur
On distingue les processus de l’OS des processus utilisateur
. . . mais tous sont en concurrence pour l’acc`es aux ressources
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Remarque Concurrence
Dans un syst`eme moderne,plusieurs processus s’ex´ecutent en parall`ele
Exemples :
Leshell(tout l’interface graphique→plusieurs processus) L’´editeur TexStudio avec lequel je tape ce cours
Le compilateur LaTeX Le visualisateur PDF
Les processus de l’OS (gestion du r´eseau, gestion des utilisateurs, . . . )
Mode superviseur
On distingue les processus de l’OS des processus utilisateur
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Structure de donn´ees d’un processus Environnement
Variables h´erit´ees du processus parent Ex :PATH=/usr/bin:/usr/local/bin:...
Tas
Constantes (ex :public static final int BIDULE=47;) Variables globales
Pile
Variables temporaires + contexte(ex : compteur d’instruction)
Code
Recopie du programme machine
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Plan
1 Processus : d´efinition
2 Rˆole de l’OS
Structure d’un processus Cycle de vie
Consistance
3 Cr´eation de processus
4 Notion dethread
5 Synth`ese
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Rˆole de l’OS
Cr´eation et suppression de processus Programme→ processus
Munirle programme desinformationsn´ecessaires pour sonex´ecution
Suspension et reprise
Multiprogrammation et temps partag´e→ interrompre et reprendre les processus
Gestion de la m´emoireo`u sont stock´ees les processus interrompus
Communication et synchronisation
Partage de donn´ees en plusieurs processus Consistance de l’´etat de la m´emoire
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Rˆole de l’OS
Cr´eation et suppression de processus Programme→ processus
Munirle programme desinformationsn´ecessaires pour sonex´ecution
Suspension et reprise
Multiprogrammation et temps partag´e→ interrompre et reprendre les processus
Gestion de la m´emoireo`u sont stock´ees les processus interrompus
Communication et synchronisation
Partage de donn´ees en plusieurs processus Consistance de l’´etat de la m´emoire
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Structure de donn´ees Process Control Block
Bloc de contrˆole de processus
Structure de donn´ees contenant les informations relatives `a un processusutilis´ee par l’OS pour la gestion des processus.
Contenu
D´efinir l’ensemble des ´el´ements utiles
(Exercice)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
M´emoire
Repr´esenter les informations m´emoire
Pointeur de pile
Variables d’environnement Tas (variables globales)
M´emoire pagin´ee : table des pages (adresse logique→ adresse physique)
M´emoire segment´ee : table des segments (adresse de base, limite)
Voircours 6
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
M´emoire
Repr´esenter les informations m´emoire Pointeur de pile
Variables d’environnement Tas (variables globales)
M´emoire pagin´ee : table des pages (adresse logique→ adresse physique)
M´emoire segment´ee : table des segments (adresse de base, limite)
Voircours 6
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Processeur
G´erer l’acc`es au processeur
Ordonnancement
Valeur de priorit´e
Pointeur vers la file de priorit´e
Donn´ees d’utilisation pass´ee du processeur (fr´equence, dur´ee. . . )
Voircours 3
Usage du processeur
Informations sur l’utilisateur du processeur
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Processeur
G´erer l’acc`es au processeur
Ordonnancement
Valeur de priorit´e
Pointeur vers la file de priorit´e
Donn´ees d’utilisation pass´ee du processeur (fr´equence, dur´ee. . . )
Voircours 3
Usage du processeur
Informations sur l’utilisateur du processeur
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Processeur
G´erer l’acc`es au processeur
Ordonnancement
Valeur de priorit´e
Pointeur vers la file de priorit´e
Donn´ees d’utilisation pass´ee du processeur (fr´equence, dur´ee. . . )
Voircours 3
Usage du processeur
Informations sur l’utilisateur du processeur
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
P´eriph´eriques
G´erer l’acc`es aux p´eriph´eriques
Certains p´eriph´eriques ne peuvent pas ˆetre utilis´es par plusieurs processus en mˆeme temps.
Ex : imprimante→ file d’attente
Tous les processus n’ont pas acc`es `a tous les p´eriph´eriques (droits d’acc`es)
Ex : disque r´eseau mont´e par un utilisateur
Dans le PCB
Chaque processus se voit attribu´e un ensemble de p´eriph´eriques
→liste d’identifiants de p´eriph´eriques
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
P´eriph´eriques
G´erer l’acc`es aux p´eriph´eriques
Certains p´eriph´eriques ne peuvent pas ˆetre utilis´es par plusieurs processus en mˆeme temps.
Ex : imprimante→ file d’attente
Tous les processus n’ont pas acc`es `a tous les p´eriph´eriques (droits d’acc`es)
Ex : disque r´eseau mont´e par un utilisateur Dans le PCB
Chaque processus se voit attribu´e un ensemble de p´eriph´eriques
→liste d’identifiants de p´eriph´eriques
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Temps partag´e Probl`eme
Lorsqu’oninterromptun processus, il faut ˆetre capable de le reprendre plus tard. . .
Informations sur l’´etat du processus Exemples :
Compteur d’instruction Registres du processus
´Etat du processus
Actif ou non (voir cycle de vie. . .)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Temps partag´e Probl`eme
Lorsqu’oninterromptun processus, il faut ˆetre capable de le reprendre plus tard. . .
Informations sur l’´etat du processus Exemples :
Compteur d’instruction Registres du processus
´Etat du processus
Actif ou non (voir cycle de vie. . .)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Temps partag´e Probl`eme
Lorsqu’oninterromptun processus, il faut ˆetre capable de le reprendre plus tard. . .
Informations sur l’´etat du processus Exemples :
Compteur d’instruction Registres du processus
´Etat du processus
Actif ou non (voir cycle de vie. . .)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Contenu d’un PCB
Contenu
Informationm´emoire (voircours 6) Donn´ees d’ordonnancement (voircours 3) P´eriph´eriques allou´es
Informations d’usage
Etat´ du processus (voir cycle de vie) +sauvegardede l’´etat du processeur
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Rˆole de l’OS
Cr´eation et suppression de processus Programme→ processus
Munirle programme desinformationsn´ecessaires pour sonex´ecution
Suspension et reprise
Multiprogrammation et temps partag´e→ interrompre et reprendre les processus
Gestion de la m´emoireo`u sont stock´ees les processus interrompus
Communication et synchronisation
Partage de donn´ees en plusieurs processus Consistance de l’´etat de la m´emoire
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’ environnement
Initialisation du tas
Initialisation pointeur pile
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Le processus prˆet est mis dans la file d’attente
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Ex´ecution
Le processus est s´electionn´e pour l’acc`es au processeur Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption
Un seul processus en ex´ecution `a la fois Mais plusieurs peuvent ˆetre prˆets (file d’attente)
En Attente requˆete E/S
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
Les processus passent la main lorsqu’ils acc`edent `a une autre ressource (E/S)
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet Chargement
du code
´Edition de liens Recopie de l’
environnement Initialisation
du tas
Initialisation pointeur pile
Ex´ecution Lancement
1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
0-1 processus en ex´ecution 0-N processus prˆets 0-N processus en attente
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Nouveau
Prˆet
Chargement du code
´Edition de liens Recopie de l’ environnement
Initialisation du tas
Initialisation pointeur pile
Ex´ecution
ordonnanceur
Lancement 1ereinstruction
ordonnanceur
Allocations de ressources sur demande
Termin´e
interruption En Attente
requˆete E/S
fin E/S (interruption)
0-1 processus en ex´ecution 0-N processus prˆets 0-N processus en attente
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruption wait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruption wait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruption wait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruption wait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruption wait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruptionwait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Cycle de vie du processus
Prˆet
Ex´ecution
En Attente
Suspension de l’ex´ecution Le processus en ex´ecution laisse la main si :
Il fait une demande d’E/S
→ liste EA
Sa tranche de temps est expir´ee
→ file Prˆet
Il cr´ee un processus fils
→ file Prˆet
Il lance une interruptionwait
→ liste EA
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Rˆole de l’OS
Cr´eation et suppression de processus Programme→ processus
Munirle programme desinformationsn´ecessaires pour sonex´ecution
Suspension et reprise
Multiprogrammation et temps partag´e→ interrompre et reprendre les processus
Gestion de la m´emoireo`u sont stock´ees les processus interrompus
Communication et synchronisation
Partage de donn´ees en plusieurs processus Consistance de l’´etat de la m´emoire
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
Deux processus en m´emoire se partagent une donn´ee A
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
Processus 1s’ex´ecute
UC (registres)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
UC (registres)
A A
Processus 1souhaite effectuer A = A+1
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A A
A
Processus 2prend la main : l’OS sauve l’´etat de A en m´emoire
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A A
Processus 2s’ex´ecute
UC (registres)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A A
UC (registres)
A A
Processus 2souhaite effectuer A = A+1
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A A
UC (registres) A1
Processus 2effectue A = A+1
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
A A1
A1
Processus 1prend la main : l’OS sauve l’´etat de A en m´emoire
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
A A1
La variable A existe `a 3 endroits diff´erents, avec des valeurs diff´erentes !
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
A A1
UC (registres) A
Processus 1reprend o`u il en ´etait
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
A A1
UC (registres) A1
Processus 1effectue A = A+1
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
A A1
UC (registres) A1
Le processus travaille sur une mauvaise valeur de A !
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
M´emoire (RAM) UC (registres) Processus 1 Processus 2
A
A A1
UC (registres) A1
Le processus travaille sur une mauvaise valeur de A ! Et il y a aussi le cache, la RAM, le disque (swap). . .
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Structure d’un processus Cycle de vie Consistance
Consistance de la m´emoire
Actions de l’OS
m´emoire : chaque processus a son propre espace m´emoire
→ pas de probl`eme de consistance m´emoire/processeur Verrous : un processus peut verrouiller l’acc`es `a un fichier
→ file d’attente pour l’acc`es `a la ressource Algorithmes de synchronisation
→ cours 4
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Plan
1 Processus : d´efinition
2 Rˆole de l’OS
3 Cr´eation de processus Cr´eation de processus
4 Notion dethread
5 Synth`ese
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation Rappel
Un processus est forc´ement cr´e´e par un autre processus
Sous Unix
2 appels syst`eme :
fork pour cr´eer un processus `a partir du processus courant
→ Le processus estdupliqu´e
exec pour remplacerle processus courant par un autre processus
Sous Windows
createprocesspour cr´eer un processus (cf.exec Unix)
→ Le processus courant estconserv´e
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation Rappel
Un processus est forc´ement cr´e´e par un autre processus Sous Unix
2 appels syst`eme :
fork pour cr´eer un processus `a partir du processus courant
→ Le processus estdupliqu´e
exec pour remplacerle processus courant par un autre processus
Sous Windows
createprocesspour cr´eer un processus (cf.exec Unix)
→ Le processus courant estconserv´e
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation Rappel
Un processus est forc´ement cr´e´e par un autre processus Sous Unix
2 appels syst`eme :
fork pour cr´eer un processus `a partir du processus courant
→ Le processus estdupliqu´e
exec pour remplacerle processus courant par un autre processus
Sous Windows
createprocesspour cr´eer un processus (cf.exec Unix)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
# i n c l u d e < sys / t y p e s . h >
# i n c l u d e < u n i s t d . h >
int m a i n () {
p r i n t f ( " S t a r t i n g . . . \ n " );
r e t u r n 0;
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
#include ...
int m a i n () {
p r i n t f ( " S t a r t i n g . . . \ n " );
r e t u r n 0;
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
#include ...
int m a i n () {
p r i n t f ( " S t a r t i n g . . . \ n " );
p i d _ t p r o c ; p r o c = f o r k();
r e t u r n 0;
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
#include ...
int m a i n () { ...
pid t proc = fork();
if ( p r o c == -1)
f p r i n t f ( stderr , " f o r k f a i l e d " );
r e t u r n 0;
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
#include ...
int m a i n () { ...
e l s e {
if ( p r o c = = 0 ) {
/* c ’ est le f i l s */
p r i n t f ( " % d : f i l s de % d \ n " , g e t p i d () , g e t p p i d ( ) ) ; } e l s e {
/* c ’ est le p e r e */
p r i n t f ( " % d : p e r e de % d \ n " , g e t p i d () , p r o c );
} }
r e t u r n 0;
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
#include ...
int m a i n () { ...
if ( p r o c = = 0 ) {
/* c ’ est le f i l s */
p r i n t f ( " % d : f i l s de % d \ n " , g e t p i d () , g e t p p i d ( ) ) ; s l e e p ( 5 ) ;
p r i n t f ( " % d : t e r m i n e \ n " , g e t p i d ( ) ) ; e x i t ( 5 ) ;
} e l s e { ...
} }
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
#include ...
int m a i n () { ...
} e l s e {
/* c ’ est le p e r e */
p r i n t f ( " % d : p e r e de % d \ n " , g e t p i d () , p r o c );
int r ;
w a i t p i d ( proc , & r , 0); /* a t t e n t e du f i l s */
p r i n t f ( " % d : f i l s % d s o r t ( c o d e % d )\ n " , g e t p i d () , proc , r );
} }
r e t u r n 0;
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
# i n c l u d e < sys / t y p e s . h >
# i n c l u d e < u n i s t d . h >
int m a i n () {
p r i n t f ( " S t a r t i n g . . . \ n " );
p i d _ t p r o c ; p r o c = f o r k();
if ( p r o c == -1)
f p r i n t f ( stderr , " f o r k f a i l e d " );
e l s e {
if ( p r o c = = 0 ) { /* c ’ e s t le f i l s */
p r i n t f ( " % d : f i l s de % d \ n " , g e t p i d () , g e t p p i d ( ) ) ; s l e e p ( 5 ) ;
p r i n t f ( " % d : t e r m i n e \ n " , g e t p i d ( ) ) ; e x i t ( 5 ) ;
} e l s e {
/* c ’ e s t le p e r e */
p r i n t f ( " % d : p e r e de % d \ n " , g e t p i d () , p r o c );
int r ;
w a i t p i d ( proc , & r , 0); /* a t t e n t e du f i l s */
p r i n t f ( " % d : f i l s % d s o r t ( c o d e % d )\ n " , g e t p i d () , proc , r );
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Cr´eation d’un processus en C (Unix)
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
# i n c l u d e < sys / t y p e s . h >
# i n c l u d e < u n i s t d . h >
int m a i n () {
p r i n t f ( " S t a r t i n g . . . \ n " );
p i d _ t p r o c ; p r o c = f o r k();
if ( p r o c == -1)
f p r i n t f ( stderr , " f o r k f a i l e d " );
e l s e {
if ( p r o c = = 0 ) { /* c ’ e s t le f i l s */
p r i n t f ( " % d : f i l s de % d \ n " , g e t p i d () , g e t p p i d ( ) ) ; s l e e p ( 5 ) ;
p r i n t f ( " % d : t e r m i n e \ n " , g e t p i d ( ) ) ; e x i t ( 5 ) ;
} e l s e {
/* c ’ e s t le p e r e */
p r i n t f ( " % d : p e r e de % d \ n " , g e t p i d () , p r o c );
int r ;
w a i t p i d ( proc , & r , 0); /* a t t e n t e du f i l s */
p r i n t f ( " % d : f i l s % d s o r t ( c o d e % d )\ n " , g e t p i d () , proc , r );
}
R´esultat de l’ex´ecution :
Starting ...
29227: pere de 29228 29228: fils de 29227 29228: termine
29227: fils 29228 sort (code 1280)
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Recouvrement d’un processus en C (Unix)
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
# i n c l u d e < sys / t y p e s . h >
# i n c l u d e < u n i s t d . h >
int m a i n () {
c h a r * a r g u [3] = { " " , " - a " , N U L L };
e x e c v( " / bin / u n a m e " , a r g u );
p r i n t f ( " Ce c o d e n ’ est j a m a i s a t t e i n t !\ n " );
r e t u r n 0;
}
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Recouvrement d’un processus en C (Unix)
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
# i n c l u d e < sys / t y p e s . h >
# i n c l u d e < u n i s t d . h >
int m a i n () {
c h a r * a r g u [3] = { " " , " - a " , N U L L };
e x e c v( " / bin / u n a m e " , a r g u );
p r i n t f ( " Ce c o d e n ’ est j a m a i s a t t e i n t !\ n " );
r e t u r n 0;
}
R´esultat de l’ex´ecution :
Linux raxacorico 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86 64 x86 64 x86 64 GNU/Linux
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Recouvrement d’un processus en C (Unix)
# i n c l u d e < s t d i o . h >
# i n c l u d e < s t d l i b . h >
# i n c l u d e < sys / t y p e s . h >
# i n c l u d e < u n i s t d . h >
int m a i n () {
c h a r * a r g u [3] = { " " , " - a " , N U L L };
e x e c v( " / bin / u n a m e " , a r g u );
p r i n t f ( " Ce c o d e n ’ est j a m a i s a t t e i n t !\ n " );
r e t u r n 0;
}
Recouvrement
Le nouveau processusrecouvre l’ancien.
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Lancement d’un nouveau processus en C (Unix) Probl`eme
Comment lancer un processus depuis un autre processus ?
Solution
forkpuis recouvrement
...
p i d _ t f i l s = f o r k (); if ( f i l s == -1)
f p r i n t f ( stderr , " f o r k f a i l e d " ); e l s e if ( f i l s = = 0 )
e x e c l p ( " p r o g r a m m e " , " nom " , N U L L ); /* s u i t e du p r o g r a m m e p e r e */ ...
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Lancement d’un nouveau processus en C (Unix) Probl`eme
Comment lancer un processus depuis un autre processus ?
Solution
forkpuis recouvrement
...
p i d _ t f i l s = f o r k ();
if ( f i l s == -1)
f p r i n t f ( stderr , " f o r k f a i l e d " );
e l s e if ( f i l s = = 0 )
e x e c l p ( " p r o g r a m m e " , " nom " , N U L L );
/* s u i t e du p r o g r a m m e p e r e */
...
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Branchement et recouvrement Processus
p`ere
Processus fils fork
Recopie de l’int´egralit´e du programme pour le processus fils
Nouveau processus exec
Recouvrement du processus
→ fin du processus fils
Ex´ecution
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Branchement et recouvrement Processus
p`ere
Processus fils fork
Recopie de l’int´egralit´e du programme pour le processus fils
Nouveau processus exec
Recouvrement du processus
→ fin du processus fils
Ex´ecution
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Branchement et recouvrement Processus
p`ere
Processus fils fork
Recopie de l’int´egralit´e du programme pour le processus fils
Nouveau processus exec
Recouvrement du processus
→ fin du processus fils
Ex´ecution
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Branchement et recouvrement Processus
p`ere
Processus fils fork
Recopie de l’int´egralit´e du programme pour le processus fils
Nouveau processus exec
Recouvrement du processus
→ fin du processus fils
Ex´ecution
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Branchement et recouvrement Processus
p`ere
Processus fils fork
Recopie de l’int´egralit´e du programme pour le processus fils
Nouveau processus exec
Recouvrement du processus
→ fin du processus fils
Ex´ecution
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese Cr´eation de processus
Branchement et recouvrement Processus
p`ere
Processus fils fork
Recopie de l’int´egralit´e du programme pour le processus fils
Nouveau processus exec
Recouvrement du processus
→ fin du processus fils
Ex´ecution
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Plan
1 Processus : d´efinition
2 Rˆole de l’OS
3 Cr´eation de processus
4 Notion dethread
5 Synth`ese
Processus : d´efinition Rˆole de l’OS Cr´eation de processus Notion dethread Synth`ese
Thread D´efinition
Lathreadest l’unit´e de base du processus.
Un processus peut avoir plusieursthreads
Les threadspartagent le mˆeme code et les mˆemes donn´ees Chaque thread a sa propre pile
Exemple : serveur web
Rˆole : traiter les requˆetes HTTP et renvoyer les pages correspondantes
Un seul ensemble de donn´ees (fichiers HTML, PHP, . . . ) Un seul programme (traiter les requˆetes)
Une nouvelle thread `a chaque requˆete