Les commandes
Le simulateur de commande est un processus autonome devant transmettre au contrôleur général les ordres qu'émettent les utilisateurs.
Ces ordres peuvent être :
- Extérieurs : l'utilisateur appuie alors sur un bouton montée ou descente à un étage donné.
- Intérieurs : l'utilisateur est à l'intérieur de l'ascenseur et il désire se rendre à un étage donné.
Le contrôleur général
Le simulateur du contrôleur général est un processus autonome qui affecte aux différents ascenseurs une mission. Ce simulateur est optimisé. Une mission consiste à transmettre à un ascenseur un numéro d'étage. Le contrôleur général doit optimiser le temps d'attente de l'utilisateur en tenant compte de la disponibilité d'un ascenseur, de la mission en cours d'un ascenseur (...)
[...] On tient alors compte du temps d'ouverture/fermeture des portes et du temps inter étages. Si un ascenseur est disponible ou s'il est affecté à une mission compatible, la commande est envoyée Appui sur le bouton Descente d'un étage Dans cette situation, le contrôleur général doit déterminer l'ascenseur le plus efficace pour effectuer cette mission. Par efficace nous entendons rapide. Le contrôleur général évalue alors le temps que mettrait un ascenseur à l'arrêt ou entrain de descendre pour parvenir à l'étage où se situe l'utilisateur. [...]
[...] Aussi pour un bon fonctionnement de ce programme vous devrez disposer d'un terminal ANSI. Sachant que la grande majorité des terminaux sont actuellement compatibles ANSI, cette restriction ne devrait pas vous poser de problèmes Description du programme de simulation d'appui de bouton Le programme de gestion d'appui de bouton possède une syntaxe différente selon la nature de l'appui du bouton : interne/externe. En saisissant ./commande vous obtiendrez la syntaxe à utiliser : 22 Il est possible de lancer autant de fois que l'on le désire ce processus et ceci afin de simuler l'appui simultané de plusieurs touches. [...]
[...] Ainsi lorsque le signal SIGINT est reçu la fonction qui lui est associée est lancée. Pour associer une fonction au signal SIGINT on utilise la fonction signal(SIGINT, catch_signals); (où catch_signals est la fonction à associer au signal SIGINT). Le signal SIGINT reçu on libérera l'ensemble des messages queue utilisées ainsi que l'ensemble des sémaphores Chapitre 5 Principaux aspects techniques Dans ce chapître nous allons décrire certains fonctionnement de la simulation, à savoir : La création de processus L'utilisation des messages queue L'utilisation des sémaphores L'utilisation de la mémoire partagée La fonction d'optimisation de la disponibilité de l'ascenseur Le traitement des étages du contrôleur local 5.1 Création de processus La création de processus est obtenue à l'aide de la fonction fork. [...]
[...] Il fait le lien avec les processus de contrôleur locaux. Il dispose de trois fonctions aux optimisations de disponibilité différentes, à savoir : 12 int commande_etage_bouton_montee(int etage, int* addr); int commande_etage_bouton_descente(int etage, int* addr); void bouton_interieur(int etage, int numero_ascenseur); Il utilise également les fonctions de gestion de message queue Processus Contrôleur local Ce processus utilise quelques fonctions pour envoyer des commandes moteur à l'ascenseur et pour gérer la liste chaînée de l'ascenseur. Ces fonctions sont : void envoyer_message_moteur(int numero_ascenseur, int message_a_envo void init_ascenseur(int numero_ascenseur, int *adresse_memoire_parta void reception_etage_et_signalisation(int numero_ascenseur, int *adr Ce processus utilise également les fonctions de gestion de sémaphore et de message queue Processus ascenseur Ce processus fait essentiellement appel à des fonctions de simulation de moteur, à savoir les fonctions : void ouverture_porte(int sem_set_id); pour la simulation de l'ouverture d'une porte void fermeture_porte(int sem_set_id); pour la simulation de la fermeture d'une porte void montee_etage(int sem_set_id); pour la simulation d'une montée d'étage void descente_etage(int sem_set_id); pour la simulation de descente d'étage void mise_a_jour_etage(int etage, int sens, int *adresse_memoire_par Il utilise aussi les fonctions de Sémaphore prendre_semaphore et relacher_semaphore ainsi que des fonctions de gestion de message queue 4.4 Fermeture des processus Afin de ne pas surcharger le système avec des processus tournant indéfiniment, et des ressources IPCs inutilisées, une gestion de la fermeture des processus est souhaitable. [...]
[...] Ce projet vise à simuler dans un environnement C Unix une batterie de N ascenseurs modernes à M étages. Ces ascenseurs disposent d'un contrôleur intelligent capable d'optimiser les temps d'attente des utilisateurs Chapitre 2 Cahier des charges fonctionnelles Le simulateur de batterie d'ascenseurs doit se rapprocher au maximum d'une architecture physique réelle. Cette architecture est composée de plusieurs sous ensembles évoluant en parallèle. Chacun de ces ensembles doit être simulé par un processus indépendant. La difficulté de ce projet sera donc de faire coexister les différents processus entre eux Les différents sous-ensembles Le simulateur dispose de 5 sous-ensembles Les commandes Le contrôleur général Le contrôleur local d'ascenseur L'ascenseur L'afficheur Les commandes Le simulateur de commande est un processus autonome devant transmettre au contrôleur général les ordres qu'émettent les utilisateurs. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture