Vous êtes sur la page 1sur 3

2009 - 2010

Systèmes d’exploitation 2
TD n 1 : Rappel sur l’ordonnancement des processus et introduction à la
synchronisation

Mme Lilia SFAXI


Systèmes d’exploitation 2

Systèmes d’exploitation 2
TD n 1 : Rappel sur l’ordonnancement des processus et introduction à la
synchronisation

Ce premier TD est un rappel des notions vues au préalable concernant


l’ordonnancement des processus, ainsi qu’une introduction à la synchronisation des
processus avec la primitive fork.

Ordonnancement des processus

Le Tableau 1 décrit les données d'ordonnancement des processus.

1- Dessiner un schéma illustrant l'exécution de ces processus à l'aide de:


a. L'algorithme FCFS
b. L'algorithme SJF
c. L'algorithme SRT
d. L'algorithme à Tourniquet (quantum=2)

Tableau 1 : Données de l'ordonnancement des processus

Processus Date d’arrivée Temps de traitement

A 0,000 3

B 1,001 6

C 4,001 4

D 6,001 2

2- Donner le temps de rotation moyen de ces processus pour chacun des


algorithmes précédents.

1
TD1 : Rappel sur l’ordonnancement des processus

Introduction à la synchronisation des processus


La fonction Fork :
Un fork est une fonctionnalité sous les systèmes Unix ou Linux qui permet à un
processus de se dupliquer, par exemple en vue de réaliser un second traitement,
parallèlement au premier.

Le créateur d'un nouveau processus est appelé le père et le nouveau processus, le fils.

Penchons nous maintenant sur le signature de cette fonction :

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

pid_t fork(void);

Comme vous le voyez, cette fonction renverra une variable du type pid_t (ce type est
contenu dans le fichier sys/types.h) et ne prend aucun argument. Si la fonction
échoue, la valeur renvoyée sera -1, aucun fils ne sera créé et errno contiendra le code
de l'erreur. Par contre, si la fonction réussit, la valeur renvoyée sera différente dans le
cas du fils et du père.

Dans le cas du fils, la fonction fork renverra 0, par contre, dans le cas du père, la
fonction renverra le PID du fils.

Applications :
- Proposer un programme en C utilisant la primitive fork, qui affiche « Je suis le
processus père » s’il s’agit du père, et « je suis le processus fils » s’il s’agit du
fils.
- Soit les deux extraits de programmes suivants :
fork( ) ; for (int i = 0 ; i<3 ; i++){
fork( ) ; fork( ) ;
fork( ) ; }

- Combien obtient-on de processus à la fin ? Et quel est l’effet de fork sur les
variables locales et globales ?  

2

Vous aimerez peut-être aussi