Semaphore
Semaphore
Semaphore
Classes 4INFO
TD SEMAPHORE
Exercice 1 : Rendez-vous à N processus
Le but de cet exercice est la gestion du trafic aérien. On ne dispose que d’une seule piste à la
fois d'atterrissage et de décollage. En plus, cette piste ne peut accepter qu'un seul avion
quelque soit la manœuvre (atterrissage ou décollage). Pour cela, on dispose de deux files
d'attente :
- en l’air de taille N pour les avions souhaitant atterrir
- et au sol de taille M pour les avions souhaitant décoller.
• une fonction Decollage ( ) qui prend un avion cloué en sol dans la file
d’attente de décollage et le fait décoller en utilisant la piste,
#define N 5
#define M 5
semaphore Decollage_vide, Decollage_plein, Atterrissage_vide, Atterrissage_plein, Piste;
Sem_Init (Decollage_vide, M); //initialisation du sémaphore Decollage_vide par la valeur M
Sem_Init (Decollage_plein, 0);
Sem_Init (Atterrissage_vide, N);
Sem_Init (Atterrissage_plein, 0);
Sem_Init (Piste, 1);
void SortirAvions ( )
{
……………………………………………………………………………………………..
……………………………………………………………………………………………..
Ajouter_un_avion_dans_la_zone_attente_decollage( );
……………………………………………………………………………………………..
……………………………………………………………………………………………..
}
void Decollage ( )
{
……………………………………………………………………………………………..
……………………………………………………………………………………………..
Faire_decoller_un_avion ( );
……………………………………………………………………………………………..
……………………………………………………………………………………………..
}
void AmenerAvions ( )
{
……………………………………………………………………………………………..
……………………………………………………………………………………………..
Ajouter_un_avion_dans_la_zone_attente_atterrissage( );
……………………………………………………………………………………………..
……………………………………………………………………………………………..
}
void Atterrissage ( )
{
……………………………………………………………………………………………..
……………………………………………………………………………………………..
Faire_Atterrir_un_avion ( );
……………………………………………………………………………………………..
……………………………………………………………………………………………..
}
Remarques :
Chaque opération est effectuée par une machine spécialisée (mRC, mBO, mAS, mEM).
Les stocks de pièces détachées et d’encre sont supposés disponibles quand la machine est
disponible. Les opérations RC et BO se font en parallèle. L’opération AS doit être effectuée,
après ces deux opérations, en prélevant directement les éléments sur les machines mRC et
mBO. Le produit assemblé est déposé dans un stock en attente de l’opération EM.
L’opération EM se fait donc après AS, à partir du stock. Le stock est supposé de taille N et de
discipline FIFO.
mRC( )
{ while (1)
{
RC( ) ;
}
}
mAS( )
{ while (1)
{
AS( ) ;
}
}
mEM( )
{ while (1)
{
EM() ;
}
}
Exercice 4 :
Deux villes A et B sont reliées par une seule voie de chemin de fer. Les trains peuvent circuler
dans le même sens de A vers B ou de B vers A. Mais, ils ne peuvent pas circuler simultanément dans
les sens opposés. On considère deux classes de processus: le nombre N de trains allant de A vers B
(Train AversB) et le nombre M de trains allant de B vers A (Train BversA).