Syst' Emes D'exploitation Cours 2/10: Processus I: Nicolas Sabouret

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

Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Systèmes d’Exploitation
Cours 2/10 : Processus I

Nicolas Sabouret
Université Paris-Sud

Licence 3 - semestre S5

Info32b Systèmes d’Exploitation Nicolas Sabouret 1/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Plan

1 Processus : définition

2 Rôle de l’OS

3 Création de processus

4 Notion de thread

Info32b Systèmes d’Exploitation Nicolas Sabouret 2/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Plan

1 Processus : définition

2 Rôle de l’OS

3 Création de processus

4 Notion de thread

5 Synthèse

Info32b Systèmes d’Exploitation Nicolas Sabouret 3/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Définition

Programme

Info32b Systèmes d’Exploitation Nicolas Sabouret 4/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Définition

Programme
Un programme est une séquence d’instructions

Info32b Systèmes d’Exploitation Nicolas Sabouret 4/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Définition

Programme
Un programme est une séquence d’instructions

Processeur

Info32b Systèmes d’Exploitation Nicolas Sabouret 4/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Définition

Programme
Un programme est une séquence d’instructions

Processeur
Un processeur est un automate (électronique) de traitement.
Il peut exécuter un programme
Il modifie sont état en fonction des instructions

Info32b Systèmes d’Exploitation Nicolas Sabouret 4/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Définition

Programme
Un programme est une séquence d’instructions

Processeur
Un processeur est un automate (électronique) de traitement.
Il peut exécuter un programme
Il modifie sont état en fonction des instructions

Processus
Un processus est un programme exécuté par un processeur.

Info32b Systèmes d’Exploitation Nicolas Sabouret 4/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Programme et processus

Processus
Un processus est un programme exécuté par un processeur

Info32b Systèmes d’Exploitation Nicolas Sabouret 5/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Programme et processus

Processus
Un processus est un programme exécuté par un processeur
→ Un même programme peut donner naissance à plusieurs
processus.

Exemples de processus

Info32b Systèmes d’Exploitation Nicolas Sabouret 5/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Programme et processus

Processus
Un processus est un programme exécuté par un processeur
→ Un même programme peut donner naissance à plusieurs
processus.

Exemples de processus
Logiciel de traitement de texte en cours d’exécution
Compilation de code source
Tâche système (ex : envoi de données vers l’imprimante)

Info32b Systèmes d’Exploitation Nicolas Sabouret 5/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Programme et processus

Processus
Un processus est un programme exécuté par un processeur
→ Un même programme peut donner naissance à plusieurs
processus.

Exemples de processus
Logiciel de traitement de texte en cours d’exécution
Compilation de code source
Tâche système (ex : envoi de données vers l’imprimante)

Création
Un processus est forcément créé par un autre processus
(ex : par l’OS)

Info32b Systèmes d’Exploitation Nicolas Sabouret 5/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Remarque

Concurrence
Dans un système moderne, plusieurs processus s’exécutent en
parallèle
Exemples :
Le shell (tout l’interface graphique → plusieurs processus)
L’éditeur TexStudio avec lequel je tape ce cours
Le compilateur LaTeX
Le visualisateur PDF
Les processus de l’OS (gestion du réseau, gestion des utilisateurs, . . . )

Info32b Systèmes d’Exploitation Nicolas Sabouret 6/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Remarque

Concurrence
Dans un système moderne, plusieurs processus s’exécutent en
parallèle
Exemples :
Le shell (tout l’interface graphique → plusieurs processus)
L’éditeur TexStudio avec lequel je tape ce cours
Le compilateur LaTeX
Le visualisateur PDF
Les processus de l’OS (gestion du réseau, gestion des utilisateurs, . . . )

Mode superviseur
On distingue les processus de l’OS des processus utilisateur
. . . mais tous sont en concurrence pour l’accès aux ressources

Info32b Systèmes d’Exploitation Nicolas Sabouret 6/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Structure de données d’un processus

Environnement
Variables héritées 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
→ segment exécutable du processus
Info32b Systèmes d’Exploitation Nicolas Sabouret 7/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Plan

1 Processus : définition

2 Rôle de l’OS
Structure d’un processus
Cycle de vie
Consistance

3 Création de processus

4 Notion de thread

5 Synthèse

Info32b Systèmes d’Exploitation Nicolas Sabouret 8/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Rôle de l’OS

Création et suppression de processus


Programme → processus
Munir le programme des informations nécessaires pour son exécution

Suspension et reprise
Multiprogrammation et temps partagé → interrompre et reprendre
les processus
Gestion de la mémoire où sont stockées les processus interrompus

Communication et synchronisation
Partage de données en plusieurs processus
Consistance de l’état de la mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 9/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Rôle de l’OS

Création et suppression de processus


Programme → processus
Munir le programme des informations nécessaires pour son exécution

Suspension et reprise
Multiprogrammation et temps partagé → interrompre et reprendre
les processus
Gestion de la mémoire où sont stockées les processus interrompus

Communication et synchronisation
Partage de données en plusieurs processus
Consistance de l’état de la mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 10/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Structure de données

Process Control Block


Bloc de contrôle de processus

Structure de données contenant les informations relatives à un


processus utilisée par l’OS pour la gestion des processus.

Contenu
Définir l’ensemble des éléments utiles
(Exercice)

Info32b Systèmes d’Exploitation Nicolas Sabouret 11/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Mémoire

Représenter les informations mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 12/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Mémoire

Représenter les informations mémoire


Pointeur de pile
Variables d’environnement
Tas (variables globales)
Mémoire paginée : table des pages (adresse logique → adresse
physique)
Mémoire segmentée : table des segments (adresse de base,
limite)

Voir cours 6

Info32b Systèmes d’Exploitation Nicolas Sabouret 12/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Processeur

Gérer l’accès au processeur


Ordonnancement

Info32b Systèmes d’Exploitation Nicolas Sabouret 13/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Processeur

Gérer l’accès au processeur


Ordonnancement

Valeur de priorité
Pointeur vers la file de priorité
Données d’utilisation passée du processeur (fréquence,
durée. . . )

Voir cours 3

Info32b Systèmes d’Exploitation Nicolas Sabouret 13/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Processeur

Gérer l’accès au processeur


Ordonnancement

Valeur de priorité
Pointeur vers la file de priorité
Données d’utilisation passée du processeur (fréquence,
durée. . . )

Voir cours 3

Usage du processeur
Informations sur l’utilisateur du processeur

Info32b Systèmes d’Exploitation Nicolas Sabouret 13/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Périphériques

Gérer l’accès aux périphériques


Certains périphériques ne peuvent pas être utilisés par
plusieurs processus en même temps.
Ex : imprimante → file d’attente
Tous les processus n’ont pas accès à tous les périphériques
(droits d’accès)
Ex : disque réseau monté par un utilisateur

Info32b Systèmes d’Exploitation Nicolas Sabouret 14/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Périphériques

Gérer l’accès aux périphériques


Certains périphériques ne peuvent pas être utilisés par
plusieurs processus en même temps.
Ex : imprimante → file d’attente
Tous les processus n’ont pas accès à tous les périphériques
(droits d’accès)
Ex : disque réseau monté par un utilisateur

Dans le PCB
Chaque processus se voit attribué un ensemble de périphériques
→ liste d’identifiants de périphériques

Info32b Systèmes d’Exploitation Nicolas Sabouret 14/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Temps partagé

Problème
Lorsqu’on interrompt un processus, il faut être capable de le
reprendre plus tard. . .

Info32b Systèmes d’Exploitation Nicolas Sabouret 15/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Temps partagé

Problème
Lorsqu’on interrompt un processus, il faut être capable de le
reprendre plus tard. . .

Informations sur l’état du processus


Exemples :
Compteur d’instruction
Registres du processus

Info32b Systèmes d’Exploitation Nicolas Sabouret 15/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Temps partagé

Problème
Lorsqu’on interrompt un processus, il faut être capable de le
reprendre plus tard. . .

Informations sur l’état du processus


Exemples :
Compteur d’instruction
Registres du processus

État du processus
Actif ou non (voir cycle de vie. . . )

Info32b Systèmes d’Exploitation Nicolas Sabouret 15/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Contenu d’un PCB

Contenu
Information mémoire (voir cours 6)
Données d’ordonnancement (voir cours 3)
Périphériques alloués
Informations d’usage
État du processus (voir cycle de vie) + sauvegarde de l’état
du processeur

Info32b Systèmes d’Exploitation Nicolas Sabouret 16/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Rôle de l’OS

Création et suppression de processus


Programme → processus
Munir le programme des informations nécessaires pour son exécution

Suspension et reprise
Multiprogrammation et temps partagé → interrompre et reprendre
les processus
Gestion de la mémoire où sont stockées les processus interrompus

Communication et synchronisation
Partage de données en plusieurs processus
Consistance de l’état de la mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 17/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Nouveau

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Nouveau

Chargement
du code

Édition
de liens
Le processus prêt est mis
Prêt
Recopie de l’ dans la file d’attente
environnement

Initialisation Initialisation
du tas pointeur pile

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Nouveau
Lancement
Exécution
Chargement 1ere instruction
du code
ordonnanceur

Édition
de liens
Le processus est sélectionné
Prêt
Recopie de l’ pour l’accès au processeur
environnement

Initialisation Initialisation
du tas pointeur pile

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Allocations
de ressources
sur demande
Nouveau
Lancement
Exécution Terminé
Chargement 1ere instruction
du code
ordonnanceur

Édition
de liens
Prêt
Recopie de l’
environnement

Initialisation Initialisation
du tas pointeur pile

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Allocations
de ressources
sur demande
Nouveau
Lancement
Exécution Terminé
Chargement 1ere instruction
du code
ordonnanceur

ion
upt
err
Édition int
de liens Un seul processus en
exécution à la fois
Prêt Mais plusieurs peuvent être
Recopie de l’
environnement prêts (file d’attente)

Initialisation Initialisation
du tas pointeur pile

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Allocations
de ressources
sur demande
Nouveau
Lancement
Exécution Terminé
Chargement 1ere instruction
du code
ordonnanceur

requête E/S
ion
upt
err
Édition int En Attente
de liens
Prêt
Recopie de l’
Les processus passent la
environnement
main lorsqu’ils accèdent à
une autre ressource (E/S)
Initialisation Initialisation
du tas pointeur pile

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Allocations
de ressources
sur demande
Nouveau
Lancement
Exécution Terminé
Chargement 1ere instruction
du code
ordonnanceur

requête E/S
ion
upt
err
Édition int En Attente
de liens
fin E/S
Prêt
Recopie de l’ (interruption)
environnement

Initialisation Initialisation
du tas pointeur pile

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Allocations
de ressources
sur demande
Nouveau
Lancement
Exécution Terminé
Chargement 1ere instruction
du code
ordonnanceur

requête E/S
ion
upt
err
Édition int En Attente
de liens
fin E/S
Prêt
Recopie de l’ (interruption)
environnement 0-1 processus en exécution
0-N processus prêts
Initialisation Initialisation
pointeur pile 0-N processus en attente
du tas

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Exécution
r
eu
nc requête E/S
n na tion
do p
or terru
in En Attente

fin E/S
Prêt
(interruption)
0-1 processus en exécution
0-N processus prêts
0-N processus en attente

Info32b Systèmes d’Exploitation Nicolas Sabouret 18/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Exécution

Prêt En Attente

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Suspension de l’exécution
Le processus en exécution laisse la
main si :

Exécution

Prêt En Attente

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Suspension de l’exécution
Le processus en exécution laisse la
main si :
Il fait une demande d’E/S
Exécution
→ liste EA

Prêt En Attente

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Suspension de l’exécution
Le processus en exécution laisse la
main si :
Il fait une demande d’E/S
Exécution
→ liste EA
Sa tranche de temps est expirée
Prêt En Attente → file Prêt

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Suspension de l’exécution
Le processus en exécution laisse la
main si :
Il fait une demande d’E/S
Exécution
→ liste EA
Sa tranche de temps est expirée
Prêt En Attente → file Prêt
Il crée un processus fils
→ file Prêt

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Suspension de l’exécution
Le processus en exécution laisse la
main si :
Il fait une demande d’E/S
Exécution
→ liste EA
Sa tranche de temps est expirée
Prêt En Attente → file Prêt
Il crée un processus fils
→ file Prêt
Il lance une interruption wait
→ liste EA

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Cycle de vie du processus

Suspension de l’exécution
Le processus en exécution laisse la
main si :
Il fait une demande d’E/S
Exécution
→ liste EA
Sa tranche de temps est expirée
Prêt En Attente → file Prêt
Il crée un processus fils
→ file Prêt
Il lance une interruption wait
→ liste EA

Info32b Systèmes d’Exploitation Nicolas Sabouret 19/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Rôle de l’OS

Création et suppression de processus


Programme → processus
Munir le programme des informations nécessaires pour son exécution

Suspension et reprise
Multiprogrammation et temps partagé → interrompre et reprendre
les processus
Gestion de la mémoire où sont stockées les processus interrompus

Communication et synchronisation
Partage de données en plusieurs processus
Consistance de l’état de la mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 20/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

Mémoire (RAM) UC (registres)

Deux processus en mémoire se partagent une donnée A

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

Mémoire (RAM) UC (registres)

Processus 1 s’exécute

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

Mémoire (RAM) UC (registres)

A A

Processus 1 souhaite effectuer A = A+1

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A
Mémoire (RAM) UC (registres)

A A

Processus 2 prend la main : l’OS sauve l’état de A en mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A
Mémoire (RAM) UC (registres)

Processus 2 s’exécute

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A
Mémoire (RAM) UC (registres)

A A

Processus 2 souhaite effectuer A = A+1

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A
Mémoire (RAM) UC (registres)

A A1

Processus 2 effectue A = A+1

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A A1
Mémoire (RAM) UC (registres)

A A1

Processus 1 prend la main : l’OS sauve l’état de A en mémoire

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A A1
Mémoire (RAM) UC (registres)

La variable A existe à 3 endroits différents,


avec des valeurs différentes !

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A A1
Mémoire (RAM) UC (registres)

A A

Processus 1 reprend où il en était

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A A1
Mémoire (RAM) UC (registres)

A A1

Processus 1 effectue A = A+1

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A A1
Mémoire (RAM) UC (registres)

A A1

Le processus travaille sur une mauvaise valeur de A !

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire
Processus 1 Processus 2

A A1
Mémoire (RAM) UC (registres)

A A1

Le processus travaille sur une mauvaise valeur de A !

Et il y a aussi le cache, la RAM, le disque (swap). . .

Info32b Systèmes d’Exploitation Nicolas Sabouret 21/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Structure d’un processus Cycle de vie Consistance

Consistance de la mémoire

Actions de l’OS
mémoire : chaque processus a son propre espace mémoire
→ pas de problème de consistance mémoire/processeur
Verrous : un processus peut verrouiller l’accès à un fichier
→ file d’attente pour l’accès à la ressource
Algorithmes de synchronisation
→ cours 4

Info32b Systèmes d’Exploitation Nicolas Sabouret 22/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Plan

1 Processus : définition

2 Rôle de l’OS

3 Création de processus
Création de processus

4 Notion de thread

5 Synthèse

Info32b Systèmes d’Exploitation Nicolas Sabouret 23/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création
Rappel
Un processus est forcément créé par un autre processus

Info32b Systèmes d’Exploitation Nicolas Sabouret 24/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création
Rappel
Un processus est forcément créé par un autre processus

Sous Unix
2 appels système :
fork pour créer un processus à partir du processus courant
→ Le processus est dupliqué
exec pour remplacer le processus courant par un autre
processus

Info32b Systèmes d’Exploitation Nicolas Sabouret 24/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création
Rappel
Un processus est forcément créé par un autre processus

Sous Unix
2 appels système :
fork pour créer un processus à partir du processus courant
→ Le processus est dupliqué
exec pour remplacer le processus courant par un autre
processus

Sous Windows
createprocess pour créer un processus (cf. exec Unix)
→ Le processus courant est conservé
Info32b Systèmes d’Exploitation Nicolas Sabouret 24/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

# include < stdio .h >


# include < stdlib .h >
# include < sys / types .h >
# include < unistd .h >

int main () {

printf ( " Starting ...\ n " );

return 0;
}

Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

#include ...
int main () {

printf ( " Starting ...\ n " );

return 0;
}

Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

#include ...
int main () {

printf ( " Starting ...\ n " );

pid_t proc ;
proc = fork ();

return 0;
}

Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

#include ...
int main () {

...
pid t proc = fork();
if ( proc == -1)
fprintf ( stderr , " fork failed " );

return 0;
}

Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

#include ...
int main () {
...
else {
if ( proc ==0) {
/* c ’ est le fils */
printf ( " % d : fils de % d \ n " , getpid () , getppid ());

} else {
/* c ’ est le pere */
printf ( " % d : pere de % d \ n " , getpid () , proc );

}
}

return 0;
}
Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

#include ...
int main () {
...
if ( proc ==0) {
/* c ’ est le fils */
printf ( " % d : fils de % d \ n " , getpid () , getppid ());
sleep (5);
printf ( " % d : termine \ n " , getpid ());
exit (5);
} else {
...
}
}

return 0;
}
Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)

#include ...
int main () {

...
} else {
/* c ’ est le pere */
printf ( " % d : pere de % d \ n " , getpid () , proc );
int r ;
waitpid ( proc , &r , 0); /* attente du fils */
printf ( " % d : fils % d sort ( code % d )\ n " ,
getpid () , proc , r );
}
}

return 0;
}

Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)


# include < stdio .h >
# include < stdlib .h >
# include < sys / types .h >
# include < unistd .h >

int main () {

printf ( " Starting ...\ n " );

pid_t proc ;
proc = fork ();

if ( proc == -1)
fprintf ( stderr , " fork failed " );

else {
if ( proc ==0) {
/* c ’ est le fils */
printf ( " % d : fils de % d \ n " , getpid () , getppid ());
sleep (5);
printf ( " % d : termine \ n " , getpid ());
exit (5);
} else {
/* c ’ est le pere */
printf ( " % d : pere de % d \ n " , getpid () , proc );
int r ;
waitpid ( proc , &r , 0); /* attente du fils */
printf ( " % d : fils % d sort ( code % d )\ n " ,
getpid () , proc , r );
}
}
Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Création d’un processus en C (Unix)


# include < stdio .h >
# include < stdlib .h >
# include < sys / types .h >
# include < unistd .h >

int main () { Résultat de l’exécution :


printf ( " Starting ...\ n " ); Starting ...
pid_t proc ; 29227: pere de 29228
proc = fork (); 29228: fils de 29227
if ( proc == -1) 29228: termine
fprintf ( stderr , " fork failed " );
29227: fils 29228 sort
else {
if ( proc ==0) { (code 1280)
/* c ’ est le fils */
printf ( " % d : fils de % d \ n " , getpid () , getppid ());
sleep (5);
printf ( " % d : termine \ n " , getpid ());
exit (5);
} else {
/* c ’ est le pere */
printf ( " % d : pere de % d \ n " , getpid () , proc );
int r ;
waitpid ( proc , &r , 0); /* attente du fils */
printf ( " % d : fils % d sort ( code % d )\ n " ,
getpid () , proc , r );
}
}
Info32b Systèmes d’Exploitation Nicolas Sabouret 25/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Recouvrement d’un processus en C (Unix)


# include < stdio .h >
# include < stdlib .h >
# include < sys / types .h >
# include < unistd .h >

int main () {
char * argu [3] = { " " , " -a " , NULL };
execv ( " / bin / uname " , argu );

printf ( " Ce code n ’ est jamais atteint !\ n " );

return 0;
}

Info32b Systèmes d’Exploitation Nicolas Sabouret 26/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Recouvrement d’un processus en C (Unix)


# include < stdio .h >
# include < stdlib .h >
# include < sys / types .h >
# include < unistd .h >

int main () {
char * argu [3] = { " " , " -a " , NULL };
execv ( " / bin / uname " , argu );

printf ( " Ce code n ’ est jamais atteint !\ n " );

return 0;
}

Résultat de l’exécution :
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

Info32b Systèmes d’Exploitation Nicolas Sabouret 26/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Recouvrement d’un processus en C (Unix)


# include < stdio .h >
# include < stdlib .h >
# include < sys / types .h >
# include < unistd .h >

int main () {
char * argu [3] = { " " , " -a " , NULL };
execv ( " / bin / uname " , argu );

printf ( " Ce code n ’ est jamais atteint !\ n " );

return 0;
}

Recouvrement
Le nouveau processus recouvre l’ancien.
→ on ne ressort pas d’un recouvrement !
Info32b Systèmes d’Exploitation Nicolas Sabouret 26/34
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Lancement d’un nouveau processus en C (Unix)

Problème
Comment lancer un processus depuis un autre processus ?

Info32b Systèmes d’Exploitation Nicolas Sabouret 27/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Lancement d’un nouveau processus en C (Unix)

Problème
Comment lancer un processus depuis un autre processus ?

Solution
fork puis recouvrement
...
pid_t fils = fork ();
if ( fils == -1)
fprintf ( stderr , " fork failed " );
else if ( fils ==0)
execlp ( " programme " ," nom " , NULL );
/* suite du programme pere */
...

Info32b Systèmes d’Exploitation Nicolas Sabouret 27/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Branchement et recouvrement
Processus
père

fork
Processus
fils
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Branchement et recouvrement
Processus
père

fork
Processus
fils

Recopie de l’intégralité
du programme pour le
processus fils
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Branchement et recouvrement
Processus
père

fork
Processus
fils

Recopie de l’intégralité
du programme pour le
processus fils
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Branchement et recouvrement
Processus
père

fork
Processus Nouveau
fils exec processus

Recopie de l’intégralité
du programme pour le
processus fils
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Branchement et recouvrement
Processus
père

fork
Processus Nouveau
fils exec processus

Recopie de l’intégralité Recouvrement du processus


du programme pour le → fin du processus fils
processus fils
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse
Création de processus

Branchement et recouvrement
Processus
père

fork Exécution

Processus Nouveau
fils exec processus

Recopie de l’intégralité Recouvrement du processus


du programme pour le → fin du processus fils
processus fils

Info32b Systèmes d’Exploitation Nicolas Sabouret 28/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Plan

1 Processus : définition

2 Rôle de l’OS

3 Création de processus

4 Notion de thread

5 Synthèse

Info32b Systèmes d’Exploitation Nicolas Sabouret 29/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Thread

Définition
La thread est l’unité de base du processus.
Un processus peut avoir plusieurs threads
Les threads partagent le même code et les mêmes données
Chaque thread a sa propre pile

Exemple : serveur web


Rôle : traiter les requêtes HTTP et renvoyer les pages
correspondantes
Un seul ensemble de données (fichiers HTML, PHP, . . . )
Un seul programme (traiter les requêtes)
Une nouvelle thread à chaque requête

Info32b Systèmes d’Exploitation Nicolas Sabouret 30/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Principe

code données droits

envt tas fichiers

pile
registres
Processus

(contexte)
exécution
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Principe

code données droits

envt tas fichiers

pile pile
registres registres
Processus

(contexte) (contexte)
exécution

exécution
Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Principe

code données droits

envt tas fichiers

pile pile pile


registres registres registres
Processus

(contexte) (contexte) (contexte)


...
exécution

exécution

exécution

Info32b Systèmes d’Exploitation Nicolas Sabouret 31/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Utilisation des threads

Avantages

Info32b Systèmes d’Exploitation Nicolas Sabouret 32/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Utilisation des threads

Avantages
Partage du code → gain de place en mémoire
Réactivité : le processus continue à s’exécuter pendant qu’une
thread est en attente (Ex : navigateur et chargement d’images)
Parallélisation sur les machines multi-processeur

Info32b Systèmes d’Exploitation Nicolas Sabouret 32/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Utilisation des threads

Avantages
Partage du code → gain de place en mémoire
Réactivité : le processus continue à s’exécuter pendant qu’une
thread est en attente (Ex : navigateur et chargement d’images)
Parallélisation sur les machines multi-processeur

Thread et processus
2 questions :
Lors d’un fork, faut-il aussi dupliquer les threads du père ?

Info32b Systèmes d’Exploitation Nicolas Sabouret 32/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Utilisation des threads

Avantages
Partage du code → gain de place en mémoire
Réactivité : le processus continue à s’exécuter pendant qu’une
thread est en attente (Ex : navigateur et chargement d’images)
Parallélisation sur les machines multi-processeur

Thread et processus
2 questions :
Lors d’un fork, faut-il aussi dupliquer les threads du père ?
Oui si on veut cloner le père (cas rare)
Non si c’est pour faire un exec après (cas fréquent)
→ réserver le fork aux ”petits” processus mono-thread

Info32b Systèmes d’Exploitation Nicolas Sabouret 32/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Utilisation des threads

Avantages
Partage du code → gain de place en mémoire
Réactivité : le processus continue à s’exécuter pendant qu’une
thread est en attente (Ex : navigateur et chargement d’images)
Parallélisation sur les machines multi-processeur

Thread et processus
2 questions :
Lors d’une interruption, faut-il prévenir toutes les threads ?

Info32b Systèmes d’Exploitation Nicolas Sabouret 32/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Utilisation des threads

Avantages
Partage du code → gain de place en mémoire
Réactivité : le processus continue à s’exécuter pendant qu’une
thread est en attente (Ex : navigateur et chargement d’images)
Parallélisation sur les machines multi-processeur

Thread et processus
2 questions :
Lors d’une interruption, faut-il prévenir toutes les threads ?
Oui pour un signal global (ex : SIGKILL)
Non pour une E/S
→ À déterminer par l’OS

Info32b Systèmes d’Exploitation Nicolas Sabouret 32/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

Plan

1 Processus : définition

2 Rôle de l’OS

3 Création de processus

4 Notion de thread

5 Synthèse

Info32b Systèmes d’Exploitation Nicolas Sabouret 33/34


Processus : définition Rôle de l’OS Création de processus Notion de thread Synthèse

À retenir

Un processus est un programme exécuté par un processeur


Un processus est composé du code et des données : variables
d’environnement, tas et pile
L’OS stocke les informations sur les processus dans un
Process Control Block
Le cycle de vie du processus : prêt, en exécution, en attente
L’OS assure la consistance des données en mémoire
Création de processus : fork+exec ou createprocess
Les threads partagent le code, l’environnement et le tas

Info32b Systèmes d’Exploitation Nicolas Sabouret 34/34

Vous aimerez peut-être aussi