Micro Systèmes n°97 mai 1989
Micro Systèmes n°97 mai 1989
  • Prix facial : 30 F

  • Parution : n°97 de mai 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 220

  • Taille du fichier PDF : 186 Mo

  • Dans ce numéro : imprimantes laser et traitements de texte.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 202 - 203  |  Aller à la page   OK
Pages suivantes >
202 203
TECHNIQUE - Le programme principal (maître) est conceptuellement analogue à un coprogramme I,e,4 1. mime IvIedula 2 fournissent des primitives permettant de manipuler les coprogrammes. Nous adopterfniq d,ln,'lue syntaxe semblable (on peut aussi trouver ces primitives avec certains compilateurs Pascal) : - PROCEDURE TRANSFER (VAR CP1, CP2 : T_Coprogramme). Provoque la suspension du coprogramme CP1 et la réactivation du coprogramme CP2 à partir du point où il avait été suspendu (au début, la première fois). Le type T _Coprogramme (Process en Modula) désigne des objets qui peuvent être considérés comilK, I dure (sans paramètre, si l'on respecte les conventions de Modula-2), qui est le programme du roprogranilip,. d'un bloc d'activation (environnement du coprogramme : compteur ordinal, pile, registres, variables locales I -oprogramme CP1 est évidemment supposé actif lors de l'appel de cette procédure et les c‘,1, 1, ",11,1111111`'q'1'1=1 1'2 uni vent avoir été préalablement initialisés par un appel à la procédure Newprocess (sauf si (ti, si gne le pi-parmi-le maître). PROCEDURE NEWPROCESS (Adresse_Procedure, Adresse_Procedure Taille_Pile VAR CP Pointer, Word, T Programme) Initialise le coprogramme CP avec les paramètres fournis. On peut remarquer qwe I iliriioiii. :, , itit-ograinitiea peu vent être associés à une même procédure Avant de montrer comment réaliser unenn,i,',.1, 111111:iiiirries implémentant ces procédures en Turbo-Pascal, nous allons illustrer les propos précédents à l'aide'l'illi exenii) 1P Un exemple simple et efficace : Voici un premier exemple dont le seul intêrêt eqt. le innutrei, romment utiliser l'unité Coprogrammes. Il ne saurait en effet justifier l'usage des coprogrammes tant sa 1, 1. 11 ; 1111111 ; 01,)11, "1.1".:1.111 ‘,'- i triviale. On notera les boucles « répéter à l'infini » (ou presque pour la lecture), caca, -teii, 11,1liç'I- i-o st-ilo.1, Foi, grammation, qui font des coprogrammes des unités autonomes. Il s'agit de copier à l'i,.1 ; iii im » eiiiiio i Io.- ; 11, h'ii, - ; Les bulles de transformation sont représentées par des rectangles pour des raisons typographiques. Les traits continus correspondent à la circulation des données, les pointillés à l'activation des coprogrammes. La double barre horizontale indique une zone de stockage de données utilisée par plusieurs coprogrammes. Clavier Programme Maître. I Caractère Coprogramme Ecriture Ecran tapés au clavier, la touche « Escape » indiquant la fin du programme. Contr,411-moni à la iiiiiiiiaiiiiii ; iiioli i-laFiaique, qui conduirait à l'écriture d'une seule boucle, nous créons deux coprogrammes : un pont la.f, d1, ṫ mii de le,'lute, un affile pour la fonction d'écriture. Ces deux coprogrammes se synchronisent mutuellement,l, : l i a, ti-atiiiii à l'ai,l,>, le la IO., cédure Transfer) et communiquent entre eux par une zone de données commune, 1., - ; 111,1I dr-,"11.1, loi - i I,oi.to gramme principal (Maître) ne fait que créer les coprogrammes sur les procédures'duoc,l. I "t piii-, k, Hu, ii, 1 processus de copie en activant le coprogramme de lecture. Celui-ci est chargé de au,',i lie, lat,'II, -lie - l-:, -ii,, pei Ir rendre la main au programme principal. On trouvera la liste de ce programme, I ‘-,iiiii'H.togratiiiiio,:i ori i Joux exemplaires dans l'annexe. Dans une première version, nous montrons comment1,.,',- la i‘,1 le, : piles ni,., io, - 111 fonctionnement des coprogrammes dans le segment de données, sous forme det.-=11, io,-,111 » Li'.‘ q1.1f, -‘,1.ii.iih,ii‘, dynamiquement les piles sur le tas. Pour ce qui concerne la taille des piles, un m111111111111, i-.f.:, -'ehs,etriPIt.,1-, nable pour les appels au système d'exploitation et les interruptions. Toutefois, si lai.itooti‘ ; I ilo iiitpilatiori, i 1, checking est active, il est nécessaire de réserver un minimum de 1 024 octets pour ch'dii. i qi 1.1.,1, 111 1, 1 ; d t 1Iy 1, l » h ii programme principal peut évidemment être réduite au minimum puisqu'elle sera Ir è,a tatPIII111 de compilation Memory sizes). Les tailles effectives des piles doivent évi,l,nn-nent tenir, "r'mi, 1‘ 1,', 1 F-,inr : nr1 Ii « -1 tière d'appels de sous-programmes, paramètres éventuels compris, ainsi quo, I, -, la taille, des V 11 ; 11.1, I ; - ic, Attention : Un coprogramme doit boucler indéfiniment ou bien rend','1.1 iii,iin airppiqtatimie, iii,:illie, l iai la iiti, dure Transfer. Si la procédure associée au coprogramme se termine notJ11,11'-'1i),'Ilt. on plan te 10 q'PZI 2‘111P202 - MICRO-SYSTEMES Mai 1989
PROGRAMMATION La procédure de transfert : Cette procédure est chargée de la commutation entre deux coprogrammes CP1 et CP2. lin'programme étant actif lorsqu'il dispose de la ressource processeur, le mécanisme de cette commutation va consiste'à priver CP1 de l'accès au processeur au profit de CP2. Pour que l'activité de CP1 puisse reprendre ensuite, il convient de sauvegarder le contexte d'exécution (ou image) de CP1, c'est-à-dire les registres du processeur (principalement CS:IP et les indicateurs d'état) ainsi que l'adresse de sa zone de données privée. Pour activer CP2, il suffit de restituer son contexte, celui-ci ayant été sauvegardé lors d'un transfert précédent ou bien initialisé par la procédure Newprocess (polir la première activation), Nous avons fait les choix suivants Puisque char pie coprogramme dispose de sa propre pile, les registres sont sauvegardés sur celle-ci (sauf bien entendu SS:SP gui sera le lien avec cette sauvegarde). Le programme associé à un coprogramme étant écrit sous la firme d'une pi océdure, sa zone de données privée (variables locales) se trouvera aussi sur cette pile, ce qui assure saemanence d'une activation à l'autre et offre la possibilité à plusieurs coprogrammes de partager le même code avec des données différentes. 1 es registi es généraux (AX, BX, CX, DX) sont sauvegardés bien que cela ne soit pas nécessaire si les coprogrammes sont écrits en Turbo-Pascal (même s'il existe une analogie entre transfert et interruption, le transfert s'effectue par lin appel de procédure). Mais ceci nous réserve la possibilité d'écrire sans trop de précautions des coprogramnies en langage d'assemblage. Le lien avec la pile du coprogramme (SS:SP) est sauvegardé dans une structure de données, externe au coprorn anime, unie variable de type T_Coprogramme. TYPE T_Coprogramme = RECORD SP, SS : Word END Le transferts.‘,ffectire donc par changement de pile : Contexte CP1 Contexte CP2 Pile privée Pile privée CP1 (libre) (libre) CP2 SS:SP I Registres Zone empilée à l'appel et dépilée au retour Registres SS:SP de Transfer Pile Pile privée Sens de privée (occupée) l'empilement (occupée) r Ira hachirree esprind aux paramètres empilés lors de l'appel de la j, ri,dirre Transfer par CP1 et qui seront dé-pilés lois du retour dans CP2) 1..alcienithrne (lc, la procédure Transfer : Empiler les registres (leurs valeurs sont celles de CP1) Sauver SS:SP de CP1 Changer de pile en restaurant SS:SP de CP2. Dépiler les registres (leurs valeurs seront celles de CP2) cette pl. dure est écrite en langage d'assemblage (fichier TRANSFER ASM) et incorporée à l'unité Coprogrammes sous forme d'un fichier objet obtenu par : MASM TRANSFER.ASM, TRANSFER OBl' ; on trouvera la source de cette, rocédi ri e en annexe La procédure Newprocess : Cette procédure est chargée d'initialiser le contexte d'un coprogramme avant sa 1, 1einiere livation C'est ce contexte qui sera restauré lors du premier appel à la procédure Transfer (vers ce coprogramme) leur -les raisons de souplesse d'utilisation (et aussi parce que nous avons choisi de respecter les conventions de tvlo lula -2), c'est le programme appelant cette procédure qui est responsable de la réservation d'une zone mémoire pour la pile du coprogramme. Mai 1989 MICRO-SYSTEMES — 203



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