Simulation d`un outil d`aide au contrôle aérien
Transcription
Simulation d`un outil d`aide au contrôle aérien
Système d’exploitation Introduction aux systèmes distribués Simulation d’un outil d’aide au contrôle aérien Nicolas Belloir et Eric Cariou Projet commun SD/SE Ce document décrit le sujet du projet commun entre l’UE de système d’exploitation et l’UE d’introduction aux systèmes distribués. Il est à faire en binôme. Il sera rendu un rapport par partie, suivi d’une évaluation sur machine. 1 Description générale de l’application à développer On désire simuler le fonctionnement d’un outil d’aide au contrôle aérien (appelé dans la suite Système de Gestion du Contrôle Aérien SGCA). L’application devra permettre de prendre en charge plusieurs avions, de présenter au contrôleur aérien la liste triée par priorité des avions dont il a la charge. Le contrôleur pourra sélectionner un avion de cette liste et entrer au clavier une instruction. Il n’est pas obligé de prendre le premier avion de la liste. communication via sockets TCP SGCA communication Console via RPC Console Fig. 1 – Architecture générale de l’application L’application est constituée d’un ensemble d’éléments étant distribués, comme représenté sur la figure 1 : ( Des avions ( Un SGCA coordonnant les communications entre les avions et le(s) contrôleur(s) ( Une console pour chaque contrôleur lui permettant, via le SGCA de contrôler des avions 2 Description des éléments formant l’application 2.1 Un avion Un avion est caractérisé par les informations suivantes : son numéro de vol, son altitude courante, sa vitesse courante, son cap courant et ses coordonnées. L’état de l’avion doit être donné au contrôleur. Il doit être d’un de ces types : ( normal : l’avion ne présente pas de problème ; Université de Pau et des Pays de l’Adour 2006-2007 Licence Informatique 3ème année Système d’exploitation Introduction aux systèmes distribués ( alarme intermédiaire : l’avion présente un problème ne nécessitant pas d’atterrissage ou de déroutage ; il doit cependant avoir un couloir aérien plus large ; ( alarme critique : l’avion présente un problème nécessitant un atterrissage immédiat. Un contrôleur, via le SGCA, peut modifier les caractéristiques de l’avion en lui demandant de changer son altitude, son cap ou sa vitesse. A intervalle de temps régulier, un avion envoie toutes ses caractéristiques au SGCA. La communication entre le SGCA et un avion se fait via des sockets TCP. Pour implémenter un avion, complétez le programme avion.c qui vous a été donné. Ce programme gère le vol de l’avion en fonction de ses caractèristiques. Il reste à implémenter la partie communication avec le SGCA. 2.2 Le SGCA Le SGCA devra être multiprocessus. Il sera composé de quatre processus : un processus qui calculera l’ordonnancement des avions, un autre qui se chargera de la communication avec les avions, un troisième qui gérera la sécurité et l’intégrité du système, et enfin un dernier qui se chargera de la communication avec le contrôleur. Les processus partageront un espace de mémoire partagée. Un cycle de calcul dure 5 secondes (ce temps n’est pas réaliste mais doit permettre une meilleure observation du fonctionnement de l’application. Ce temps doit être par ailleurs paramétrable au lancement de l’application). 2.2.1 Le processus Ordonnanceur Ce processus a pour rôle de proposer au contrôleur une liste triée des avions qu’il a en charge. Pour cela, il gère une fille multi-niveaux à retour représentant les 3 niveaux de criticité. En plus de cela, il doit gérer le temps d’attente des avions. Si un avions n’est pas traité depuis longtemps, sa priorité augmente. Cette liste doit être établie à chaque cycle. 2.2.2 Le processus Communication Ce processus reçoit les informations provenant des avions et les écrit en SHM. Il émet également les ordres du contrôleur à l’intention de l’avion concerné. Chaque avion sera géré par un thread dédié. 2.2.3 Le processus Sécurité Ce processus surveille le fonctionnement de l’application. Pour cela, il s’assure qu’à chaque cycle les processus ont tous terminé ce qu’ils avaient à faire. Pour cela, il surveille chaque processus avec un chien de garde (Un cycle type pour un processus correspond à une suite d’actions : chien de garde = 1 ; fonctionnel du processus ; chien de garde = 2 ; armerTimer de t secondes ; endormissement). Si le processus de sécurité détecte trois débordements consécutifs, il arrête l’application après en avoir averti le contrôleur et avoir marqué le problème dans un fichier log. 2.3 Une console Elle se décompose en 2 sous-consoles : une première console affiche les données des avions sous une forme tabulaire triée par ordre de criticité. Il s’agit de la seule console de la partie IHM à être synchronisée avec l’application. Une seconde console permet la saisie d’un ordre donné à une avion. Le contrôleur sélectionne d’abord le numéro de l’avion, puis tape les instructions pour l’avion sélectionné. Il peut y avoir plusieurs Université de Pau et des Pays de l’Adour 2006-2007 Licence Informatique 3ème année Système d’exploitation Introduction aux systèmes distribués consoles de ce type et bien évidemment il faudra s’assurer que deux contrôleurs ne peuvent traiter le même avion en même temps. Les 2 parties d’une console peuvent être découplées : il doit être possible de lancer par exemple sur une machine une partie affichage sans une partie de saisie, et inversement. La communication entre une console et le SGCA se fait en utilisant le middleware d’appels de procédure à distance RPC. 3 Travail à réaliser La plus grosse partie du projet est commune aux deux matières. 3.1 Partie SE 3.1.1 Spécificités Développer le SGCA sans les parties SD. Un banc d’essai permettra de simuler les communications avec les avions. Il pourra émettre les informations données par les avions et recevoir celles données par le système de gestion de contrôle aérien. Les avions seront simulés par un banc de test. Celui ci est composé d’une console avec menu permettant d’envoyer des informations au processus de communication par des files de message. Une des entrées du menu montrera également les messages émis par le SGCA reçus par le banc de test. Les différentes consoles IHM seront sur un même poste de travail. 3.1.2 Date importante Les projets seront évalués la semaine du 1er mai. Un rapport de 10 pages rédigé en LATEX devra être remis le 27 avril. 3.2 Partie SD Comme précisé dans le sujet, il y a deux types de communication à utiliser : les sockets TCP pour la communication entre un avion et le SCGA et RPC pour la communication entre une console et le SCGA. Dans le cas où votre SCGA ne serait pas terminé, et afin de pouvoir tester la partie SD, développez un SCGA basique mettant directement en communication les consoles et les avions sans passer par et gérer les différents processus et listes de priorités dans le SCGA tels que définis plus haut. 3.2.1 Date importante Un rapport (format PDF si possible) devra être remis par mail le 27 avril avec les sources de votre programme. Les projets seront évalués la semaine du 1er mai. 4 Remarques On devra pouvoir suivre via les IHM le déroulement de la simulation. Essayer de travailler de manière modulaire afin de toujours fournir un programme exécutable. Si une partie de votre programme ne marche pas, assurez vous de pouvoir tester le reste. Toute tricherie impliquera un 0. Les correcteurs se réservent le droit de donner une note différenciée à chaque membre d’un binôme. Université de Pau et des Pays de l’Adour 2006-2007 Licence Informatique 3ème année