• Aucun résultat trouvé

Syst` emes d’Exploitation Cours 2/10 : Processus I

N/A
N/A
Protected

Academic year: 2022

Partager "Syst` emes d’Exploitation Cours 2/10 : Processus I"

Copied!
99
0
0

Texte intégral

(1)

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

(2)

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

(3)

Processus : d´efinition 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

(4)

Processus : d´efinition 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.

(5)

Processus : d´efinition 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.

(6)

Processus : d´efinition 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.

(7)

Processus : d´efinition 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.

(8)

Processus : d´efinition 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.

(9)

Processus : d´efinition 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)

(10)

Processus : d´efinition 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)

(11)

Processus : d´efinition 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)

(12)

Processus : d´efinition 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

(13)

Processus : d´efinition 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 graphiqueplusieurs 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

(14)

Processus : d´efinition 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 graphiqueplusieurs 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

(15)

Processus : d´efinition 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

(16)

Processus : d´efinition 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

(17)

Processus : d´efinition 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 desinformationsecessaires 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

(18)

Processus : d´efinition 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 desinformationsecessaires 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

(19)

Processus : d´efinition 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)

(20)

Processus : d´efinition 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

(21)

Processus : d´efinition 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

(22)

Processus : d´efinition 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

(23)

Processus : d´efinition 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

(24)

Processus : d´efinition 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

(25)

Processus : d´efinition 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

(26)

Processus : d´efinition 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

(27)

Processus : d´efinition 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. . .)

(28)

Processus : d´efinition 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. . .)

(29)

Processus : d´efinition 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. . .)

(30)

Processus : d´efinition 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

(31)

Processus : d´efinition 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 desinformationsecessaires 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

(32)

Processus : d´efinition 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)

(33)

Processus : d´efinition 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)

(34)

Processus : d´efinition 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)

(35)

Processus : d´efinition 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)

(36)

Processus : d´efinition 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)

(37)

Processus : d´efinition 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)

(38)

Processus : d´efinition 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)

(39)

Processus : d´efinition 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

(40)

Processus : d´efinition 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

(41)

Processus : d´efinition 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

(42)

Processus : d´efinition 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

(43)

Processus : d´efinition 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

(44)

Processus : d´efinition 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

(45)

Processus : d´efinition 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

(46)

Processus : d´efinition 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

(47)

Processus : d´efinition 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

(48)

Processus : d´efinition 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 desinformationsecessaires 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

(49)

Processus : d´efinition 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

(50)

Processus : d´efinition 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)

(51)

Processus : d´efinition 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

(52)

Processus : d´efinition 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

(53)

Processus : d´efinition 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)

(54)

Processus : d´efinition 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

(55)

Processus : d´efinition 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

(56)

Processus : d´efinition 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

(57)

Processus : d´efinition 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 !

(58)

Processus : d´efinition 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

(59)

Processus : d´efinition 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

(60)

Processus : d´efinition 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 !

(61)

Processus : d´efinition 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). . .

(62)

Processus : d´efinition 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

(63)

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

(64)

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

(65)

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

(66)

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)

(67)

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;

}

(68)

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;

}

(69)

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;

}

(70)

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;

}

(71)

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;

(72)

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 { ...

} }

(73)

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;

}

(74)

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 );

}

(75)

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)

(76)

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;

}

(77)

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

(78)

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.

(79)

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 */ ...

(80)

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 */

...

(81)

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

(82)

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

(83)

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

(84)

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

(85)

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

(86)

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

(87)

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

(88)

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

Références

Documents relatifs

Synchronisation de processus M´ ethodes de synchronisation Conclusion Mutex Algorithme de Dekker S´ emaphores Moniteurs Synchronisation en

• Pour réaliser ou maintenir une valeur économique, la direction d’une organisation doit décider des projets de transformation de processus. • Ces projets de transformation

Le multitˆ ache pr´ eemptif : le processeur signale au syst` eme d’exploitation que le processus en cours d’ex´ ecution doit ˆ etre mis en sommeil pour permettre l’ex´

Le multitˆ ache pr´ eemptif : le processeur signale au syst` eme d’exploitation que le processus en cours d’ex´ ecution doit ˆ etre mis en sommeil pour permettre l’ex´

Le multitˆ ache pr´ eemptif : le processeur signale au syst` eme d’exploitation que le processus en cours d’ex´ ecution doit ˆ etre mis en sommeil pour permettre l’ex´

Le multitˆ ache pr´ eemptif : le processeur signale au syst` eme d’exploitation que le processus en cours d’ex´ ecution doit ˆ etre mis en sommeil pour permettre l’ex´

Le multitˆ ache pr´ eemptif : le processeur signale au syst` eme d’exploitation que le processus en cours d’ex´ ecution doit ˆ etre mis en sommeil pour permettre l’ex´

– au standard POSIX pthread largement mis en oeuvre sur les systèmes UNIX/Linux – à l’API WIN32 threads fournie par Microsoft ©Windows pour les processus légers Les pages man