Vous êtes sur la page 1sur 5
Soluions des exercices 325 dent compte = compte + 1: Véreatex) : POS); aller dA & fa Commentaires On suppose que léevaluation de b ne provoque pas d’effets de bord sur les éléments de la variable v5 sinon il faut activer tous les processus en attente des & chaque sortic de section critique. 2) On suppose que chaque processus est laissé dans ignorance des condi- tions attendues par les autres ; on ne peut slors que réveiller tous les processus en attente, Exercice 12 sémaphore tableau muter{0:4] = 10:4); PROCESSUS PHILOSOPHE i Li: det penser P(rautex{ij, muterti + 1); manger V mutex; Vmatexié + 1): aller Li fa CHAPITRE 3 Exercice 1 Sil s’existe qu'un seul anneau de protection, les objets rémanents ct es liens associés & une procédure sont en un seul exemplaire, dans un seul seg- ment de liaison associt au segment procéduce. Appelons Z/p) la région groupant ces emplacements pour un segment-procédure p donné Sil weriste qu'un seul segment de lsison, soit 1, par processus, il faut ranger Tensemble des régions Z/p) dans cc segment. On rappelle que : @) Zip) est de taille xc, ) sa durée de vie est 6gale & celle du processus. On fait abstraction ici des problémes de tail, Autrement dit, si |Z/p) 1 ext la taille d'une région, on suppose que, pour tous les p- nomnmés par Te processus : . = 1 Zep) <2 526 Spuidmes dexploitation des ordinateurs Quatre problemes se posent + @) comment le processus connalti ke segment de Faison £2 1) comment créer une région Z(p) 6) comment lier Z(p) au scement-procédure ? 4) comment désigner Tun des emplaceren’s de Z/p) ? 2) Désignation de L On peut supposer que lorsque le processus est créé, deux segments sont crees : ‘un est destiné contenir la pile unique (puisqu'l n'y a qu'un seul ‘anneau); il 2 pour nom 0, — Vautre est destiné a contenir les régions Z/p,); il a pour nom 7 par exemple. Par la suit by) Création Soit & régions Z/p,) créées successivement dans L. Considérons le moment ot un segment-procédure py, est amené dans l'espace adressable du pro- ‘esous (une entrée est créée dans le descriptif) Soit fle premier mot du segment de liaison, dont le contenu repére le premier emplacement libre dans L et soit { ce contenu, Les opérations nécessaires, effectuées par V'éditeur de liens 4 la premiére référence au segment-procédure p,., sont les suivantes : on désigne par le nom du segment de liaison. 4@) revopier le modéle de Zip,,,), range dans Par» dans les emplacements Lien + IZ P-L) 2) fire: det Zaid ©) Le catalogue des segments conmus Considérons un second appel A un segment-procédure déja lis, soit p- ‘Léditeur de liens, appelé pour transformer Tdentifcateur associé 4p, en un nom consulte Ie catalogue des segments connus. L'examen de ce catalogue permet de déduire le nom du segment p; et le nom de Z(p,) : ce nom est en théorie un couple (J, j), mais, en pratique, il peut se réduire 4 la seule donnée de i, Solutons des evercices 327 4) Adressage Considérons le registre 4, contenant le couple (1, i) (au lica du seul nom du segment de tiaison). Alors toute désignation d'un objet exieme et d'un objet rémanent s‘ffectue par indexation composée, soit. respectivement + (ie, RA, d) site nom de l'objet extern est rangé dans le (d + 1)-iéme mot de Z(p,) (ic, R4,d) si Vobjet rémanent est le contenu du (d + 1)-iéme mot de Zed Remarque. La valeur i, pourrait éue rangée dans le descripteur de L, en tant que taille de L. Cette solution implique une succession de modifications de taille de L quil est souhaitable d’éviter. Exercice 2 Sil n'existe qu'un seul anneau de protection, une seule pile est nécessaire Dans ce cas, au prix de quelques aménagements de Vappel de procédure, tun seul registre sufht pour désigner la région des locaux et celie des arguments {dans ce cas la zone de sauvegarde des registres doit etre de taille fixe, ou encore elle. doit écre située aprés les objets Locaux ou avant les arguments). Site segment contenant la pile est supprimé ct que celle-ci est partie dans les segments de liaison, tout se passe comme si on avait autant de piles que de rocédures différentes. Aussi la solution la plus simple est de ne pes modifier la répartition des informations eatre la pile de appelant et celle de Iappele Considérons Tape! d'une procedure p, par une procédure p,. Etant donné un segment-proeédure p,, on appelle — Lyle segment de linison associ et /, son premier mot, = Zipj) twrégion des objets remaments et des liens. — V(pj) ia région des objets locaux, A/p,) celle des paramétres, — Si(d et Soip,) les zones de sauvegarde des regisires représentant environnement de. p, ‘S, est la zone de sauveyarde garnie par programme, S; est la zone de sau- \Vegarde gamie automatiquement & appel de procédure. Avant lappel de ‘3, 08 suppose qu’on a la situation décrite sur la figure | L’appel de procédure agit exactement comme déerit en 3.25; on aura donc, apres Tappe! a situation indiquée sur la figure 2. Pendant Fexécution d'une procédure p,, les registres R3 et R¢ contieanent respectivement (4, d) et (i 0), Cest-dire une adresse segmentée désignant ‘un emplacement du segment de liaison. Lradressage des locaux s’effectue par indexation composée sur R3. L'adres- sage dans Z/p,) selfectue par indexation partielle sur R4. Ien résulte qu'un seul registre suffit pour les deux types d'adressage, par exemple le registre 3. Aisi, grice & cette technique, on peut supprimer un registre, le registre R¢. 328 Systémes d’explotation des ordinateurs Exercice 3 Lorsqu'un segment est détruit, son nom devient disponible. Lorscu'l Slagit d'un segment-procédure, les noms de ses segments de liaison (un par annesu d'appel effectué) deviennent aussi disponibles. Pour pouvoir les réutiliser sans risque, il faut tre certain qu'aucune chaine d'aceés ne pent plus conduire aux segments détruits Sokations des exercicer 029 Soit S le segment détruit, d'identificateur TOUAMOTOU. Toutes les références a S sont faites : — dans 5, par des instructions de branchement, si S est un segment-pro- cédure, — dans des segments-procédure S’ qui ont comme objets extemnes des objets de S, — dans des segments procédure S” qui ont comme paramétres effectifs es objets de 5. (On peut retrouver les seyments-procédure S' a laide du catalogue général ddes segments. En effet on y trouve pour l'identifiateur TOUAMOTOU, Ia liste des processus qui le désignent par un nom et le nom donné par chaque processus. Soit p, un tel processus et s, le nom par lequel il désigne S. On pprocéde comme suit : Dans tous les segments de liaison L/S", i) associés aux seements-procédure ‘S’ ayant un nom dans p, on recherche, dars la région des noms des objets ‘externes tous les emplacements qui contiennent une adresse sezmentée avec Je nom de segment s,. Dans (ous ces emplacements, on remet Tindicateur de deroutement. Cette opézation esta effectuer pour tous les processus p, qui sont cités dans le catalogue général, dans la liste associte 4 lidentificateur TOUAMOTOU. est beaucoup plus difficile de retrouver les paramétres effectifs qui sont es objets de S, car il faut faire une recherche dans les piles, dans les zones des paramétres effectifs de chaque procédure en cours d'exécution. ‘Une fagon de faciliter cette recherche serait de mettre dans les emplacements rhvervés aux parametres effectifS qui sont des objets externes, non pas les noms de ceux-ci, mais le nom du lien qui figure dans le segment de liaison. ‘On ce raménerait alors au eas précédent. Cette méthode n'est réalisable que si Vadressage indirect a deux miveaux est possible. Exercice 4 1. Aceés aux objets 1.1 Désignation dune procedure Considérons Jes mn segments-procédure numérotés, selon un ordre fixe par le compilatenr, de 04 n — J. Au début de 'exécution, les n descripteurs sont rangés dans’ des emplacements de numéros ee +1,...¢ +11 dans le descriptf. Ces emplacements sont inconnus du compilateur. Aussi, tune provédure est désienée, dans le programme, par un nom (2,3) oD fest un entier compris entre Det m — J. Le contenu du registre de numéro p désigne la base d'une zone de lizison contenant les mt adresses segmentées (e+60),1=0,...n—1. 330. Systémes exploitation des ordinatenrs Cette zone peut indifftremment tre rangée dans un segment de liaison, ‘unique pour un procesrus, ou en début de pile. Soit, par convention, a = 12 1.2. Désignarion des objets de Venvironnement de procédure Soit p ure procédure de niveau d’emboitement é A Vaide de noms de ta forme (k, x), ol k est un numéro de registre et x un indice, elle designe 42) Les objets locaux et les paramétres de toutes Is procédures de lenvi- ronnement. Par définitioa, elu-c est fommé de i régions de la pile, chaque région groupant ls objets locaux et ls paramétres d'une provédure de niveau demboitement j (1 j), il faut remetire 2 jour les contenus des registres |. —T,-..j. L'adrese zl est alors rangée ‘dans le registre 1; dans pile{l|, on trouve adresse de Ia zone de lisison a ranger dans le registre /— J, ei ‘RO, RI et RIS sont remis a jour grive a la zone de liaison, RI3 prend comme valeur le contenu du regisre avant commutation diminué d= 1. 332 Systimes d'explitation des ordinaiews Exercice $ Le deuxiéme mot de la zone de liaison de la région appelée permet de rétablir le registre pointeur d’instruction. L’élement de chaine dynamique, qui contient tun déplacement d, permet de retrouver la zone de tiaison L/appelante) de la région appelante, od. figure le niveau d'embottement n de la région appe- lante. Le rogistre d’environnement d’indice n reqoit la valeur d; ceux d'indice n= in ~ 2,ec..., egoivent des valeurs obtcnues d'aprés la chaine statique commencant dans L/appelante). Le registre de sommet de pile repoit le conteau du registre de région courante diminut de 1; ce dernier registre regoit ensuite la valeur d. L'exécution peut ensuite reprendre Exercice 6 Les registres d'environnement ne sont pas indispensables puisque dans la région courante se trouve aussi In représentation de son environnement, sous forme de la chaine statigue. L’utlisation de la chaine statique serait evidemment peu interessante car il faudrait éventuellement effectuer plusieurs accts dans la pile (en lisant la chaine statique) avant daccéder & un objet. La connaissance de la région couramte est indispensable, Exercice 7 On voit qu'il faut écrire deux procédures p// et p22 qui n'apparaissent pas dans le systéme BURROUGHS (elles devraient se trouver reprétentées dans le processus-racine), parce qu’elles n'ont pas le méme durée de vie que les autres objets du processus-racine Exercice 9 ‘A chaque segment de nom f, on associe = le numéro d'article courant (est celui qui est en cours de remplissage) noté aff), — un index de remplissage, noté 1(/), pointant vers le premier caractére non éerit (0 <7 <1) dans Farticle La proctdure proprement dite utilise une page virtuelle de numéro » comme espace de travail. Elles'écrit : prockdire éerire (uu n, ) entier un, f ; valeur usm, fs but ‘enter long, dep, nombre; long =n; tant que long > 0 faire eu eet ‘coupler (v, af). f) Sir(f) + long > Valors Solutions des exercces 333 nombre = 1 = rf) af) = aff) +1 adbut nombre := long : dep = r(f} + long fia transférer (nombre, u, 0 «1+ r(f)): umm + nombre; rif) = dep: long += long — nombre fin Remarque. La provédure transférer (nu, u») recopie octets debutant & Padresse doctet u, dans les m octets suivant lacresse d'octe: uz (instruction MBS du 10070). Exercice 10 1 Cas d'une mémoire virwelle par processus 2) Partage dune procédure P Pour assurer la réentrance, étant donné que I'on ne dispose d’aucun méca- nnisme de réimplantation en mémoire virtuelle, il suffit d’éditer et de coupler a procédure P aux mémes adresses dans les différentes mémoires virtuelles, ct d'associer les données & des pages physiques différentes (Fig. 1). ) Partoge des données D Le partage des données entre deux procédures différentes associées a des processus distincts est résolu de fason différente suivant que = — Ies données ne contiennent aucune référence & des adresses, — les données contiennent des adresses qui font référence & la prooédure appelante, — les données contiennent des adresses qui font référence aux données clles-mémes. Si les données ne contiennemt aucune référence & des adresses, elles peuvent etre coupiées a des adresses différentes, dans les deux mémoires virtuelles ; il suffit que les procédures appelantes soicat éditées pour les nommer a os adresses (Fig. 2a), Si les données contiennent des adresses qui font référence a des adresses de la provédure appelante, elles peuvent étre coupiées A des pages virtelles différentes ; par contre les procédures doivent étre éditées et couplées aux smémes adresses dans les deux mémoires virtuelles (Fig. 2b). 334 Systémes exploitation des ordeateurs DA représente les données du processus (DB represente les doanées du processus B Proceasue Processus ‘7 ? Figure 1, Partage d'une procedure Pentre 2 processus A et B associés ‘des mimoires virtuelles diferentes. canes Pacgane 7 7 PA représente la provédure assosiée au processus 4 PB représente la provédure associée au processus B Figre 2. Pariage dune rone de donaées D entre deux processus 4 ct B. Si les données comtiennent des adresses qui font référence aux données clles-mémes (par exemple par adressage indirect), elles doivent aire éditées et couplées aux mémes adresses dans les deux mémoires virtuelles (Fig. 2). 2. Cas de plusieurs processes travaillant dans Ia méme mémoire virtuelle a) Portage d'une procédure P Dans ce schéma l'ensemble des registres constitue le seul espace d'adressoge propre & chaque processus, Cette restriction n’interdit pas le partage d'une méme procédure P; elle impose simplement de tenir compte de certaines régles dans le codage de la procédure. ‘Ainsi la réentrance peut étre assurée, — seit on programmant la procédure de telle fagon que son espace de travail soit restreint aux registres seul, si cette restriction est possible, — soit en programmant I procédure de fagon qu'elle puisse désigner ses données alternativement avec des adresses différentes suivant le processus ‘qui exécute; dans ce cas adresse de la base des données propres 2 chaque processus doit constituer un paramétre de la procédure.

Vous aimerez peut-être aussi