Micro Systèmes n°99 jui/aoû 1989
Micro Systèmes n°99 jui/aoû 1989
  • Prix facial : 30 F

  • Parution : n°99 de jui/aoû 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 188

  • Taille du fichier PDF : 156 Mo

  • Dans ce numéro : grandes écoles... du clavier au charbon.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 170 - 171  |  Aller à la page   OK
Pages suivantes >
170 171
TECHNIQUE Les transitions entre les différents états d'une tâche T (repérées par des numéros sur le diagramme précédent) se produisent lors des événements suivants : 1° une tâche - mère - (autre que T) décide de créer la tâche T - fille ; 2° une tâche (autre que T) décide de détruire la tâche T ; 3° une tâche (autre que T) décide d'activer la tâche T (c'est-à-dire de démarrer ou continuer l'exécution du programme associé) ; 4° une tâche (autre que T) décide de désactiver la tâche T (l'exécution du programme associé ne pourra reprendre qu'après une réactivation) ; 5° le commutateur (ou dispatcher, c'est-à-dire le mécanisme d'ordonnancement de plus bas niveau) attribue le processeur à la tâche T (le programme s'exécute effectivement) ; 6° le commutateur réquisitionne le processetir au profit d'une tâche autre que T ; l'activité de la tâche T est suspendue ; 7° la tâche T se termine (le programme associé est arrivé à sa fin) ou se désactive ; 8° la tâche T ne peut se poursuivre pour une raison logique (par exemple lorsqu'elle attend des données qui ne sont pas encore disponibles) ; elle est bloquée pour ne pas monopoliser le processeur alors qu'elle ne fait qu'attendre ; 9° l'événement attendu par la tâche T s'est produit ; la tâche T est prête à nouveau. L'état « En Attente » et les transitions associées sont liés à la synchronisation et à la communication entre les processus et seront examinés dans un autre article. L'ordonnancement des processus On peut distinguer deux types de processus : les processus immédiats (ou extérieurs) et les processus différés (ou intérieurs). Les premiers assurent l'interfaçage entre l'application et l'environnement extérieur et sont activés par l'émission d'un signal généré par le matériel. L'ordonnancement de ces processus est assuré par un ordonnanceur câblé qui est en général le système de gestion des interruptions de la machine. Nous laisserons provisoirement de côté ce type de processus pour nous consacrer uniquement aux processus différés, qui se distinguent des précédents par le fait qu'ils sont activés par d'autres processus. Dans la suite de cet article, les mots tâches ou processus se référeront donc toujours au deuxième type. Parmi les tâches présentes dans le système à un instant donné, les tâches prêtes n'attendent que la disponibilité du processeur. L'ordonnancement (scheduling) va consister d'une part à choisir l'une de ces tâches pour lui attribuer le processeur et d'autre part à décider de la durée de cette attribution. Nous examinerons deux stratégies possibles qui, avec quelques variantes, sont à la base de la plupart des algorithmes d'ordonnancement : l'ordonnancement circulaire et l'ordonnancement avec priorité. L'ordonnancement circulaire ou le temps partagé Cette stratégie consiste à fixer une tranche de temps (de l'ordre de 10 à 100 ms) à chaque tâche ; si cette tranche est la même pour toutes les tâches (solution que nous retiendrons), celles-ci sont à égalité pour l'attribution du processeur. Les tâches prêtes sont rangées dans une file d'attente circulaire. Si une tâche est toujours en activité à l'expiration de son quantum de temps, le processeur est réquisitionné (préemption) au profit de la suivante, la tâche suspendue étant replacée en queue de la file (*) ; si une tâche se bloque ou se termine avant la fin de la tranche, le processeur est immédiatement alloué à la suivante. TP1 TP2 TP3 TP4 TPn (*) TPi : iee tâche prête TEC : Tâche en cours Le choix de la durée du quantum est primordial. S'il est trop petit, le système perd beaucoup de temps (overhead) à commuter les tâches (en supposant le temps de commutation de 1 ms, le processeur n'est utilisé qu'à 90% pour un quantum de 10 ms alors qu'il serait utilisé à 99% avec un quantum de 100 ms). S'il est trop grand, le temps entre deux périodes d'activité sera trop important (avec un quantum de 100 ms et 10 tâches prêtes, chaque tâche attendra 9/10e de seconde avant d'être à nouveau élue), Pour notre moniteur, par commodité, nous choisirons la période de l'horloge des PC (environ 55 ms). L'ordonnancement avec priorité Avec l'ordonnancement circulaire, un processus qui n'est pas terminé à l'expiration de son quantum de temps sera réactivé après un délai qui, dans certains cas, peut 170 - M ICRO-SYSTEM ES être inacceptable ; il est alors préférable de laisser le processus évoluer jusqu'à son achèvement. Telle quelle, cette stratégie conduit à une exécution en séquence des programmes prêts, aussi est-on amené à attribuer une priorité à chaque processus afin de pouvoir prendre en compte des situations d'urgence (il s'agit ici d'une priorité purement logicielle puisque nous excluons pour l'instant le cas des tâches immédiates). Les processus prêts sont organisés dans une file d'attente où ils sont rangés par ordre de priorité décroissante. Un processus en cours sera assuré de se terminer avant de libérer le processeur, sauf si un processus de priorité supérieure est activé (par lui-même ou, comme on le verra plus tard, par une tâche immédiate). Dans ce cas (*), son activité sera suspendue, et il sera réinséré dans la file des processus prêts en tenant compte de sa priorité. Juillet/Août 1989
PROGRAMMATION TPk : kee tâche prête pr. : Priorité TEC pr. TEC : Tâche en cours priorité (TPk) < priorité (TPk+1) priorité (TPi) < priorité (TEC) < priorité (TPj) On peut imaginer un certain nombre de variantes à partir des deux stratégies précédentes ; en particulier, on peut mettre en place plusieurs files d'attente de tâches prêtes - une par niveau de priorité par exemple - et gérer ces files de manière circulaire ou non. Il est assez difficile de trouver une stratégie universelle. Certaines applications (multi-utilisateurs par exemple) réclament un ordonnancement privilégiant le temps partagé, alors que d'autres (comme le contrôle de procédés industriels) accorderont plus d'importance aux tâches extérieures et aux contraintes de temps qui en découlent. En ce qui concerne le noyau de notre moniteur, afin d'illustrer les principes présentés de manière progressive, nous retiendrons un ordonnancement avec priorité à file d'attente unique, en remettant à plus tard la possibilité de gérer en temps partagé les processus de priorité nulle (ce qui nécessitera l'utilisation d'une tâche immédiate associée à l'horloge de la machine). Présentation des primitives de gestion des processus Le noyau du moniteur, dans la version actuelle, comporte les primitives suivantes : - Creer Processus (transition 1) Crée un nouveau processus exécutant le code d'une procédure En entrée : adresse de la procédure à exécuter priorité désirée (en principe 0 à 32765) taille de la pile à utiliser (y compris les variables locales). En sortie : un identificateur du processus créé - Detruire Processus (transition 2) Détruit le processus indiqué à condition qu'il soit hors service, sinon ne fait rien. En entrée : l'identificateur du processus à détruire. En sortie : rien. Remarque : ces deux primitives permettent une gestion dynamique des tâches ; elles font partie du noyau par souci de simplification mais pourraient, moyennant quelques adaptations, faire partie d'une agence de gestion des tâches dans le cadre d'un moniteur plus élabore. - Activer Processus (transition 3) Place un processus hors service dans la file des processus prêts. Si la priorité de ce processus est supérieure à celle du processus en cours, celui-ci est interrompu et replacé dans la file des prêts, et le processus qui vient d'être activé devient le processus en cours (il s'exécute donc immédiatement). Cette primitive est utilisée pour démarrer un processus nouvellement créé (première activation), pour redémarrer un processus qui s'est terminé (s'il n'a pas été détruit) ou pour continuer l'exécution d'un processus interrompu par l'opération Desactiver Processus. En entrée : l'identificateur du processus à activer Juillet/Août 1989 En sortie : rien - Desactiver Processus (transition 7 ou 4 suivant que le processus est ou non en cours) Si le processus désigné est en cours, il est mis hors service. S'il s'agit d'un processus prêt, il est mis hors service et retiré de la file des prêts ; dans les autres cas, on ne fait rien. En entrée : l'identificateur du processus à désactiver. En sortie : rien. - Terminer (transition 7) Tout processus qui ne boucle pas indéfiniment doit comporter un appel à cette primitive comme dernière instruction de la procédure qu'il exécute, sous peine de plantage. Un processus peut se désactiver lui-même en utilisant la primitive précédente ; la différence est qu'ici le processus sera non seulement désactivé mais aussi réinitialisé (dans le même état qu'après sa création). En entrée : rien. En sortie : rien. - Identite Retourne l'identificateur du processus en cours En entrée : rien. En sortie : l'identificateur. Les deux primitives suivantes permettent de contrôler le système : - Demarrer Systeme La séquence d'initialisation du noyau se termine par un blocage du mécanisme de commutation des processus afin de permettre au programme qui l'utilise de créer et d'activer un certain nombre de processus. L'appel de cette primitive débloque ce mécanisme (démarrage de l'ordonnanceur). - Arreter Systeme Si l'application n'est pas destinée à s'exécuter indéfiniment, l'un des processus doit faire un appel à cette primitive afin que le programme se termine proprement ; le contrôle est redonné au programme principal (à l'instruction qui suit l'appel à Demarrer Systeme). Enfin on dispose d'une procédure Lister Processus qui écrit sur la sortie standard des informations sur l'évolution de tous les processus connus du système (dans l'ordre de leur création), à la manière de la commande « procs » d'OS9 ou « ps » d'Unix. Un exemple pour mieux comprendre Avant d'entrer dans les détails de l'implémentation du noyau, nous allons présenter un exemple illustrant l'usage de ces primitives et montrant le fonctionnement de l'ordonnanceur. Cet exemple comporte cinq processus exécutant les procédures Proc 1 à Proc 5 avec les priorités respectives 5, 4, 3, 2, 1. Voici les squelettes des algorithmes de ces procédures : MICRO-SYSTEMES - 171



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 99 jui/aoû 1989 Page 1Micro Systèmes numéro 99 jui/aoû 1989 Page 2-3Micro Systèmes numéro 99 jui/aoû 1989 Page 4-5Micro Systèmes numéro 99 jui/aoû 1989 Page 6-7Micro Systèmes numéro 99 jui/aoû 1989 Page 8-9Micro Systèmes numéro 99 jui/aoû 1989 Page 10-11Micro Systèmes numéro 99 jui/aoû 1989 Page 12-13Micro Systèmes numéro 99 jui/aoû 1989 Page 14-15Micro Systèmes numéro 99 jui/aoû 1989 Page 16-17Micro Systèmes numéro 99 jui/aoû 1989 Page 18-19Micro Systèmes numéro 99 jui/aoû 1989 Page 20-21Micro Systèmes numéro 99 jui/aoû 1989 Page 22-23Micro Systèmes numéro 99 jui/aoû 1989 Page 24-25Micro Systèmes numéro 99 jui/aoû 1989 Page 26-27Micro Systèmes numéro 99 jui/aoû 1989 Page 28-29Micro Systèmes numéro 99 jui/aoû 1989 Page 30-31Micro Systèmes numéro 99 jui/aoû 1989 Page 32-33Micro Systèmes numéro 99 jui/aoû 1989 Page 34-35Micro Systèmes numéro 99 jui/aoû 1989 Page 36-37Micro Systèmes numéro 99 jui/aoû 1989 Page 38-39Micro Systèmes numéro 99 jui/aoû 1989 Page 40-41Micro Systèmes numéro 99 jui/aoû 1989 Page 42-43Micro Systèmes numéro 99 jui/aoû 1989 Page 44-45Micro Systèmes numéro 99 jui/aoû 1989 Page 46-47Micro Systèmes numéro 99 jui/aoû 1989 Page 48-49Micro Systèmes numéro 99 jui/aoû 1989 Page 50-51Micro Systèmes numéro 99 jui/aoû 1989 Page 52-53Micro Systèmes numéro 99 jui/aoû 1989 Page 54-55Micro Systèmes numéro 99 jui/aoû 1989 Page 56-57Micro Systèmes numéro 99 jui/aoû 1989 Page 58-59Micro Systèmes numéro 99 jui/aoû 1989 Page 60-61Micro Systèmes numéro 99 jui/aoû 1989 Page 62-63Micro Systèmes numéro 99 jui/aoû 1989 Page 64-65Micro Systèmes numéro 99 jui/aoû 1989 Page 66-67Micro Systèmes numéro 99 jui/aoû 1989 Page 68-69Micro Systèmes numéro 99 jui/aoû 1989 Page 70-71Micro Systèmes numéro 99 jui/aoû 1989 Page 72-73Micro Systèmes numéro 99 jui/aoû 1989 Page 74-75Micro Systèmes numéro 99 jui/aoû 1989 Page 76-77Micro Systèmes numéro 99 jui/aoû 1989 Page 78-79Micro Systèmes numéro 99 jui/aoû 1989 Page 80-81Micro Systèmes numéro 99 jui/aoû 1989 Page 82-83Micro Systèmes numéro 99 jui/aoû 1989 Page 84-85Micro Systèmes numéro 99 jui/aoû 1989 Page 86-87Micro Systèmes numéro 99 jui/aoû 1989 Page 88-89Micro Systèmes numéro 99 jui/aoû 1989 Page 90-91Micro Systèmes numéro 99 jui/aoû 1989 Page 92-93Micro Systèmes numéro 99 jui/aoû 1989 Page 94-95Micro Systèmes numéro 99 jui/aoû 1989 Page 96-97Micro Systèmes numéro 99 jui/aoû 1989 Page 98-99Micro Systèmes numéro 99 jui/aoû 1989 Page 100-101Micro Systèmes numéro 99 jui/aoû 1989 Page 102-103Micro Systèmes numéro 99 jui/aoû 1989 Page 104-105Micro Systèmes numéro 99 jui/aoû 1989 Page 106-107Micro Systèmes numéro 99 jui/aoû 1989 Page 108-109Micro Systèmes numéro 99 jui/aoû 1989 Page 110-111Micro Systèmes numéro 99 jui/aoû 1989 Page 112-113Micro Systèmes numéro 99 jui/aoû 1989 Page 114-115Micro Systèmes numéro 99 jui/aoû 1989 Page 116-117Micro Systèmes numéro 99 jui/aoû 1989 Page 118-119Micro Systèmes numéro 99 jui/aoû 1989 Page 120-121Micro Systèmes numéro 99 jui/aoû 1989 Page 122-123Micro Systèmes numéro 99 jui/aoû 1989 Page 124-125Micro Systèmes numéro 99 jui/aoû 1989 Page 126-127Micro Systèmes numéro 99 jui/aoû 1989 Page 128-129Micro Systèmes numéro 99 jui/aoû 1989 Page 130-131Micro Systèmes numéro 99 jui/aoû 1989 Page 132-133Micro Systèmes numéro 99 jui/aoû 1989 Page 134-135Micro Systèmes numéro 99 jui/aoû 1989 Page 136-137Micro Systèmes numéro 99 jui/aoû 1989 Page 138-139Micro Systèmes numéro 99 jui/aoû 1989 Page 140-141Micro Systèmes numéro 99 jui/aoû 1989 Page 142-143Micro Systèmes numéro 99 jui/aoû 1989 Page 144-145Micro Systèmes numéro 99 jui/aoû 1989 Page 146-147Micro Systèmes numéro 99 jui/aoû 1989 Page 148-149Micro Systèmes numéro 99 jui/aoû 1989 Page 150-151Micro Systèmes numéro 99 jui/aoû 1989 Page 152-153Micro Systèmes numéro 99 jui/aoû 1989 Page 154-155Micro Systèmes numéro 99 jui/aoû 1989 Page 156-157Micro Systèmes numéro 99 jui/aoû 1989 Page 158-159Micro Systèmes numéro 99 jui/aoû 1989 Page 160-161Micro Systèmes numéro 99 jui/aoû 1989 Page 162-163Micro Systèmes numéro 99 jui/aoû 1989 Page 164-165Micro Systèmes numéro 99 jui/aoû 1989 Page 166-167Micro Systèmes numéro 99 jui/aoû 1989 Page 168-169Micro Systèmes numéro 99 jui/aoû 1989 Page 170-171Micro Systèmes numéro 99 jui/aoû 1989 Page 172-173Micro Systèmes numéro 99 jui/aoû 1989 Page 174-175Micro Systèmes numéro 99 jui/aoû 1989 Page 176-177Micro Systèmes numéro 99 jui/aoû 1989 Page 178-179Micro Systèmes numéro 99 jui/aoû 1989 Page 180-181Micro Systèmes numéro 99 jui/aoû 1989 Page 182-183Micro Systèmes numéro 99 jui/aoû 1989 Page 184-185Micro Systèmes numéro 99 jui/aoû 1989 Page 186-187Micro Systèmes numéro 99 jui/aoû 1989 Page 188