Simulation d`un outil d`aide au contrôle aérien
Transcription
Simulation d`un outil d`aide au contrôle aérien
Simulation d’un outil d’aide au contrôle aérien Nicolas Belloir et Eric Cariou Projet commun des modules (( Introduction aux Systèmes Distribués )) et (( Système d’Exploitation )) Licence Informatique 3ème année - UPPA - 2009/10 Ce document décrit le sujet du projet commun entre le module de système d’exploitation et le module 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 Gestion Consoles communication via Java RMI Console 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 Les avions et le SGCA sont à programmer en C et les consoles en Java. Pour faire le lien entre le SGCA (en C) et les consoles (en Java), un élément particulier de gestion des consoles sera à développer. 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 ; ( 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. 1 Système d’exploitation Introduction aux systèmes distribués 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 afin d’aider le contrôleur à faire son choix, 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). Le cycle d’exécution des processus doit être le suivant : le processus système prend la main au début du cycle et vérifie que tout va bien dans le système. Le processus communication prend alors la main et envoie et reçoit les messages vers/depuis les avions et les intègre au système. Le processus ordonnanceur effectue un un tri des avions en fonctions des dernières modifications. Le processus console prend alors la main et effectue la communication entre les consoles et le système. 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 de 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.2.4 Gestion de console L’élément de gestion de console, à développer en Java, à pour but de faire le lien entre les consoles écrites en Java et le reste du SGCA écrit en C. Pour cela, cet élément communiquera avec le reste du SGCA via une socket UDP. 2 Système d’exploitation 2.3 Introduction aux systèmes distribués Une console Il existe deux types de console : – Console IHM : elle affiche les données des avions sous une forme tabulaire triée par ordre de criticité. – Console de contrôle : pour saisir et envoyer des ordres aux avions. Le contrôleur sélectionne d’abord le numéro de l’avion, puis tape les instructions pour l’avion sélectionné. Plusieurs consoles de chaque type peuvent être exécutées, et cela sur plusieurs machines. Pour les consoles de contrôle, il faudra s’assurer que deux contrôleurs ne peuvent traiter le même avion en même temps. La communication entre une console et le SGCA se fait en utilisant le middleware d’appels de méthodes à distance Java RMI. 3 Travail à réaliser La plus grosse partie du projet est commune aux deux matières. Les projets seront évalués la semaine du 3 au 7 mai 2010. Pour chaque partie, vous rendrez, pour le 3 mai, un rapport (format PDF) d’environ 10 pages rédigé en LATEX. 3.1 Spécificités de la partie SE Une attention particulière sera portée à la robustesse du système ainsi qu’au respect de l’ordonnancement des processus. 3.2 Spécificités de la partie SD Comme précisé dans le sujet, il y a trois types de communication à utiliser : les sockets TCP pour la communication entre un avion et le SCGA, Java RMI pour la communication entre une console et le SCGA et une socket UDP pour la communication en interne dans le SCGA entre les parties C et la gestion de console en Java. Une attention particulière sera portée sur la dynamicité du système. Il devra être possible de lancer à tout moment de nouveaux avions et votre système doit gérer correctement le crash des avions. De même, il devra être possible de lancer un nombre quelconque de consoles, de manière dynamique. Vous justifierez clairement les interfaces RMI que vous avez définies et donc l’interaction entre les consoles en le SCGA. 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. 3