ESIEE I3 IN301/IN3ST01 2004-2005

Systèmes d'exploitation - UNIX

TD: Synchronisation de processus et de threads

Manoeuvres en haute mer

Problème producteur/consommateur

Description du projet :

porte-avion Charles-de-Gaulle La Marine Nationale a décidé d'effectuer des simulations de ses prochaines grandes manoeuvres, et a pour cela décidé après mûre reflexion de faire appel à vos services. Vous recevez le cahier des charges ci-dessous.
Les manoeuvre mettront en jeu des portes-avions et des avions. Un porte-avion sera modélisé par un processus indépendant, ne partageant donc pas de mémoire avec les autres portes-avions.

Un porte avion n'a qu'une seule piste d'atterrissage et de décollage. Cette piste ne peut accepter qu'un seul avion à la fois. Les avions sortent du hangar (où ils ont fait le plein), et ils attendent à l'extérieur pour décoller que la piste soit libre. On considère pour simplifier que les hangars ont une capacité infini. Les avions arrivent en provenance d'un autre porte-avion et ils tournent autour du porte-avion en attendant que la piste se libère pour pouvoir atterrir. Les limites suivantes sont fixées :

La modélisation de ce qui se passe dans un porte-avion se fera sous forme de threads.

Quelles sont les possibilités qui s'offrent à vous pour effectuer le transfert d'un avion depuis un des portes-avions vers un autre portes-avions? Choisissez, après justification, une de ces possibilités. Notez que le choix du porte-avion d'arrivée est aléatoire.

Les avions ont une capacité limité en essence. Vous pouvez considérer qu'ils ont tous la même quantité d'essence au départ, mais que lorsqu'ils arrivent auprès du porte-avion où ils doivent atterrir, ils ont perdu une partie aléatoire de leur fuel (correspondant aux maneouvres effectuées). De plus, à chaque tour qu'ils passent en l'air, ils perdent une partie fixe de leur essence. Lorsque le niveau d'essence d'un des avions est trop bas (inférieur à un seuil fixé), l'avion demande à atterrir prioritairement. Un seul avion par tour peut atterrir prioritairement, mais plusieurs peuvent demander à atterrir en urgence.

Concevez un gestionnaire de type "ligne de commande", qui prendra comme paramètres


Le gestionnaire devra s'occuper de synchroniser les temps des différents portes-avions: un seul avion peut décoller ou atterrir par tour, mais plusieurs peuvent arriver autour du porte-avion.
Programmez votre modélisation.

La Marine Nationale vous demande de lui faire des recommendations détaillées sur ses maneouvres; en particulier elle souhaite perdre le moins d'avions possible, aussi par exemple elle serait très contente si vous pouviez lui indiquer le taux d'emission maximum sans perte pour 4 portes-avions, avec 50 avions tournants, et 30 avions sur le pont.
Rappel: la Marine Nationale condamne à la mort par fusillade le piratage. Je ne sais pas quelle sanction maximale peut-être décidée par le conseil de discipline de l'ESIEE.