Sie sind auf Seite 1von 9
Protection 233 accéder, pat la procédure, aux données du moniteur (modification du PSD pour obtenir la clé ¢'écriture du moniteur). — Elle permet de changer d'espace d’adressage (vietuel -+ physique). Le retour de la primitive et partant la restauration du pouvoir du processus usager est effectué par la procédure proprement dite. Ce mécanisme est suff ‘sant puisque la procédure dispose des droits nécessaires (mode maitre) pour modifier le pouvoir (PSD,...) du processus et cffectuer le retour corres: pondant, ‘Etant donné que la primitive accéde & des données communes, exclusion rmutuelle nécessaire et réalisée ici par masquage des interruptions. ») Les procédures du moniteur non résident sont couplées dans la mémoire virtuelle de chaque useger (ct. 3.441), Elles ont aceés & des informations nen résidentes du moaiteur, par exemple ke extalogue du systéme ou les catalogues des utilisateurs. Pour cette raison, Pexéeution de telles procédures par un processus usager requiert des droits supéricurs aux siens. Ainsi un processus d'un usager ne peat se coupler aux articies du catalogue sans droits particuliers. Pour simplifer la présentation, nous supposons ici qu'il n'y a qu'un processus *[appel d'une procédure du moniteur non rsient et slat par une opération CAL qui a pour effet : — de réaliser un guichet d'appel, — de changer le pouvoir du processus usager (modification du PSD pour obtenir la clé d'écriture, autorisation de coupier le catalogue, autorisa- tuon ¢’agir sur les sémaphores duu moniteur). Ces actions nécessitent Paccés a des données résidentes du moniteur; lies sont realisées en adresses physiques, toutes interruptions masquées, aprés quoi le contrdle est passé en virtuel, au point d'entrée de la procédure. La restauration du pouvoir du processus ne peut pas éire assurée par la procédure qui, cette fois, n’en a pas le pouvoir. Elle utilise alors une opé- tation CAL dont la fonction est = — de réaliser un guichet de retour : ce guichet de retour — qui est différent du guichet d’appel — a di étre eréé cu moment de Fappel de la procédure ; il est associé au processus appelant. On virifc alors que le processus a le droit drutiliser ce guichet, en regardant s'il est créé; dans le cas contraire une erreur est détectée. = Ge restaurer le pouvoir du processus. ~ de rbaliser le retour proprement dit, dans la mémoire virtuelle du pro- cccssus, en utilisant Fadreste de retour qui a été rangée dans le guichet de Fetour au moment de Vappel. Pour les memes raisons que précédemment, ces actions sont effectuées en. ‘dresses physiques, toutes interruptions masquées. 234 Ssstémes dexplomation des ordinateurs 5.3. MECANISME DE PROTECTION DANS LE SYSTEME MULTICS 5.31 INTRODUCTION MULTICS, comme CLICS, (cf 3.2) utilise un mécanisme efblé de seg. ‘mentation avec un dispositif de protection attaché & chaque sogment. Le segment constitue la plus petite unité d'information & laquelle il est possibie de donner une protection spécifique. Pour appuyer la présentation qui va suivre, inspirée de (Schroeder, 72), nous introduisons les précisions. suivantes. — Pour chaque usager qui veut utiliser le sysiéme, on crée un processus ct un espace adressable (ou deseriptif); on associe a ce processus le nom de Yuseger. — Liinformation présente dans le systitme est constituée d'un ensemble de segments : une lisie de contrble d’accés (cf. 5.131) propre au segment, permet de connaitre pour chaque usager les droits qu'il posséde sur le segment. Cotte liste détermine donc la colonne de la matrice M, relative A cet objet, ainsi que les évolutions possibles de cette colonne. — Lorsqu’un processus fuit référence & um segment, ce segment doit &tre introduit dans le descriptif du processus, s'il n'y était déja; cette opération gui est effectuée par unc procédure du systéme, n'est effectivement réalisée ue dans le cas out Ie nom de I'usager associé au processus demandeur figure dans Ia liste de contréle d'aceés du scement. Les droits de Iusager sont alors insctits dans le descripteur du segment, attaché au processus, L’évolution des droits d'un processus sur un segment est obtenue en asso- iat au processus un pouvoir intrinséque, indépendant des objets, et sus- ceptible de varier suivant ce conditions. Les valeurs possibles du [pouvoir sont ordonnées ; elles sont appelées anneaux de protection (« rings »). Les droits d'accés d'un processus & un segment sont alors définis, pour chaque accts possible (lecture, écriture ou exécution), par la liste des anneaux dans lesquels doit se trouver le processus pour étre autorisé a effectuer T'zcods requis au segment. Remarque. On peut, dans les calculateurs classiques, assimiler les modes maitre et esclave a la présence de deux anneaux, 5.32 DEFINITION ET PORTEE DES ANNEAUX Dans MULTICS Ie nombre d’anneaux a &é Limité & 8, Les anneaux soat numérotés de 0 & 7. Cette numéroiation exprime en outre un ordre total Sar les valeurs des pouvoirs possibles. Un procestus posséde les droits les plus ‘Henduslorsqu'l s'exéoute dans 'annau 0, et les droits es pls abies lorsquil sTenécute dans Vanneau 7, Proiectin 238 Le possibilité pour un processus d'accéder & un segment par exemple en tecture, en écriture ou en exéeution, dépend de Tanneau dans lequel évolue Ie processus au moment oi il effeetue Pscoés. Cet anncau est appelé par le Suite ameau courant. L'ensemble des anneaux consécutifs, pour lesquels Taceds au segment est liste, forme ls pareathése de cet aceés pour Ie segmicat. On définit pour chaque segment des parenthéses d'éeriture, de lecture et execution. Ces parenthéses sent prises dans la liste de contréle d'aceés du segment ot recopiées dans le descriptcur associé au processus, au moment ‘il le segment est introduit dans le descriptif. Ces parentheses sont propres 4 un couple segment-usager; en d'autres termes, les parcathéses associées un segment donné peuvent éxe différentes pour deux usagers zutorisés & partager le segment. Une parenthése peut étre Vide <7 n'existe aucun anneau (8 Taceés correspondant soit possible Schématiquement le controle de la référence & une adreste d'un segment cst réalisé de a fagon suivante en vérifont = — dPabord que la parenthise du segmert correspondante laccts demand rest pas vide, Gasltequeanneau dens equ! vole process's aneau courant, est bien inclus dans cette parenthése d'accis. La figure 5 illaste les parenthtses de protection associées & un segment de données modifiables mais non exécutables. ose TTT ee Pareshise Partniése ‘Secrare ‘dele Figere 5, Pareathiaes dScrture et de lecture Exemple 1. Considérons le segment décrit dans le figure 5 pour un processus, donne. Ce deraier pourra lie le segment sil se trouve dane an annéat doat le numéro ‘et compris entre Det 3, Il pourra rive dane Ie segment sealement else trouve dans TTenneau 0; il ne pourra jamais Pesécuter. La figure 6 illustre la parenthése d'exécution associée & un segment-pro= eédure. dceaton Figure 6. Parerihise d'exécution, 236 Systemes d'exploitation des srdinaieirs Exemple 2. L’exécution, par le processus, de ce segmeat-procédure ne peut se faire que dans Panneeu 3. Les conditions & satisuire par un processus pour execution «une procedure seront études au paragraphe suivant Remarque. Les parenthéses de lecture et d’éeriture commencent toujours & Vaneau 0; par contre la perenthése d’exécution peut commencer & un anneau qucleonque. Ceci permet d’éviter Vexécution accidentelle d'un segment rocédure dans un anneau offrant davantage de pouvoir qu’ n’en faut nor- ‘malement a la procédure pour référencer ses données. En pratique fa plupart des segments-procédure ont une parenthése d’excution restreinte 2 un seul anneau. 5.33, CHANGEMENT DU POUVOIR D'UN PROCESSUS. NECES- SITE DU GUICHET Une instruction de branchement vers un segment-procédure peut étre — soit un appel de procédure (instruction CALL), — soit un retour de procédure (instruction RETURN), — soit un branchement inconditionnel (instruction GOTO). L'exécution par un processus d'une instruction CALL ou RETURN peut donner lieu au changement de soa anneau d’exécution et partant & une modi- fication de son pouvoir. L'instruction GOTO, par contre, ne peut donner lien aucun changement de pouvoir; elle permet de se brancher vers des segments-procédure seulement dans le cas oli leur parenthése d'exécution ccontient Vanneau courant du processus. 5.331 Augmentation de pouvoir Lorsqu'un processus, en exécution dans enneau x, appelle un segment- procedure dont lz parenthése dexécution est fm, 1] avee 7 > 1, le pouvoir du Processus doit etre augmenté; cette augmentation implique un coatréle. our cela on impose que I’éxécution dans un nouvel anneau commence toujours A une (ou plusieurs) adresses) définie(s) du segment-procédure, appelée(s) guichet(s ; ainsi seul les branchements vers un guichet sont autor 63, ot c'est seulement au guichet que anneau d'exécution du processus prend sa nouvelle valeur. On garantit ainsi que les programmes qui commencent & es adresses référenceront leurs données avec les droits d'accés — ni top {aibles, ni trop forts — qui correspondent au nouvel anneau d’exécution. ‘Les guichets sont spécifiés, ca associant & chaque couple segment-usager tne Tiste adresses de guichets; ces guichets sont un sous-ensemble des points entrée externes (Cf. 3.262). De plus, afin de controler plus strictement toute augmentation de pouvoir, on défnit pour tout segment exéoutable et pour chaque usager, unc parenthése appel. La parenthése Pappei d'un scement-procédure spécife l'ensemble es anneaux de numéros conséeutif, immédiatement supéricurs & la paren- Protection 2317 thise d‘exéoution du segment et & parti desquels tout branchement vers ‘un guichet du segment est autorisé. On garantit ainsi que des segments qui sont exécutables dans un anneau doté de droits importants, ne pourront éire utilisé par le processus sil évolue dens un anneau doté d'un pouvoir trop faible. L’exemple suivant illustre lapel d'un segment procedure, avec aug. mentation de pouvoir. Exemple 3. La protection atiachée au segment est donnée par la figure 7 +, Pooje croissant 2 3s pT anes Tamir cae Tt | | ! Sassi tla game aie Rage Fig 7. Eremple de proteton d'un segment proctdee Toute tentative d’exécution de ce segment par le processus évoluant dans Vaneau 7 sera refuse. Si le processus évolue dans Fanneau 5 ou 6), i peut exécuter Ie segment, la condition d'en commencer Vexécution par un des 3 guichots, dont lea adresses respectives&Tintrieur du segment soat X, Ye Z, Dans oe cas le nouvel anncau d'exé cation du processus est fint& la valeur de la borne supérieure de la pareathése dent ‘ution Gi 4) du segment. Ftant donné que le segment procécurea été constrat pour travailer indiféremment dans les anneaus 3 et 4, lechotx de cette vileur peut paraite arbitraire; il n'en demeure pas moine coaforme & la philosophic des protections qu veut que Ton donne & un processus le pouvoir juste néeessaize & son exéeution, mais pas davantage. 5.332 Conservation du pouvoir Uy a conservation éu pouvoir d'un processus lorsque celuici exécute une instraction de branchement (CALL. RETURN ou GOTO) vers un segmeat- Procédure dont ta parenthése d'exécution inchut 'anneau d'exécution du Processus. L'opération CALL donne eependant icu & un contréle par guichet de adresse de branchement. Ceci permet de préverir des appels de prooédure A des adrestes qui ne seraient pss des points d’entée. L'instruction GOTO, ar contre, permet d'ignorer les guichets. Lutiité de la conservation éu pouvoir se pose pour utilisation de cer- taines procédures partagées, couramment employées (ce sont par exemple des sous-programmes de bibliothéque) quil est nécessaire c'exécuter avec autant de pouvoir que la procédure appelante, mais pas davantage. Afin éviter que tout appel d’une prooédure de ce type ne provogue un changement de Tannean d'exéution da processus, la parenthése d'exéeution qui leur est asscciée englobe plusieurs anneaux de numéros consécutifs. Ainsi Pexécution de ces procédures continuera se faire dans 'anneau d'exécution du processus, BBE Systémes exploitation des ordinctous si ccluici est inclus dans ta parenthése d'exécution de la procédure. Dans Texemple 3, Vexécution du segment-procédure se fera indifféremment dans Tanneau 3 ou 4 suivant que le processus évolue au moment de T'appel dans Tun des anneaux 30u 4. 5.333 Dimiution de pouvoir Lorsqu’un segment-procédure dott de la parenthése dexécution [or a] fest appelé par un processus en exécution dans 'anneau m (avec n < m), cet ‘ppel s'accompagne d'une diminution du pouvoir du processus. Le change- rent de annean d'exécution d'un processus dans le seas d'une diminution e pouvoir ne devrait pas nécesster de contréle, en lu-méme. Cependant deux problémes se posent — un probitme de programmation : la procédure appelante peut trés bien spécifer des paramétres que la procédure appelée n’a pas le pouvoir de réit- renver, dans son anneau d'exécution ; — un probléme de réalsation : le retour (par une instruction RETURN) vers la procédure appelante, se fera dans le sens d'une augmentation de pouvoir; en consequence c'est une opération qui doit étre coatrélée avos Lepremier probléme peut étre résolu en interdisant dle procédure appelante de spbcifer des paramétres qui ne seraient pas acorsibles & la procedure appelée, Une deuxitme solution consiste & copier les paramétres passés dans des segments accessibles cette fois & la procédure appelée, puis a les recopier dans leur emplacement inital une fois ie retour vere la procédure appelante effeciué. Cette solution presente toutefois un inconvénient: elle ne permet lus lz partage des paraméires entre différents processus. Le deuxitme probléme peut étre r&olu en imporant que le retour vers la provédure appelante passe par un guichet. Ce guichet de retour — qui est different du suichet d'appel — est associé & la procedure appelée; il doit fre créé au moment de Tappel et détruit lors du retour vers la provédure appelante. Dans le cas oi la procédure appelée est une procedure recursive, ies guichets de retour doivent éte gérés dans une pile. Remargue. Dans la pratique, les appels de procédures avee diminution de pouvoir ont une application limitée pour la raison estentielle suivante Considérons une procédure p, en exécution dans lanneau r, qui appelle ‘une provédure p,, ayant pour domaine d'exécution anneau s (avec r= 3); iss paramétres rendus par la procédurep,, déterminent Evolution ultérieure de la procédure p,, Dans Ja mesure ol la procédiure appelante accorde une sande confiance aux résuitats obtenvs (is sont peut-étre erronés) elle pout comprometire gravement la sécurité des données et des procédures égale- mont accessibles dans I'anneau r. Toatefois, les appels de procédures avec ‘diminution de pouvoir sont utilsés sans danger lorsqu'il n'y a pas transmis: Provetion 239 ssion de paramétres;; cette technique est employée dans MULTICS pour commencer 'exécution du programme d’un utilsateur a partir une procé- dure du moniteur. 5.34 IMPLANTATION CABLEE DES ANNEAUX DE PROTECTION Un projet de réalisation de mécanismes de protection c&blés, batis sur la notion d’anneaux, est présenté dans [Schroeder, 72]. La description que nous en donnons présente l'organisation du processeur sous les sculs aspects qui tat trait au controle de V'accés a une adresse 5.341 Descripteur de segment ensemble des segments appartenant & la mémoire virtuelle d'un processus ‘est défini par le descriptif des segments (cf. 3.222). Chaque descripteur (noté SDW) décrit un segment, ct un seul, de la mémoire virtuelle du processus, Le numéro de segment est utilisé comme index pour accéder, dans le deseriptf, au deseripteur considéré. Chaque descripteur SDW conticnt Vadresse absoluc ddu segment en mémoire, sa longueur et des indicateurs utilisés par le méca- nisme ¢e protection. Dans implantation proposée, les définitions des parentheses d'acces et des listes de guichets oat té resireintes afin = d'une part, de diminuer Tencombrememt du descripteur, — d’autre part, de simplifir les tests de validite d'acces effectués par le Processeur. sow [aires | tore [xr] ao] xe [ic] e] re] mute ‘Les 3 numéros d’aancaux, conteaus dans les champs (SDW. X1, SDW. X2. SDW. X3) délimitent les parenthéses de lecture, d’écriture et d’exécution, de méme que la parenthésed’appel, de la fecon suivante : spw.xt sow.x2 sow.x3 Figure 8. Disposition des parenthéses de protection. Corse — Sida dilie die. ' 240 Systemes exploitation des ordimateurs Des témoins de lecture, d'écriture et d’exécution, respectivement donats par les champs SDW.L. SDW.£, SDW.7, permettent en outre de spécifier si une parenthéte est vide ou non. Pour simplifier la défintion des listes de guichets, es possibiltés ont é1& restreintes par convention, seules les premiéres adresses d'un segment- Procédure sont des adresses de guichets. La liste de k guichets, associce au ‘couple scement-usager est done déterminge par les k premibres adresses du segment : c'est ce nombre k qui constitue le champ SDW.guichet. Il en résulte que deux usagers différents ne peuvent avoir des listes de guichets disjointes ; Je premier (ou les premiers) guichet(6) d'une liste est (sont) nécessairement ‘commun(s) a tous les usagers autorisés & partagcr le segment ; les guichets dont Femploi est restreint 4 un petit nombre d'usagers (ou a un seul) sont situés en fin de liste On rappellc que les champs duu SDW sont localisés par le nom de Tusager dans la liste de controle d’accés attachée 4 chaque segment. En outre un programme d'un usager, co exécution dans V'anneau n, ne peut pas spécifier, ddans la liste de contrdle d'accés, des valeurs de SDW”.X1, SDW.X2, SDW.X3 inferieures a n, 5.342 Exéeution dune instruction Nous avons vu que le compteur ordinal CO (c'est le registre RO dans CLICS) contenait 'adresse segmentéc (nseg. nmot) de la prochaine instruc- tion & exéouter. 1] contient aussi te numéro d'anneau dans lequel s'exécute le Processus. Les tosts de validité d'acc’s se font par Tintermédiaire d'un regisire de travail RT, inaccessible au programmeur, composé de trois champs : ar om we om] [Nous verrons, par la suite, que tout nom est constitué de ces trois champs. Les registres pointeurs RP, accessibles au programme, sont ks seuls registres, ‘outre ceux dé cités, a contenir des noms. Ils ne peuvent étte chargés qu’ats ‘moyen d'instructions spéciales qui ont pour opérande ua couple (nsez. not) ; Venneau attaché 4 ce couple sera déierminé automatiquement au cours du calcul de Fadresse, L'exécution d'une instruction est réalisée en 3 étapes : — recherche de instruction & exécuter, — formation de adresse segmentée de Vopérande, — interprétation du code opération, avec accés A Popérande, Pour chaque étape, nous illustrerons par des organigrammes le contréle cexereé par le processeur lors de Vaccés a une adresse. Protection 241 a) Recherche de l'mstruction d exéeuter Liadresse segmentée de Vinstruction exécuter est contenue initialement dans le registre CO. Le numéro d'anneau d'exécution courant (CO.ameau) qui défnit le pouvoir actuel du processus est également contenu dans ce registre sca erin sagment, deseroa (RT nseal Ten dela pucsshene Tes du ovin dexdeaie Behe Varun ‘cirase “das te segneet, ‘er donnce par’ RP amet Evreur 1 : violation d'accés : Varneau d'exéoution courant a’est pas inclus das la poreathése dexéoution du segment référenct Errear2 : violation daccés : exteution interdte. Commentare 1 - Ye numéro du segment dens le detriptif du processus est donné par le champ RT sep. Figure 9. Recherche de Viastruction b) Formation de Vadresse virtuelle effective de lopérande Lorsque instruction référence un opérande, son adresse segmentée est obtenue (cf. 3.24) en ajoutant le déplacement (INST. dépl), spécifié dans Vinstruction VST, au content du registre pointeur RPn spécifié dans l'ins- tivetion par le champ INST. RPmon. Ce registre contient également un ‘uméro d'anneau qui permet de contrdler si l'aco’s demandé ext licite ov 242 Systdmes exploitation des ordiareure L‘opérance définitif peut éventusilement étre atteint a travers une suite 'indireetions ; un comuGle est effectut par le processeur 4 chaque niveau indirection. Les adresses successives des mots indirects sont élaborées dans le rogistre de travail RT, L’accés aux différentes adresses qui ménent, via la chaine diindirection, a Vopérande définitif peut se faire avec un pouvoir different mais toujours décroissant. Ce pouvoir est également rangé dans le registre RT. = ST. RPmny Riineg o— RPornceg BP amet | RPL rw INST dip AT anvan sm naw(ETranneaey Aine anscon) | Conenste 2 Teche te desaptcus dy sopra ontneat le ot éndvcct (00 doses (RE ong) Tose de taper ete de lace Ena 3 “es ds seni SR Consensive 3 Frew 4 Techerchs To met toes (HDT Son eirenue dene Te aopont ont ne TRI nace = IND. ne BPaanct = IND ane Rr amen i= masinan (RT amediy SD¥.X,, (9D.enmeanp Commence 4 Provection 243 Conmmentaire 2: le pouvoir avec lequel se fera Yacces 4 Fopérande ou au premier sot indirect sera inféticus ou égal au pouvose defini par Vanneau d'exécution courant, ‘Commentaire 3 : e schema suppose ici qu'il ext possible de lie un mol dans ie iéme segment, bien que le temoin de lecture ne soit pas positioane. Commentaire 4 : chaque fois quan mot indirect ext obtenu, on met 4 jour le pou- voit (RT.arneau) gui permettra de valider le prochain acces. Pour fixer sa nouvelle valeur, on considére que le mot indirext (IND) obtenu, a pu étre modifié per une autre procedure du meme processus influeagant per li le résultat du calcul de Fadresse fective de Vopérande. Tenir compte de la patenthése décriture (SDW.X1) de ce seyment dans [2 mise 4 jour de RT.anncau, garantit que Ia referenc: & Topérande sere contrélée avee le pouvoir le plus faible qui pourrait avoir infus sur adresse fective ‘Figure 10. Formation de Vadeesse de opérande ©) Imerprétation du code opération avec accés & Vopérande ‘Au début de la présente étape (Fig. 11), on dispose dans Ie regisre de tra- vail RT — de l'adresse segmentée de Vopérande, — du numéro d'anneau, définissant laocks requis & cet opérande. ‘Nous traitons Vexécution des instructions de branchement (GOTO) et des instructions d’écriture, en laissant de eSté les instructions de lecture qui ‘apportent rien de nouveau a la compréheasion des mécanismes, Les instruc- tions de branchement ne donnent liew a aucun changement de pouvoir, mais, seulement & un contrdle de validité dexéeution. Remarque. Si instruction interpréter est une instruction de chargement d'un registre pointeur RP, alors le contenu du registre RT est recopié dens oc regisire poimieur. De cette fagon, on cst assuré que le numéro danneay ui est recopié dans ke regisire RP. est dans tous les eas supérieur (ou égal) anneau courant du processus, 5.343 Appel et retour de procidure Lappel d'une procédure s'accompagne de Ia pastation de paramétres et da rangement de Vadresse de recour Pour qu'une procédure puiste étre partagée par plusieurs processus, 3a mécanisme doit permettre a cette procédure de ranger ses données des ‘emplacements différents, suivant le processus qui 'exécute. Dans MULTICS, ‘ext effet, une pile de travail est associde & chaque processus. Chaquc proce ure utilise alors, pour désigner ses données, un regisire pointer de pile définissant dans la pile du processus pour le compte duguel elle sexécute, Ja zone de travail qui lui a ei allouée (dans CLICS le registre pointeur de pile est le registre 3), Du point de vue de la protection la zone de travail d'une procédure ne doit étce accessible qu’aux procédures sexécutant dans Je méme anneau que la Drocédure considérée ou dans un anneau dott d'un pouvoir supéricur. Pour 24 Syetimes exploitation des ordinateurs Lecure de deserted segment, contnmt Udresne de brenhemn sesenipnf (RT msc) Erreur | : violation éaceés : (parenthixe d'exéeution). Erreur 2 : violation d'accés : (témoio dexéeution). Erreur 5 : violation ducets : (parenthtse d'criture), rreur 6 : violation f'acés : (Vémoin déersture) Erreur 7 :tentative de changement d'anneau d'exéoutien autrement gue par les instructions CALL et RETURN. Figere 11, Interprétation du code opération, certe raison, Timplantation de la pile de travail astovite & un processus est ‘obtenue en eréant autant de segments-pile qu'l y a danneaux d'exéeution possibles(Ces-i-dire 8 segments). De méme pour chaque procédure, i existe dutant de segments de liaison qu'il existe d'anneaux d'exéeution posses (ct 3.282, Exomple. Ls zene de travail des procédures en exéeution dans Fanneau 7 es implants dans sn segnentple dou Jes parentéaes de lecure 1 rita (0 ‘A.osi ls zones de travail de ces procédures ne sont pac accessible paris des prose ‘ures Senéouant dans un aaneau de miro eupeneut 8m 4) Instruction CALL. Passation des parandtres uetion CAL permet d’effetuer simultanément lappel ’une proce dure et le changement d'anncau d'exécution du processis, Dans le cas 0 Tappel de la procedure correspond & une diminution de pouvoir, Tirsteuction CALL provogue un déroutement; Vappel sera alors effectué par tne proce dure du moniteus. L'appel de procédure avee conservation de pouvoir peut fre vu comme wa cas particulier de Vappel avec augmentation de pouvoir. Proteaion 245 ‘Nous ne considérons done que I cas d'une procedure p en exécution dans Tanneau n. appelant un segment-proctdure g dont la paremthése d'exécition est (mul avec n > u. Le pouvoir du processus doit re augmenté Pour gue Vappel de la procedure g soit satisfai,il faut — qui soit dirigé vers un guichet du segment g, = que Tanneau d'exéeution » sox inclus dans le parenthése d'appel du segment 7 En supposant ces concitions remplics, examinons comment sont réalisés Ja transmission des paramétres ainsi que le retour correspondent vers le procedure p : 1) La prooédure appelée possede par hypothése ua pouvoir suffisant pour acobder aux parameites spéciiés par la procédure appelante p et ensuite pour retourer le controle & la procédure appelante. 2) La procédure appelée doit créer un bloc local dans le segment pile correspondant & son anneau d'exécution, 3) La procédure appetée doit avoir un moyen de controler ls références aux paramétres qui lui sont pastés ; en particulier elle ne doit pas etre amence 4 lire ov @ erie un paramétre pour lequel la procédure appelante naurait pas ce droit acces 44) Enfin, ia procédure appelée doit avoir un moyen <’identiicr I'anncau dans lequel évolue la provédure appelante pour éviter de lui rendre le controle avec un pouvoir supérieur 4 celui qu'elle avait au moment de Pappel Ledeuxiéme point est résoiu en reliant impliitement le numéro du segment- pile & utiliser 2u numéro d’anneau de la procédure appelée. De cette fagon le processeur calcule automatiquement le numéro du segmentpile asso: 1a procedure appelée tle lui communique. De plus, par convention, un mot patticulier (oi le premier mot) de chague segment pile, désigne toujours le bat du bloc disponible & Vintéricur du segment-pile; la procédure appelée peut ainsi, & parti du numéro du segment-pile, construire son propre pomteur de pile et partant accéder 4 son bloe local. Le préservation et la resauretion de la valeur du poinceur de pile, associé 4 la procédure appelante, sont a la charge de la procédure appelée. Dans le eas qui nous intéresse ici, l'appel ‘vee augmentation de pouvoir, cette convention ne viole pas les régles de protection puisque la procédure appelée posséde davantage de pouvoir que 1a procédure appelante, Pour résoudre le troisitme point, on impose 4 la procédure appelante de Construite, dans sa pile associée, une suite d'emplacemeats dent les conteaus désignent les diférents paramétes A passer; ele doit fournir en outre, & a Drocésture appelée, V'adresse de début de cette suite, dans un registre pointeur ‘RPa fxé par convention de programmation (dans CLICS c'est k regisire RS). La procédure appeiée peut alors désigner un paramétre en utilisant 'adressage indirect. 246 Syutdmes d'exploiation des ordinateurs Puisque le numéro d’anneau spéciié dans le registre RPa a été chargé par ls procédure appelante au moyen d'une instruction spéciale (ef. remarque du 5.342c)), sa valeur est supérieure ou égale& fa valeur de 'anneau dans lequel Stexécutait la procédure appelante au moment de l'appel. Il s'ensuit que toute référence aux paramétres, par Ix procédure appeiée, se fait avec un pouvoir identique (sinon inférieut) & celui de la procédure appelante. La manipulation des paramétres est protéxée tant que le procédure appclée, dotée d'un pouvoir supérieur, ne fat pas d"action explicte pour augmenter les droits associés a une liste de paramétres (par exemple en modifiant le numéro danncau associé au mot indirect). La solution du quatrieme point (oir 6) ci-aprés) consste& ranger Vanneau de retour de la procédure appelante dans un registre accessible & la provédare appelée. Le retour vers la procédure appelante se fait dans cet anneau, via ce registre. Ce mécanisme est fiable puisqu’on est assuré qu'une provédure ne put pas charger dans un registre pointeur ua numéro ¢'anneat ui donnant des droits supérieurs aux siens. Le cycle suivi par le processeur, au cours de Tinstruction CALL, est donne par la figure 12. On suppose & ce stade de 'extcution que Vadresse effective ‘de branchement spécifiée par Pinstruction CAL se trouve dans le egistze RT. Le registre CO contient adresse de instruction CALL et le numéro d'anneau exécution courant. RT-anneaw désigne Venneau dans lequel doit ére commencée instruction CALL. Ce schema appelie quelques remarques. L'sceés demandé pour une instruction CALL est caleulé par rapport au numéro d'anneau associé & Vadresse de branchement. Comme cetie adresse est obtenue par l'intermédiaire d'un registe pointeur RP et par indirection, Je numéro d'anneau associ, RT anneau, a pu prendre une valeur plus élevée que celle de Vanneau dans lequel s’exécutait instruction. Ea conséquence un appel de provédure qui se présente comme s'il y avait augmentation de pou- voir par rapport & la valeur de RT.ameau, peut en fait étre un appel avec diminution de pouvoir par rapport @ T'anncau d'exécution courant (CO .anneau). Puisque dans des circonstances normale, ceci représente une erreur, une violation d’accts est déclenchée en (A) méme si 'anncau courant ‘2 trouve inclus dans la parenthése d'exécution du segment appelé. En (B), Vinsiruction CALL charge dans le registre RPo un pointeur vers le mot d adresse 0 du segment-pile correspondant au nouvel anneau d'exéeu- tion, Par convention, on décide que le numéro du segment-ple est le méme que le numéro du nouvel anneau d’exécution. A partir de li, la procédure appelée peut construire elle-méme son pointeur-pile, ce qui iui permet de repérer son bloc local. ) Insiruction RETURN. Détermination de Varmecu de retour Le retour d'une procedure et partant le changement d'anneau dexécution du processus est réalisé par instruction RETURN. Un retour de procédure Protection 247 2a descugtca du segnens Teast de hace omen desea LRT se anarow eect find ae seat ita pone Pore Figure 12, Interprétetion de Finetruction CALL dans le sens d'une augmentation de pouvoir provoque un dérouterent ; le Feiour est alors & la charge d'une procédure du moniteur. Le retour avec Conservation de pouvoir peut étre wu comme un cas particulier du retour avec diminution de pouvoir. La figure 13 illustre le fonctionnement de cette instruction ; & ce stade de TTexécution, on suppose que l'adresce de retour se trouve dans le registre de travail RT. Lianneau de retour, RT annean, est celui qui est attaché a adresse de ‘etour. Dans le cas d’um retour avec diminution de pouvoir, tous les numéros enncaux figurant dans les registres pointeurs RP sont remplacés par un ‘numéro conférant un pouvoir inférieur (ou égal) 4 celui de Panneau de retour. 268° Systémes exploitation des ordinatears retin dh desenptow de segues EO cepa

Das könnte Ihnen auch gefallen