Micro Systèmes n°100 septembre 1989
Micro Systèmes n°100 septembre 1989
  • Prix facial : 30 F

  • Parution : n°100 de septembre 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 266

  • Taille du fichier PDF : 211 Mo

  • Dans ce numéro : exclusif... le laboratoire juge cent compatibles.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 246 - 247  |  Aller à la page   OK
Pages suivantes >
246 247
TECHNIQUE La représentation physique retenue pour les différentes files est fondée sur la remarque suivante : toutes les files sont des sous-files de la file des processus définis ; chaque descripteur de processus comportera donc autant de pointeurs « Suivant » qu'il y a de files, la valeur d'un de ces pointeurs n'étant significative que si le descripteur appartient à la file concernée. Voici un exemple avec deux files : Hie^ çlle2 Premier Descripteurs des processus définis 1, 2, 3, 4, 5 Descripteurs dans File 1 : 1, 2, 3 Descripteurs dans File 2 : 2, 4. Dernier Descr. 1 Descr. 2 Descr. 3 Descr. 4 Descr. S Suivant 1 Suivant 1 Suivant 1 Suivant Suivant 1 Suivant 2 Suivant 2 Suivant 2 Suivant 2 Les variables de type T_Descripteur_Processus sont allouées dynamiquement lors de la création des processus par la procédure Creer_Processus et éventuellement détruites par la procédure Detruire_Processus. Pour chaque file, on déclare une variable de type T_File qui doit être initialisée (file vide) par la procédure Init_File dans la section initialisation du noyau. La file des processus définis Création et destruction des processus Cette file n'est pas indispenSable au fonctionnement du noyau et n'est utilisée que par la procédure Lister_Processus. L'ajout et le retrait d'un élément de cette file sont effectués respectivement dans les procédures Creer_Processus et Detruire_Processus dont voici les algorithmes : DETRUIRE_PROCESSUS Début : Créer le descripteur du processus : Initialiser ce descripteur (Parent, Priorite, Etat, : Adresse_Procedure, Taille_Pile) : Créer le contexte du processus (sur le tas) : Initialiser ce contexte (Cf. coprogrammes) : Ajouter le descripteur en queue de File_Definis Fin Note : Le paramètre Identificateur étant un pointeur non typé (pour l'exportation), nous avons utilisé une variable Pid déclarée à la même adresse plutôt qu'un transtypage. DETRUIRE_PROCESSUS Début : Si le processus est Hors_Service alors Début ▪ : Retirer son descripteur de File_Definis : Récupérer la mémoire occupée par son : contexte et son descripteur Fin Fin La file des processus prêts Cette file est indispensable au fonctionnement de l'ordonnanceur et ne doit jamais être vide. On devra donc toujours prévoir une tâche de fond de priorité inférieure à 246 - MICRO-SYSTEMES toutes les autres, qui peut être construite sur le modèle de Proc_5 du programme de test du noyau ou bien boucler indéfiniment, avec par exemple une priorité égale à - 1, après avoir autorisé les interruptions dans le cas d'un moniteur orienté temps réel (processus IDLE). Cette file (File_Prets) est gérée par les procédures Inserer_dans_File_Prets par ordre de priorités décroissantes et Retirer_de_File_Prets qui sont listées dans le fichier FILE_PR.PAS. On notera d'ailleurs que cette structure est en fait intermédiaire entre une file et une liste linéaire en raison de ces deux opérations. Ces deux procédures sont utilisées respectivement par Activer_Processus et Desactiver_Processus. La procédure Commuter intervient directement sur cette file. Les mécanismes employés par la commutation des processus Ce mécanisme est déclenché par un appel à la procédure Commuter, à chaque changement d'état d'un processus défini : activation, désactivation, terminaison et plus tard lors des opérations de blocage, déblocage et à la fin de chaque tranche de temps en temps partagé. Le système maintient un point (Ptr_Processus_en_Cours) sur le descripteur du processus en cours afin de pouvoir décider de l'opportunité de la commutation en fonction des priorités. Accessoirement, on se sert de ce pointeur pour différencier les état Pret et En_Cours sans avoir à modifier cet état lors de la commutation. Celle-ci est réalisée à l'aide de la procédure Transfer de l'unité Coprogrammes. L'algorithme de la procédure Commuter est élémentaire (voir liste du fichier NOYAU.PAS) : on met à jour Ptr_Processus_en_Cours avec le premier processus de File_Prets, on retire celui-ci de la file et on effectue le transfert. On remarqùera qu'on suppose cette file non vide car le commutateur est un mécanisme de trop bas niveau pour prendre une décision en pareil cas. D'autre part, on peut noter que le pointeur vers l'ancien processus en cours est perdu et qu'il appartient aux procédures de plus haut niveau (comme Activer_Processus) de le gérer, par exemple en le réinsérant dans File_Prets. Septembre 1989
PROGRAMMATION c tis.s C r File Frets Avant commutation Cein 3 Nous pouvons maintenant présenter les algorithmes des procédures Activer_Processus Desactiver_Processus : ACTIVER PROCESSUS (P) Début : Si le processus P et Hors_Service alors Début : état (P) Pret : Insérer P dans File_Prets : Si priorité en cours < priorité (P). : alors Début.. : Insérer le processus en cours dans File_Prets : Commuter : Fin Fin Fin (On notera la réinsertion du processus en cours s'il y a commutation). DESACTIVER PROCESSUS (P) Début : Si le processus P est en cours iii se désastive Fin alors Début : état (P) Hors_Service : Commuter Fin sinon Si état (P) = Pret alors Début : état (P) Hors_Service : Retirer P de File_Pret Fin La terminaison des processus C'est une des parties les plus délicates. Le processus doit être mis hors service mais aussi réinitialisé afin de pouvoir être exécuté à nouveau, ce qui pose deux problèmes. Le premier vient du fait que le processus en question est le processus en cours puisqu'il exécute la procédure Terminer. Il utilise donc sa pile et c'est justement celle-ci qui doit être réinitialisée. La seconde difficulté, plus facile à contourner, vient de la procédure Commuter qui sauvegarde automatiquement le contexte du processus en cours, ce qui est gênant si on veut le réinitialiser. Nous avons résolu ces difficultés à l'aide d'un coprogramme (Terminaison) qui est créé sur la procédure Terminer_Processus lors de l'initialisation du noyau. La procédure Terminer se contente d'effectuer un transfert du processus en cours vers ce coprogramme, provoquant ainsi un changement de pile. Le coprogramme peut alors réinitialiser la pile du processus puis provoquer une com- Septembre 1989 mutation en sauvegardant son propre contexte. D'où la structure de boucle infinie : un tour de boucle à chaque fois qu'un processus se termine. Le démarrage et l'arrêt du système Une solution consiste à considérer le programme principal comme un processus spécial (Systeme), ancêtre commun de tous les autres, qui n'a pas à être créé et qui, après avoir engendré son monde, ne redeviendra actif qu'à la fin des temps (celle-ci pourra être forcée par un appel à la procédure Arreter_Systeme qui effectue un simple transfert). Ce processus sera donc exclu du système en fonctionnement et ne fera partie d'aucune file. Le noyau initialise donc la variable Ptr_Processus_en_Cours avec l'adresse du descripteur Systeme de manière à sauvegarder le contexte du programme principal lors de la première commutation. Le champ Priorite du descripteur Systeme doit aussi être initialisé pour que le premier appel à la procédure Activer_Processus fonctionne convenablement puisque cette procédure compare la priorité du processus à activer avec celle du processus en cours. Nous avons choisi de bloquer l'ordonnanceur en donnant au programme principal la priorité maximale. Celui-ci pourra alors créer et activer plusieurs processus sans perdre le processeur. Lorsque tous les processus nécessaires à une application sont prêts, un appel à la procédure Demarrer_Systeme débloquera l'ordonnanceur en provoquant une commutation. Le problème des interruptions On remarquera que les interruptions sont interdites dans toutes les primitives de gestion des processus (macros Inhiber_Interruptions et Autoriser_Interruption). Cette précaution est inutile dans cette version du noyau car les interruptions en service, par exemple celles associées au clavier et à l'horloge, ne risquent pas de venir perturber nos structures de données. Il en sera tout autrement lorsque nous aurons à gérer des tâches immédiates et le temps partagé car la gestion des files, de même d'ailleurs que les procédures New et Getmem, n'est pas réentrante. Les accès aux files sont des sections critiques qui doivent être exécutées en exclusion mutuelle pour empêcher des conflits lors de la mise à jour des pointeurs. Pour éviter d'avoir à revenir sur les sources de ces procédures par la suite, nous avons incorporé les macros dès cette version du noyau. C'est le même souci qui nous a conduit à prévoir une séquence d'initialisation pour le coprogramme Terminaison, afin que les interruptions soient masquées lorsque ce coprogamme sera activé par le premier processus qui se terminera. La procédure NewProcess autorise en effet les interruptions lors de la création d'un coprogramme. MICRO-SYSTEMES - 247



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 100 septembre 1989 Page 1Micro Systèmes numéro 100 septembre 1989 Page 2-3Micro Systèmes numéro 100 septembre 1989 Page 4-5Micro Systèmes numéro 100 septembre 1989 Page 6-7Micro Systèmes numéro 100 septembre 1989 Page 8-9Micro Systèmes numéro 100 septembre 1989 Page 10-11Micro Systèmes numéro 100 septembre 1989 Page 12-13Micro Systèmes numéro 100 septembre 1989 Page 14-15Micro Systèmes numéro 100 septembre 1989 Page 16-17Micro Systèmes numéro 100 septembre 1989 Page 18-19Micro Systèmes numéro 100 septembre 1989 Page 20-21Micro Systèmes numéro 100 septembre 1989 Page 22-23Micro Systèmes numéro 100 septembre 1989 Page 24-25Micro Systèmes numéro 100 septembre 1989 Page 26-27Micro Systèmes numéro 100 septembre 1989 Page 28-29Micro Systèmes numéro 100 septembre 1989 Page 30-31Micro Systèmes numéro 100 septembre 1989 Page 32-33Micro Systèmes numéro 100 septembre 1989 Page 34-35Micro Systèmes numéro 100 septembre 1989 Page 36-37Micro Systèmes numéro 100 septembre 1989 Page 38-39Micro Systèmes numéro 100 septembre 1989 Page 40-41Micro Systèmes numéro 100 septembre 1989 Page 42-43Micro Systèmes numéro 100 septembre 1989 Page 44-45Micro Systèmes numéro 100 septembre 1989 Page 46-47Micro Systèmes numéro 100 septembre 1989 Page 48-49Micro Systèmes numéro 100 septembre 1989 Page 50-51Micro Systèmes numéro 100 septembre 1989 Page 52-53Micro Systèmes numéro 100 septembre 1989 Page 54-55Micro Systèmes numéro 100 septembre 1989 Page 56-57Micro Systèmes numéro 100 septembre 1989 Page 58-59Micro Systèmes numéro 100 septembre 1989 Page 60-61Micro Systèmes numéro 100 septembre 1989 Page 62-63Micro Systèmes numéro 100 septembre 1989 Page 64-65Micro Systèmes numéro 100 septembre 1989 Page 66-67Micro Systèmes numéro 100 septembre 1989 Page 68-69Micro Systèmes numéro 100 septembre 1989 Page 70-71Micro Systèmes numéro 100 septembre 1989 Page 72-73Micro Systèmes numéro 100 septembre 1989 Page 74-75Micro Systèmes numéro 100 septembre 1989 Page 76-77Micro Systèmes numéro 100 septembre 1989 Page 78-79Micro Systèmes numéro 100 septembre 1989 Page 80-81Micro Systèmes numéro 100 septembre 1989 Page 82-83Micro Systèmes numéro 100 septembre 1989 Page 84-85Micro Systèmes numéro 100 septembre 1989 Page 86-87Micro Systèmes numéro 100 septembre 1989 Page 88-89Micro Systèmes numéro 100 septembre 1989 Page 90-91Micro Systèmes numéro 100 septembre 1989 Page 92-93Micro Systèmes numéro 100 septembre 1989 Page 94-95Micro Systèmes numéro 100 septembre 1989 Page 96-97Micro Systèmes numéro 100 septembre 1989 Page 98-99Micro Systèmes numéro 100 septembre 1989 Page 100-101Micro Systèmes numéro 100 septembre 1989 Page 102-103Micro Systèmes numéro 100 septembre 1989 Page 104-105Micro Systèmes numéro 100 septembre 1989 Page 106-107Micro Systèmes numéro 100 septembre 1989 Page 108-109Micro Systèmes numéro 100 septembre 1989 Page 110-111Micro Systèmes numéro 100 septembre 1989 Page 112-113Micro Systèmes numéro 100 septembre 1989 Page 114-115Micro Systèmes numéro 100 septembre 1989 Page 116-117Micro Systèmes numéro 100 septembre 1989 Page 118-119Micro Systèmes numéro 100 septembre 1989 Page 120-121Micro Systèmes numéro 100 septembre 1989 Page 122-123Micro Systèmes numéro 100 septembre 1989 Page 124-125Micro Systèmes numéro 100 septembre 1989 Page 126-127Micro Systèmes numéro 100 septembre 1989 Page 128-129Micro Systèmes numéro 100 septembre 1989 Page 130-131Micro Systèmes numéro 100 septembre 1989 Page 132-133Micro Systèmes numéro 100 septembre 1989 Page 134-135Micro Systèmes numéro 100 septembre 1989 Page 136-137Micro Systèmes numéro 100 septembre 1989 Page 138-139Micro Systèmes numéro 100 septembre 1989 Page 140-141Micro Systèmes numéro 100 septembre 1989 Page 142-143Micro Systèmes numéro 100 septembre 1989 Page 144-145Micro Systèmes numéro 100 septembre 1989 Page 146-147Micro Systèmes numéro 100 septembre 1989 Page 148-149Micro Systèmes numéro 100 septembre 1989 Page 150-151Micro Systèmes numéro 100 septembre 1989 Page 152-153Micro Systèmes numéro 100 septembre 1989 Page 154-155Micro Systèmes numéro 100 septembre 1989 Page 156-157Micro Systèmes numéro 100 septembre 1989 Page 158-159Micro Systèmes numéro 100 septembre 1989 Page 160-161Micro Systèmes numéro 100 septembre 1989 Page 162-163Micro Systèmes numéro 100 septembre 1989 Page 164-165Micro Systèmes numéro 100 septembre 1989 Page 166-167Micro Systèmes numéro 100 septembre 1989 Page 168-169Micro Systèmes numéro 100 septembre 1989 Page 170-171Micro Systèmes numéro 100 septembre 1989 Page 172-173Micro Systèmes numéro 100 septembre 1989 Page 174-175Micro Systèmes numéro 100 septembre 1989 Page 176-177Micro Systèmes numéro 100 septembre 1989 Page 178-179Micro Systèmes numéro 100 septembre 1989 Page 180-181Micro Systèmes numéro 100 septembre 1989 Page 182-183Micro Systèmes numéro 100 septembre 1989 Page 184-185Micro Systèmes numéro 100 septembre 1989 Page 186-187Micro Systèmes numéro 100 septembre 1989 Page 188-189Micro Systèmes numéro 100 septembre 1989 Page 190-191Micro Systèmes numéro 100 septembre 1989 Page 192-193Micro Systèmes numéro 100 septembre 1989 Page 194-195Micro Systèmes numéro 100 septembre 1989 Page 196-197Micro Systèmes numéro 100 septembre 1989 Page 198-199Micro Systèmes numéro 100 septembre 1989 Page 200-201Micro Systèmes numéro 100 septembre 1989 Page 202-203Micro Systèmes numéro 100 septembre 1989 Page 204-205Micro Systèmes numéro 100 septembre 1989 Page 206-207Micro Systèmes numéro 100 septembre 1989 Page 208-209Micro Systèmes numéro 100 septembre 1989 Page 210-211Micro Systèmes numéro 100 septembre 1989 Page 212-213Micro Systèmes numéro 100 septembre 1989 Page 214-215Micro Systèmes numéro 100 septembre 1989 Page 216-217Micro Systèmes numéro 100 septembre 1989 Page 218-219Micro Systèmes numéro 100 septembre 1989 Page 220-221Micro Systèmes numéro 100 septembre 1989 Page 222-223Micro Systèmes numéro 100 septembre 1989 Page 224-225Micro Systèmes numéro 100 septembre 1989 Page 226-227Micro Systèmes numéro 100 septembre 1989 Page 228-229Micro Systèmes numéro 100 septembre 1989 Page 230-231Micro Systèmes numéro 100 septembre 1989 Page 232-233Micro Systèmes numéro 100 septembre 1989 Page 234-235Micro Systèmes numéro 100 septembre 1989 Page 236-237Micro Systèmes numéro 100 septembre 1989 Page 238-239Micro Systèmes numéro 100 septembre 1989 Page 240-241Micro Systèmes numéro 100 septembre 1989 Page 242-243Micro Systèmes numéro 100 septembre 1989 Page 244-245Micro Systèmes numéro 100 septembre 1989 Page 246-247Micro Systèmes numéro 100 septembre 1989 Page 248-249Micro Systèmes numéro 100 septembre 1989 Page 250-251Micro Systèmes numéro 100 septembre 1989 Page 252-253Micro Systèmes numéro 100 septembre 1989 Page 254-255Micro Systèmes numéro 100 septembre 1989 Page 256-257Micro Systèmes numéro 100 septembre 1989 Page 258-259Micro Systèmes numéro 100 septembre 1989 Page 260-261Micro Systèmes numéro 100 septembre 1989 Page 262-263Micro Systèmes numéro 100 septembre 1989 Page 264-265Micro Systèmes numéro 100 septembre 1989 Page 266