You are on page 1of 10
Miéthodologe de conception et de réalisation 289 Exemple. Un programmeur désirant construire un programme d'analyse synti= xique uulisant dos piles pourra commencer par étendte son langage en déinissant des instructions de gestion de pile comme dans exemple du 7.311. Il devra resiser cos instructions avec les outils dent il dispose 7.32, PROGRAMMES PARALLELES Une des difficultés des méthodes exposées cistessus réside dans la part arbitraire de la décomposition en modules. Lorsqu'on admet la possibile 'exéeution paralléle de certaines phases de travail, on introduit un degré de liberté supplémentaire car la décomposition en processus est elle aussi, dans tune certaine mesure, arbitraire. Le conception ct la réalisation sont done beaucoup plus complexes. Il semble que Ton puisse procéder de la fagon suivante : au départ, on fixe Ia décomposition en processus du sysiéme global, ainsi que ks primitives de synchronisation que l'on va implanter. On emploie pour cela une approche par niveau : les niveau inféreurs doivent fournir des outils adéquats pour la programmation des autres niveaux. On commence ainsi par programmer le niveau le plus bas oii Yon implante Ia gestion des processus et des smaphores; puis on ajoute & chaque niveau un ou plusieurs processus de gestion de nouvelles ressources réelles ou virtuelles, On reirouve ainsi les systémes & « noyau extensible » [Brinch Hansen, 70], dans lesquels le réalisateur du systéme nc fourit qu'un certain nombre d'outils (synchro- nisation, gestion des fichiers, ..) qui correspondent aux niveaux inférieurs un systéme complet, Lutilisateur peut compléter ke systéme de fagon adaptéc A sex besoin propres Exemple. Donnoas pour trminer un exemple de décompositon en niveaux dun systeme réel: le syseme THE (Dijkstre, 68): on rappelle qui “agit dun systeme ‘multiprogrammé i nombre fixe de processus, vilsant le semaphore comme mécanisme e synchronisation. Niveau 0. On désire tout é'abord multiprogrammer unit centrale entre plusieurs processus jon implante done au niveau le plas bes les primitives P et V qui réelisent allocation de unit centrale, Pour assurer une répariiion équitable du temps unite centrale, on ajaute a programmation d'une horloge permettant de changer perio quement le processus élu. A partir du niveau J, le nombre de processeurs reels est sans importance. Corélativement, sion change le nombre de processeurs, on maura | modifer que le niveau 0 Niveau 1. Au niveau 1, on introduit Ie processus de geition du tambour, qui tuarsfere des pages du tambour vers la mémoire central & la demande des processus de nivean supérieur. Ce processus est ua processus cyclique; pendant Texéeution une entréeorte lest blogue derriere un sémaphore (le systéme interruption de la machine ELXS sur laquele est implants le THE est trés proche du semaphore). ‘Audessus du niveau Z, 00 dispose done d'une mémoire virtalle. Niveou 2, Aw ivecu 2ee troave le processus de gestion dela console de Vopératear (cf. 7.5). Ce processus, chargé de gérer ls conversations entre 'opérateur et les divers Drocessus de niveaux supérieurs, est plact au niveau 2 pour qu'il puste utiliser Ia 290 Systemes d exploitation des ordinatears ‘mémoire virtuelle. Si ce procesus avait été placé zu niveau J il aurat falls lui rserver lute cone fixe de mémeire centrale et door condenser Ies différents messages dispo- nibles, Audessus du niveau 2, les processus peuvent communiguer avec Popératear. Nivean 3. A ce niveau se placent les processus d'entréessortiot. Les eatréoe sorties se font par lintermédiaire de fichiers sur tarsbour (auxguels les processus du niveau 4 font accés par des requetes au processus de gestion du tambous); les processus du iveau 3 sont chargés de remplir (ou de vider) les fichiers tampons & partir (sur) des pésiphérques, Les demandes d’entrtes-sorties sont faites par des processus de niveau Supérieur; pendant Vexécution physique des transiors, les processus 'entréte- sorties font bloqués deridre un semaphore. Oa les place & un niveau supérieur & 2 car is utiseat la mémoire virtelle (niveau 7) et communigueat avec Vepérateur (niveau 2). AAudessus du niveau 3, les processus peuvent exéouter des entréet-sories, Niveau 4 A ce niveau se placent les prosessus des cifferents usagers. Comme ceux fom! appel aux processus du niveau 3, on doit les placer & ua niveau supérieur, Slesta-direau niveau ¢. Remarquons que ls processus des usagersappellent égslement les processus des niveaux / et 2 et utilise! éviderment les mécanismes du niveau 0. D’oi I graphe des interactions entre niveaux aoe OHO LD 7.4 OUTILS D'ECRITURE ET DE MISE AU POINT Nous mous intéressons ici aux modalités pratiques de la salisation des systémes. II s’agit d'un champ d’étude encore pou exploré, et faisant objet de nombreuses recherches, Nous nous restreindrons 2 deux aspects parti- colicrs = les langages d'écriture de systémes et les outils d'aide a la mise au point. 7.41 LANGAGES D'ECRITURE DE SYSTEMES Un systéme doit emplir des fonctions spécfiques, souvent trés dépendantes du matériel (gestion des disposiifs cables de protection, des interruptions, des déroutements, des entrées-sortes,..), et ces fonctions ne sont pas tou" jours aisément descriptibies dans un langage de programmation. On peut ‘tre ainsi amené a concevoir Feasemble des outils de construction de systéme comme un autre systime. Ce sysiéme de construction peut étre consigeré ‘comme un sousentemble du systéme & construire (en consiituant ainsi un ‘Méthodologie de conception et de réllsatin 291 Premier niveau) ou concu comme cntiérement distinct. Dans tous les cas, con doit disposer d'un langege permettant dexprimer kes algorithmes du sys. ‘téme & construire, Ce langage doit permetire de construire des programmes dont les caractéristiques ne dépendent pas ce celles du systéme de sonstruce tion. Nous alfons examiner divers aspects des langages de programmatic ot tenter de dézager des propriéiés soubaitables pour un langage desting & Ja réalisation de systémes ; nous passerons ensuite en revue les principaux types de langages utilises, 7-411 Caractéristiques des langages Sans chercher a étre exhausts, nous énumérons ici les caractéristiques qui nous paraissent les plus importantes. 1) Adéquation. Le langage doit étre adapté au mode de conception et & la ‘ature des algorithmes qu'il exprime : sides processus paralleles interviennent, le langage doit pouvoir exprimer ie paralleisme. Ce problime nest pas résolu actuellement de fagon satsfaisante. Le langage doit non sealement pouvoir déctire des proprits des objets manipulés mais comporter un moyen de garantir @ Vexécution que ces propriétés sont satisfaites. Par ailleurs, es programmes de systmes sont le plus souvent constitués 4 partir de moreeaux séparés. Un langage 'eriture de systémes doit done pouvoir décrre aisément 'es liaisons entre modules ou au minimum permetire ‘assembler aisément des morceaux de programmes compilés separément. 2) Clareé. Un langage de programmation est destiné aussi bien a la commu nication. entre hommes qu’a Tinterprétation par une machine. De plus, il influence le mode de pensée de ceur qui Tutlisent. La clarté est done une propriété a rechercher, pour les instructions comme pour les données : — instructions ; Ie langage ne doit pas permettre de constructions dont effet n'est pas immédiatement apparent (effets de bord, par exemple). Les instructions de séquencement (« control statements >) doivent permettre une programmation structurée qui facili la lecture et réduit le risque d'erreur (atilisation des constructions tant que ... faire, répéter ..jusgw a, ... plutBt ‘que aller a), — — données : le langage doit permetie de décrre des données compostes (Gableaux, classes) et d’associer & toute donnée une procédure d’acoés imposant des conditions «utilisation bien déterminées. 3) Aficacié. Veffeacité & Vexéeution du programme résultant doit étre feeherchée, meis non au detriment de la claré et dela sécurité. Ainsi, on ne seit pas systmatiquement exclure diverse opérations a Pexécution (contre des indices de tableaux, gestion d’une pile) qui permettent des possibilites Gendues de verification. Lefficacité du compilateur est égalemeat un facteur important pour des programmes qui doivent étre frequemment modifies et recompile 22 Syewbmes dexplotation des ordinateurs 7.412 Classification des Iangages [Nous €numérons, par ordre d’loignement croissant du langage de la machine, les principaux types de langages utilisés pour lécriture de systémes. 1) Langages Cassembloge Les opérations décrites dans un langage d'assemblage sont les instructions une machine donnée ; aussi ces langages se prétent-ils assez mal & une pro- grammation claire et structurée en raison de la nécessité de décrire les algo- Fithmes & 'aide d'opérations trés élémentaires. De méme les structures de données sont rudimentaires et déterminées par le matériel. On peut remédier dans une certaine mesure a ces défauts, par —Lutilisation d'un macro-générateur, — le respect d'une stricte discipline de programmation. Exemple. On peut implanter des structures de données munies dun méctnisme ‘acods si ons impose de n'accéder 4 ces données que par un jex de macro-instractions. Corisins langages faciltent cette discipline par des directives permettant dadjoindre au repertoire dinstructions um casemble domaé de macro-iastuctions (directive SYSTEM du METASYMBOL sur CIE 10070) ou delimiter a porte des idenifieateurs, En césumé, les langages d"assemblage permettent dkposer le message m dans easier Dans ce schéma, le producteur est unique; la présence de plusieurs péri- phériques néeessiteait un scaéma @ producteurs multiples, ‘Au repos, le SERVANT est blogue decrgre son sémaptore privé servant toute demande ) ; Méthodolori de conception #1 de récisation 305 aon opérationnelle alors dour enton = wat eposer-message (« impr. non of nelle », P(sop) ; pératcnneli »); i réponse opérateur = « contiwer » alors ale 6 INCR sinon aller d SORTIE fe De meme, la ligne iraitement des errewss s'érit : Si erreur de transfert alors attend-op += vrai; époser-message (« erreur de transfert ») : P(sop) : Si réponse opératour = « continwer » alors aller & IN Sinon aller SORTIE ~ m Quant 4 action du processus SERVANT, elle peut s’écrite : Si 7 attendop alors erreur ~ début réponse opératew m= message lu d la console: ‘ttend-op += faux: V (sop) fin Remarque 1. Le booléen aitendop, la chaine réponse-opérateur et le stmaphore sop font partie de Pinterface PILOTE-SERVANT. Ramarque 2. Le sémaphore sop eat un sémaphore privé dy proces PILOTE' es varies anendop & riponsepuree peaven Bee plates, Indéreminent dans Pun qulconaus des deun modules 4) Verroilioge de l'mprimante On désice parfois arréter imprimante entre deux transferts de fichicr, our permettre certaines opérations dentretien. On prévoit done deux commandes utlisables par Vopérateur, le verrouillage et le déverrouillage de Fimprimante. Une premiére approche est la suivante — on positionne au verrouillage un booléen verrou, — le FACTEUR consulte verrou au sort ée sa position de repos P/ses) ;31i1 Ik trowe yrai, il se bloque derriére un sémaphore sblce (valeur intiale 0), 306 Sprtames ’explontion des ordlinaieurs — au déverrouillags, il faut bion str remettre verrow & faux ; de plus, site facteur sett bloqué, il faut exéeuter un V/sbloc). On doit done disposer d'un indicateur supplémentaice facteur-blogué pasitionné par le facteur avant son blocage, et faire attention aux exclusions mutuelles d'accés 4 cet incicateur. Dans une deuxiéme approche, oa désire ¢ dispenser de lindicateur fateur- Blogué et exéouter systematiquement ¥/sbloc) au déverrouillage. Pour exla, fon peut faire une analogie avec un passage @ niveau : au verrouillage, on baisse la barrire, au deverrouillage on la releve. Quand une voiture trouve la barriéze formée, elle s'arréte et repart quand la barriére est levée. Avec les ‘émaphores, on obtient les insiructions suivantes (sbloc a pour valeur initale De VERROUILLAGE — DEVERROUILLAGE 7 verrou alors si verrow alors debut Oe debt verrou = yrai: verrou = fawe Pisbioc) ¥(shloc) fa: fn: FACTEUR (ses) P(sbloc) + V(sbloc) Remarques — Le stmaphore sbloe appartient & interface FACTEUR-SERVANT. — Dans le FACTEUR, on re le P(sbloc) d'un V/sbloc) pour ramener le semaphore & sa valeur initial de 1 — On peut dans le FACTEUR tirer parti de Vindicatcur verrow pour ’exécuter les primitives sur sbloe qu’au moment opportun ; verrou appartient alors & Vinterface FACTEUR-SERVANT. 7.524 Récapitulation La figure 2 donne un schéma général des relations entre processus dans le systéme d'entrée-sortie. Donnons pour terminer la liste des modules et de leurs interfaces : 1) Module d'entrée.sortie — sémaphores ses, smutexbal, — boite aux lettres = fichier de nom BAL. 2) Sous-modules a) FACTEUR —. sémaphores sprod, scons, ses, 1 eerie interface (FACTEUR-PILOTE) wONrTEUR UTILISATEUR Méthodologe de conception et de réalisation 307 PUT» jvons vane a sr seus ow fe ats SERVANT: Bisson: Figue 2. Schtma general du systeme d'entrée-sortie my Haat errs rire i iponer mesg: Views, Vameteaal), PREMIER: ? amutestat); 308 Spetdmer eploitation ds ordinaiew's ») PILOTE T semaphore ree piece (PLOTE-FACTECR) — semaphores sop, sbloe, = booléen —attend-op, | een ioresenvanry Tine Rpomecpdrater ©) SERVANT — stmaphore sservant, — procédure déposer-message, = booléen —tipup. Jina (rvore senvan) imetace (SERVANT-OPERATEUR) ‘Toutes les variables de communication entre le PILOTE ct le SERVANT sont définies dans le programme associ¢ au processus PILOTE; dans ces conditions, extension A un systéme comportant plusieurs périphériques, one plusieurs processus PILOTE, est immédiate. EXERCICES Les quatre exerices qui suvent se rapporteat au modéle 'enuéesortc présenié en 7-5. terminologie utliste est celle de 7.5 1. [I] Tronemission des messoges du processus SERVANT (ef. 1.522) crite Ie procedures utilisées pour la communication avec le processus SERVANT. (On prévoira lecas de producteurs multiples poser nuscoge place un message dans la boite aux lettres (caver) du SERVANT. ‘extrire-messege est appelse par le SERVANT pour prelever an message dans casier. 2. (2) Verroullge de Vimprimarce 4) Ea vtilsent ln premiére des deux mithodes exposes on 7.5234), terire — les commandes de verrouillage et de déverrouillage de imprimante, — le phase initiale du processus FACTEUR (test aprésectivaticn), 5) On suppose maintenant que le systéme gére deux imprimantes. Modifier le séquence de verrouillage de fagon que la mise hors service dune impri ‘ante n'empéche pas impression d'un fichier sur Yautre 3. [X} Arvét de Vontrée sorte en cours Implanter une commance permeitant 4 Topérateur darréer un transfert en cours: une demande de transfert est en attente, elle deit alors étre pri en compte immé- sintement. 4. Signal defn d'mpression (On oésire que Fusager soit prévenu 4 ls fin de Vimpression (et puisse one attendre celle). Modifier les programmes en consequence.

You might also like