Vous êtes sur la page 1sur 20

Chapitre 1: Les Processus

TextBook :
Operating System Concepts, Ninth Edition, A. Silberschatz,P. Galvin, and G. Gagne.
John Wiley & Sons, 2012.
Autre référence:
Modern Operating Systems, 4th Edition Andrew S. Tanenbaum. Prentice Hall, 2014.

Systèmes d’exploitation- 2INFO ENIT


Concept de Processus
 Un système d’exploitation exécute une variété de programmes:
 Système en batch (par lot) – jobs
 Systèmes à temps-partagé – programme utilisateur ou tâches

 Processus
 Programme en cours d’exécution
 L’exécution se fait d’une manière séquentielle

 Un processus inclus :
 Compteur programme (program counter)
 Pile (stack)
 Section de données

Systèmes d’exploitation- 2INFO 2 ENIT


Le Processus
 Plusieurs parties
 Le code du programme (text section)
 L’activité courante incluant le program counter, et l’état des registres du
processeur
 Pile (stack) contenant les données temporaires
 Paramètres de fonction, adresses de retour, variables locales
 Section de données (data section) contenant les variables globales
 Tas (heap) contenant la mémoire allouée dynamiquement durant
l’exécution
 Un Programme est une entité passive, alors qu’un processus est une
entité active
 Un Programme devient un processus quand le fichier exécutable est
chargé en mémoire
 Un seul programme peut donner naissance à plusieurs processus
 Plusieurs utilisateurs exécutant le même programme
Systèmes d’exploitation- 2INFO 3 ENIT
Processus en Mémoire
max
Pile

tas

données

code
0

Systèmes d’exploitation- 2INFO 4 ENIT


Etat d’un Processus
 Quand un processus s’exécute, il change d’état
 nouveau/new: Le processus vient d’être créé
 en exécution/running: Les instructions en train d’être exécutées
 attente/waiting: Le processus attend l’occurrence d’un
événement
 prêt/ready: Le processus attend qu’il soit assigné au processeur
 terminé/terminated: Le processus a fini son exécution

Systèmes d’exploitation- 2INFO 5 ENIT


Diagramme d’état d’un Processus

chargé interrompu

alloué
fin d’E/S ou d’événement début d’E/S ou d’événement

Systèmes d’exploitation- 2INFO 6 ENIT


Process Control Block (PCB)
 Représentation d’un Processus dans le système
 Structure de données (Table)
 PCB (Process Control Block)
 BCP (Block de Contrôle de Processus)

Informations associées à chaque processus


 Etat du Processus
 Compteur programme
 Registers CPU
 Informations d’ordonnacement
 Informations de gestion de mémoire
 Informations d’E/S

Systèmes d’exploitation- 2INFO 7 ENIT


Process Control Block (PCB)

Etat du processus

Numéro du processus

Compteur programme

Registres

Limites mémoire

Liste des fichiers ouverts

...
Systèmes d’exploitation- 2INFO 8 ENIT
Commutation de contexte entre deux processus

Systèmes d’exploitation- 2INFO 9 ENIT


Ordonnancement des Processus

 Maximiser l’utilisation du CPU, commuter rapidement les


processus dans le CPU pour partager le temps
 Ordonnanceur de Processus sélectionne un parmi plusieurs
processus pour l’exécution suivante sur le CPU
 Maintenir des files d'attente de processus
 File d’attente des travaux– tous les processus du système
 File d’attente CPU – ensemble des processus en mémoire
centrale prêts attendant l’exécution
 File d’attente E/S – ensemble des processus en vue d’effectuer
une E/S
 Les Processus migrent entre les différentes files d’attente

Systèmes d’exploitation- 2INFO 10 ENIT


Ordonnancement des Processus

nouveau
travail
file d'attente des travaux
création
d'un
Disque
processus

SW AP
IN SW AP
stockage sur disque OUT

chargement sur disque transfert


en mémoire en mémoire
sur disque

CPU
file d'attente CPU

E / S
file d'attente E / S

Systèmes d’exploitation- 2INFO 11 ENIT


Representation des processus sous Linux
 Representés par la structure en (langage C) task_struct
Pid_t pid; /* identifiant du processus */
long state; /* état du processus */
unsigned int time_slice /* informations d’ordonnacement */
struct task_struct *parent; /* père du processus */
struct list_head children; /* le fils du processus */
struct files_struct *files; /* liste des ouverts */
struct mm_struct *mm; /* espace d’addresses de ce programme */

Systèmes d’exploitation- 2INFO 12 ENIT


Création de Processus
 Un processus Père crée des processus fils, qui à son tours crée
d’autres processus, formant un arbre de processus

 Un processus est identifié et géré via un process identifier (pid)

 Scénarios de partage de ressources


 Père et fils partagent toutes les ressources
 fils partagent un sous-ensemble des ressources du père
 Père et fils ne partagent aucune ressource

 Scénarios d’exécution
 Père et fils s’exécute simultanément
 Le père attend la fin de l’exécution des fils

Systèmes d’exploitation- 2INFO 13 ENIT


Création de Processus
 Scénarios du code à exécuter
 Le fils est une duplique du père
 Le fils charge un autre programme

 Sous UNIX
 fork est un appel système (system call) permettant de créer un nouveau
processus
 exec est un appel système utilisé après fork pour charger un nouveau
programme

Systèmes d’exploitation- 2INFO 14 ENIT


Création de Processus

reprend
père

termine

fils

Systèmes d’exploitation- 2INFO 15 ENIT


Fork dans un programme C
#include <sys/types.h>
#include <studio.h>
#include <unistd.h>
int main()
{
pid_t pid;
/* créer un autre processus */
pid = fork();
if (pid < 0) { /* erreur */
fprintf(stderr, "Fork Echec");
return 1;
}
else if (pid == 0) { /* processus fils */
execlp("/bin/ls", "ls", NULL);
}
else { /* processus père */
/* le père attend son fils*/
wait (NULL);
printf (“fin exécution du fils");
}
return 0;
Systèmes d’exploitation- 2INFO } 16 ENIT
Arbre de Processus sous Solaris

Systèmes d’exploitation- 2INFO 17 ENIT


Terminaison d’un Processus
 Le Processus exécute la dernière instruction et demande à l’OS de
le supprimer (exit)
 Le fils envoie son état de terminaison (entier) à son père (via wait)
 L’OS libère les ressources allouées au processus

 Le père termine l’exécution du processus fils (abort)


 Le fils a dépassé les ressources allouées
 La tâche allouée au fils n’est plus requise
 Si le père est en train de mettre fin à son exécution
 Certains OS ne permettent pas aux processus fils de continuer si le
père termine
– Terminer l’exécution de tous les fils – terminaison en cascade

Systèmes d’exploitation- 2INFO 18 ENIT


Exercice 1
 Donner l'arborescence des processus créés par le programme suivant

#include <unistd.h>
#include <stdio.h>
int main ( )
{ pid_t pid;
int i ;
for (i=0; i<2; i++){
pid = fork();
printf(" Processus %d de père %d. \n", getpid(), getppid()) ;
}
}

Systèmes d’exploitation- 2INFO 19 ENIT


Exercice 2
 Donner l'arborescence des processus créés par le programme suivant

#include <unistd.h>
#include <stdio.h>
int main ( )
{ pid_t pid;
int i ;
for (i=0; i<4; i++){
pid = fork();
if (pid > 0 )
break ;
printf(" Processus %d de père %d. \n", getpid(), getppid()) ;
}
}
Systèmes d’exploitation- 2INFO 20 ENIT

Vous aimerez peut-être aussi