| | | Sohranit' registrovyj kon- | | | tekst pol'zovatel'skogo | | | urovnya | Vyzov sistemnoj funkcii ------+-------------------------------+ ^ | | Ispolnenie v rezhime zadachi Risunok 6.29. Standartnye kontekstnye urovni priostanovlenno- go processa Vypolnenie processa priostanavlivaetsya obychno vo vremya ispolneniya zapro- shennoj im sistemnoj funkcii: process perehodit v rezhim yadra (kontekstnyj uroven' 1), ispolnyaya vnutrennee preryvanie operacionnoj sistemy, i priosta- navlivaetsya v ozhidanii resursov. Pri etom process pereklyuchaet kontekst, za- pominaya v steke svoj tekushchij kontekstnyj uroven' i ispolnyayas' dalee v ramkah sistemnogo kontekstnogo urovnya 2 (Risunok 6.29). Vypolnenie processov prios- tanavlivaetsya takzhe i v tom sluchae, kogda ono natalkivaetsya na otsutstvie stranicy v rezul'tate obrashcheniya k virtual'nym adresam, ne zagruzhennym fizi- cheski; processy ne budut vypolnyat'sya, poka yadro ne schitaet soderzhimoe stra- 170 nic. 6.6.1 Sobytiya, vyzyvayushchie priostanov vypolneniya, i ih adresa Kak uzhe govorilos' vo vtoroj glave, processy priostanavlivayutsya do nas- tupleniya opredelennogo sobytiya, posle kotorogo oni "probuzhdayutsya" i pereho- dyat v sostoyanie "gotovnosti k vypolneniyu" (s vygruzkoj i bez vygruzki iz pa- myati). Takogo roda abstraktnoe rassuzhdenie nedaleko ot istiny, ibo v konk- retnom voploshchenii sovokupnost' sobytij otobrazhaetsya na sovokupnost' virtu- al'nyh adresov (yadra). Adresa, s kotorymi svyazany sobytiya, zakodirovany v yadre, i ih edinstvennoe naznachenie sostoit v ih ispol'zovanii v proces- process a ---+ +--- ozhidanie zaversheniya ---+ | | vvoda-vyvoda | process b -++|----+ | ||| +---- adres A process c -|++-------- ozhidanie vydeleniya | +----++--- (osvobozhdeniya) bufera --+ process d --+ ||+--+| | |||+--+ process e --|---|+|| |+--|-+| process f --|+ +--|-- ozhidanie vydeleniya --------- adres B | +----|-(osvobozhdeniya) indeksa process g --|-+ | +|------+ process h -++--------- ozhidanie vvoda s ter- ------ adres C minala Risunok 6.30. Processy, priostanovlennye do nastupleniya soby- tij, i otobrazhenie sobytij na konkretnye adresa se otobrazheniya ozhidaemogo sobytiya na konkretnyj adres. Kak dlya abstraktnogo rassmotreniya, tak i dlya konkretnoj realizacii sobytiya bezrazlichno, skol'ko processov odnovremenno ozhidayut ego nastupleniya. Kak rezul'tat, vozmozhno voz- niknovenie nekotoryh protivorechij. Vo-pervyh, kogda sobytie nastupaet i pro- cessy, ozhidayushchie ego, sootvetstvuyushchim obrazom opoveshchayutsya ob etom, vse oni "probuzhdayutsya" i perehodyat v sostoyanie "gotovnosti k vypolneniyu". YAdro vyvo- dit processy iz sostoyaniya priostanova vse srazu, a ne po odnomu, nesmotrya na to, chto oni v principe mogut konkurirovat' za odnu i tu zhe zablokirovannuyu strukturu dannyh i bol'shinstvo iz nih cherez nebol'shoj promezhutok vremeni opyat' vernetsya v sostoyanie priostanova (bolee podrobno ob etom shla rech' v glavah 2 i 3). Na Risunke 6.30 izobrazheny neskol'ko processov, priostanov- lennyh do nastupleniya opredelennyh sobytij. Eshche odno protivorechie svyazano s tem, chto na odin i tot zhe adres mogut otobrazhat'sya neskol'ko sobytij. Na Risunke 6.30, naprimer, sobytiya "osvobozh- denie bufera" i "zavershenie vvoda-vyvoda" otobrazhayutsya na adres bufera ("ad- res A"). Kogda vvod-vyvod v bufer zavershaetsya, yadro vozobnovlyaet vypolnenie vseh processov, priostanovlennyh v ozhidanii nastupleniya kak togo, tak i dru- gogo sobytiya. Poskol'ku process, ozhidayushchij zaversheniya vvoda-vyvoda, uderzhi- vaet bufer zablokirovannym, drugie processy, kotorye zhdali osvobozhdeniya bu- fera, vnov' priostanovyatsya, ibo bufer vse eshche zanyat. Funkcionirovanie siste- my bylo by bolee effektivnym, esli by otobrazhenie sobytij na adresa bylo od- noznachnym. Odnako na praktike takogo roda protivorechie na proizvoditel'nosti sistemy ne otrazhaetsya, poskol'ku otobrazhenie na odin adres bolee odnogo so- bytiya imeet mesto dovol'no redko, a takzhe poskol'ku vypolnyayushchijsya process obychno osvobozhdaet zablokirovannye resursy do togo, kak nachnut vypolnyat'sya 171 drugie processy. Stilisticheski, tem ne menee, mehanizm funkcionirovaniya yadra stal by bolee ponyaten, esli by otobrazhenie bylo odnoznachnym. +------------------------------------------------------------+ | algoritm sleep | | vhodnaya informaciya: (1) adres priostanova | | (2) prioritet | | vyhodnaya informaciya: 1, esli process vozobnovlyaetsya po sig-| | nalu, kotoryj emu udalos' ulovit'; | | vyzov algoritma longjump, esli process| | vozobnovlyaetsya po signalu, kotoryj emu| | ne udalos' ulovit'; | | 0 - vo vseh ostal'nyh sluchayah; | | { | | podnyat' prioritet raboty processora takim obrazom, chtoby| | zablokirovat' vse preryvaniya; | | perevesti process v sostoyanie priostanova; | | vklyuchit' process v hesh-ochered' priostanovlennyh proces- | | sov, baziruyushchuyusya na adresah priostanova; | | sohranit' adres priostanova v tablice processov; | | sdelat' vvod dlya processa prioritetnym; | | esli (priostanov processa NE dopuskaet preryvanij) | | { | | vypolnit' pereklyuchenie konteksta; | | /* s etogo mesta process vozobnovlyaet vypolnenie, | | kogda "probuzhdaetsya" */ | | snizit' prioritet raboty processora tak, chtoby vnov' | | razreshit' preryvaniya (kak bylo do priostanova pro- | | cessa); | | vozvratit' (0); | | } | | | | /* priostanov processa prinimaet preryvaniya, vyzvannye | | signalami */ | | esli (k processu ne imeet otnosheniya ni odin iz signalov)| | { | | vypolnit' pereklyuchenie konteksta; | | /* s etogo mesta process vozobnovlyaet vypolnenie, | | kogda "probuzhdaetsya" */ | | esli (k processu ne imeet otnosheniya ni odin iz signa-| | lov) | | { | | vosstanovit' prioritet raboty processora takim, | | kakim on byl v moment priostanova processa; | | vozvratit' (0); | | } | | } | | udalit' process iz hesh-ocheredi priostanovlennyh proces- | | sov, esli on vse eshche nahoditsya tam; | | | | vosstanovit' prioritet raboty processora takim, kakim on| | byl v moment priostanova processa; | | esli (prioritet priostanovlennogo processa pozvolyaet | | prinimat' signaly) | | vozvratit' (1); | | zapustit' algoritm longjump; | | } | +------------------------------------------------------------+ Risunok 6.31. Algoritm priostanova processa 172 6.6.2 Algoritmy priostanova i vozobnovleniya vypolneniya Na Risunke 6.31 priveden algoritm priostanova processa. Snachala yadro po- vyshaet prioritet raboty processora tak, chtoby zablokirovat' vse preryvaniya, kotorye mogli by (putem sozdaniya konkurencii) pomeshat' rabote s ocheredyami priostanovlennyh processov, i zapominaet staryj prioritet, chtoby vosstano- vit' ego, kogda vypolnenie processa budet vozobnovleno. Process poluchaet po- metku "priostanovlennogo", adres priostanova i prioritet zapominayutsya v tab- lice processov, a process pomeshchaetsya v hesh-ochered' priostanovlennyh proces- sov. V prostejshem sluchae (kogda priostanov ne dopuskaet preryvanij) process vypolnyaet pereklyuchenie konteksta i blagopoluchno "zasypaet". Kogda priosta- novlennyj process "probuzhdaetsya", yadro nachinaet planirovat' ego zapusk: pro- cess vozvrashchaet sohranennyj v algoritme sleep kontekst, vosstanavlivaet sta- ryj prioritet raboty processora (kotoryj byl u nego do nachala vypolneniya al- goritma) i vozvrashchaet upravlenie yadru. +------------------------------------------------------------+ | algoritm wakeup /* vozobnovlenie priostanovlennogo pro- | | cessa */ | | vhodnaya informaciya: adres priostanova | | vyhodnaya informaciya: otsutstvuet | | { | | povysit' prioritet raboty processora takim obrazom, chto-| | by zablokirovat' vse preryvaniya; | | najti hesh-ochered' priostanovlennyh processov s ukazannym| | adresom priostanova; | | dlya (kazhdogo processa, priostanovlennogo po ukazannomu | | adresu) | | { | | udalit' process iz hesh-ocheredi; | | sdelat' pometku o tom, chto process nahoditsya v sosto-| | yanii "gotovnosti k zapusku"; | | vklyuchit' process v spisok processov, gotovyh k zapus-| | ku (dlya planirovshchika processov); | | ochistit' pole, soderzhashchee adres priostanova, v zapisi| | tablicy processov; | | esli (process ne zagruzhen v pamyat') | | vozobnovit' vypolnenie programmy podkachki (nule-| | voj process); | | v protivnom sluchae | | esli (vozobnovlyaemyj process bolee podhodit dlya is- | | polneniya, chem nyne vypolnyayushchijsya) | | ustanovit' sootvetstvuyushchij flag dlya planirovshchi- | | ka; | | } | | vosstanovit' pervonachal'nyj prioritet raboty processora;| | } | +------------------------------------------------------------+ Risunok 6.32. Algoritm vozobnovleniya priostanovlennogo processa CHtoby vozobnovit' vypolnenie priostanovlennyh processov, yadro obrashchaetsya k algoritmu wakeup (Risunok 6.32), prichem delaet eto kak vo vremya ispolneniya algoritmov realizacii standartnyh sistemnyh funkcij, tak i v sluchae obrabot- ki preryvanij. Algoritm iput, naprimer, osvobozhdaet zablokirovannyj indeks i 173 vozobnovlyaet vypolnenie vseh processov, ozhidayushchih snyatiya blokirovki. Tochno tak zhe i programma obrabotki preryvanij ot diska vozobnovlyaet vypolnenie processov, ozhidayushchih zaversheniya vvoda-vyvoda. V algoritme wakeup yadro snacha- la povyshaet prioritet raboty processora, chtoby zablokirovat' preryvaniya. Za- tem dlya kazhdogo processa, priostanovlennogo po ukazannomu adresu, vypolnyayut- sya sleduyushchie dejstviya: delaetsya pometka v pole, opisyvayushchem sostoyanie pro- cessa, o tom, chto process gotov k zapusku; process udalyaetsya iz spiska pri- ostanovlennyh processov i pomeshchaetsya v spisok processov, gotovyh k zapusku; pole v zapisi tablicy processov, soderzhashchee adres priostanova, ochishchaetsya. Esli vozobnovlyaemyj process ne zagruzhen v pamyat', yadro zapuskaet process podkachki, obespechivayushchij podkachku vozobnovlyaemogo processa v pamyat' (podra- zumevaetsya sistema, v kotoroj podkachka stranic po obrashcheniyu ne podderzhivaet- sya); v protivnom sluchae, esli vozobnovlyaemyj process bolee podhodit dlya is- polneniya, chem nyne vypolnyayushchijsya, yadro ustanavlivaet dlya planirovshchika speci- al'nyj flag, soobshchayushchij o tom, chto processu po vozvrashchenii v rezhim zadachi sleduet projti cherez algoritm planirovaniya (glava 8). Nakonec, yadro vossta- navlivaet pervonachal'nyj prioritet raboty processora. Pri etom na yadro ne okazyvaetsya nikakogo davleniya: "probuzhdenie" (wakeup) processa ne vyzyvaet ego nemedlennogo ispolneniya; blagodarya "probuzhdeniyu", process stanovitsya tol'ko dostupnym dlya zapuska. Vse, o chem govorilos' vyshe, kasaetsya prostejshego sluchaya vypolneniya algo- ritmov sleep i wakeup, poskol'ku predpolagaetsya, chto process priostanavliva- etsya do nastupleniya sootvetstvuyushchego sobytiya. Vo mnogih sluchayah processy priostanavlivayutsya v ozhidanii sobytij, kotorye "dolzhny" nastupit', naprimer, v ozhidanii osvobozhdeniya resursa (indeksov ili buferov) ili v ozhidanii zaver- sheniya vvoda-vyvoda, svyazannogo s diskom. Uverennost' processa v neminuemom vozobnovlenii osnovana na tom, chto podobnye resursy mogut byt' predostavleny tol'ko vo vremennoe pol'zovanie. Tem ne menee, inogda process mozhet priosta- novit'sya v ozhidanii sobytiya, ne buduchi uverennym v neizbezhnom nastuplenii poslednego, v takom sluchae u processa dolzhna byt' vozmozhnost' v lyubom sluchae vernut' sebe upravlenie i prodolzhit' vypolnenie. V podobnyh situaciyah yadro nemedlenno narushaet "son" priostanovlennogo processa, posylaya emu signal. Bolee podrobno o signalah my pogovorim v sleduyushchej glave; zdes' zhe primem dopushchenie, chto yadro mozhet (vyborochno) vozobnovlyat' priostanovlennye processy po signalu i chto process mozhet raspoznavat' poluchaemye signaly. Naprimer, esli process obratilsya k sistemnoj funkcii chteniya s terminala, yadro ne budet v sostoyanii vypolnit' zapros processa do teh por, poka pol'zo- vatel' ne vvedet dannye s klaviatury terminala (glava 10). Tem ne menee, pol'zovatel', zapustivshij process, mozhet ostavit' terminal na ves' den', pri etom process ostanetsya priostanovlennym v ozhidanii vvoda, a terminal mozhet ponadobit'sya drugomu pol'zovatelyu. Esli drugoj pol'zovatel' pribegnet k re- shitel'nym meram (takim kak vyklyuchenie terminala), yadro dolzhno imet' vozmozh- nost' vosstanovit' otklyuchennyj process: v kachestve pervogo shaga yadru sleduet vozobnovit' priostanovlennyj process po signalu. V tom, chto processy mogut priostanovit'sya na dlitel'noe vremya, net nichego plohogo. Priostanovlennyj process zanimaet poziciyu v tablice processov i mozhet poetomu udlinyat' vremya poiska (ozhidaniya) putem vypolneniya opredelennyh algoritmov, kotorye ne zani- mayut vremya central'nogo processora i poetomu vypolnyayutsya prakticheski neza- metno. CHtoby kak-to razlichat' mezhdu soboj sostoyaniya priostanova, yadro ustanav- livaet dlya priostanavlivaemogo processa (pri vhode v eto sostoyanie) priori- tet planirovaniya na osnovanii sootvetstvuyushchego parametra algoritma sleep. To est' yadro zapuskaet algoritm sleep s parametrom "prioritet", v kotorom otra- zhaetsya nalichie uverennosti v neizbezhnom nastuplenii ozhidaemogo sobytiya. Esli prioritet prevyshaet porogovoe znachenie, process ne budet prezhdevremenno vy- hodit' iz priostanova po poluchenii signala, a budet prodolzhat' ozhidat' nas- tupleniya sobytiya. Esli zhe znachenie prioriteta nizhe porogovogo, process budet nemedlenno vozobnovlen po poluchenii signala (****). 174 --------------------------------------- (****) Slovami "vyshe" i "nizhe" my zamenyaem terminy "vysokij prioritet" i "nizkij prioritet". Odnako na praktike prioritet mozhet izmeryat'sya chislami, bolee nizkie znacheniya kotoryh podrazumevayut bolee vysokij prioritet. Proverka togo, imeet li process uzhe signal pri vhode v algoritm sleep, pozvolyaet vyyasnit', priostanavlivalsya li process ranee. Naprimer, esli zna- chenie prioriteta v vyzove algoritma sleep prevyshaet porogovoe znachenie, pro- cess priostanavlivaetsya v ozhidanii vypolneniya algoritma wakeup. Esli zhe zna- chenie prioriteta nizhe porogovogo, vypolnenie processa ne priostanavlivaetsya, no na signal process reagiruet tochno tak zhe, kak esli by on byl priostanov- len. Esli yadro ne proverit nalichie signalov pered priostanovom, vozmozhna opasnost', chto signal bol'she ne postupit vnov' i v etom sluchae process ni- kogda ne vozobnovitsya. Kogda process "probuzhdaetsya" po signalu (ili kogda on ne perehodit v sostoyanie priostanova iz-za nalichiya signala), yadro mozhet vypolnit' algoritm longjump (v zavisimosti ot prichiny, po kotoroj process byl priostanovlen). S pomoshch'yu algoritma longjump yadro vosstanavlivaet ranee sohranennyj kontekst, esli net vozmozhnosti zavershit' vypolnyaemuyu sistemnuyu funkciyu. Naprimer, esli izza togo, chto pol'zovatel' otklyuchil terminal, bylo prervano chtenie dannyh s terminala, funkciya read ne budet zavershena, no vozvratit priznak oshibki. |to kasaetsya vseh sistemnyh funkcij, kotorye mogut byt' prervany vo vremya prios- tanova. Posle vyhoda iz priostanova process ne smozhet normal'no prodolzhat'- sya, poskol'ku ozhidaemoe sobytie ne nastupilo. Pered vypolneniem bol'shinstva sistemnyh funkcij yadro sohranyaet kontekst processa, ispol'zuya algoritm setjump i vyzyvaya tem samym neobhodimost' v posleduyushchem vypolnenii algoritma longjump. Vstrechayutsya situacii, kogda yadro trebuet, chtoby process vozobnovilsya po poluchenii signala, no ne vypolnyaet algoritm longjump. YAdro zapuskaet algo- ritm sleep so special'nym znacheniem parametra "prioritet", podavlyayushchim is- polnenie algoritma longjump i zastavlyayushchim algoritm sleep vozvrashchat' kod, ravnyj 1. Takaya mera bolee effektivna po sravneniyu s nemedlennym vypolneniem algoritma setjump pered vyzovom sleep i posleduyushchim vypolneniem algoritma longjump dlya vosstanovleniya pervonachal'nogo konteksta processa. Zadacha zak- lyuchaetsya v tom, chtoby pozvolit' yadru ochishchat' lokal'nye struktury dannyh. Drajver ustrojstva, naprimer, mozhet vydelit' svoi chastnye struktury dannyh i priostanovit'sya s prioritetom, dopuskayushchim preryvaniya; esli po signalu ego rabota vozobnovlyaetsya, on osvobozhdaet vydelennye struktury, a zatem vypolnya- et algoritm longjump, esli neobhodimo. Pol'zovatel' ne imeet vozmozhnosti prokontrolirovat', vypolnyaet li process algoritm longjump; vypolnenie etogo algoritma zavisit ot prichiny priostanovki processa, a takzhe ot togo, trebuyut li struktury dannyh yadra vneseniya izmenenij pered vyhodom iz sistemnoj funk- cii. 6.7 VYVODY My zavershili rassmotrenie konteksta processa. Processy v sisteme UNIX mogut nahodit'sya v razlichnyh logicheskih sostoyaniyah i perehodit' iz sostoyaniya v sostoyanie v sootvetstvii s ustanovlennymi pravilami perehoda, pri etom in- formaciya o sostoyanii sohranyaetsya v tablice processov i v adresnom prostrans- tve processa. Kontekst processa sostoit iz pol'zovatel'skogo konteksta i sistemnogo konteksta. Pol'zovatel'skij kontekst sostoit iz programm proces- sa, dannyh, steka zadachi i oblastej razdelyaemoj pamyati, a sistemnyj kontekst sostoit iz staticheskoj chasti (zapis' v tablice processov, adresnoe prostran- stvo processa i informaciya, neobhodimaya dlya otobrazheniya adresnogo prostrans- tva) i dinamicheskoj chasti (stek yadra i sohranennoe sostoyanie registrov pre- dydushchego kontekstnogo urovnya sistemy), kotorye zapominayutsya v steke i vybi- 175 rayutsya iz steka pri vypolnenii processom obrashchenij k sistemnym funkciyam, pri obrabotke preryvanij i pri pereklyucheniyah konteksta. Pol'zovatel'skij kon- tekst processa raspadaetsya na otdel'nye oblasti, kotorye predstavlyayut soboj nepreryvnye uchastki virtual'nogo adresnogo prostranstva i traktuyutsya kak sa- mostoyatel'nye ob®ekty ispol'zovaniya i zashchity. V modeli upravleniya pamyat'yu, kotoraya ispol'zovalas' pri opisanii formata virtual'nogo adresnogo prostran- stva processa, predpolagalos' nalichie u kazhdoj oblasti processa svoej tabli- cy stranic. YAdro raspolagaet celym naborom razlichnyh algoritmov dlya raboty s oblastyami. V zaklyuchitel'noj chasti glavy byli rassmotreny algoritmy priosta- nova (sleep) i vozobnovleniya (wakeup) processov. Struktury i algoritmy, opi- sannye v dannoj glave, budut ispol'zovat'sya v posleduyushchih glavah pri rass- motrenii sistemnyh funkcij upravleniya processami i planirovaniya ih vypolne- niya, a takzhe pri ob®yasnenii razlichnyh metodov raspredeleniya pamyati. 6.8 UPRAZHNENIYA 1. Sostav'te algoritm preobrazovaniya virtual'nyh adresov v fizicheskie, na vhode kotorogo zadayutsya virtual'nyj adres i adres tochki vhoda v chastnuyu tablicu oblastej. 2. V mashinah AT&T 3B2 i NSC serii 32000 ispol'zuetsya dvuhurovnevaya shema translyacii virtual'nyh adresov v fizicheskie (s segmentaciej). To est' v sisteme podderzhivaetsya ukazatel' na tablicu stranic, kazhdaya zapis' ko- toroj mozhet adresovat' fiksirovannuyu chast' adresnogo prostranstva pro- cessa po smeshcheniyu v tablice. Sravnite algoritm translyacii virtual'nyh adresov na etih mashinah s algoritmom, izlozhennym v tekste pri obsuzhde- nii modeli upravleniya pamyat'yu. Podumajte nad problemami proizvoditel'- nosti i potrebnosti v pamyati dlya razmeshcheniya vspomogatel'nyh tablic. 3. V arhitekture sistemy VAX-11 podderzhivayutsya dva nabora registrov zashchity pamyati, ispol'zuemyh mashinoj v processe translyacii pol'zovatel'skih ad- resov. Mehanizm translyacii ispol'zuetsya tot zhe, chto i v predydushchem pun- kte, za odnim isklyucheniem: ukazatelej na tablicu stranic zdes' dva. Es- li process raspolagaet tremya oblastyami - komand, dannyh i steka - to kakim obrazom, ispol'zuya dva nabora registrov, sleduet proizvodit' otobrazhenie oblastej na tablicy stranic ? Uvelichenie steka v arhitektu- re sistemy VAX-11 idet v napravlenii mladshih virtual'nyh adresov. Kakoj togda vid imela by oblast' steka ? V glave 11 budet rassmotrena oblast' razdelyaemoj pamyati: kak ona mozhet byt' realizovana v arhitekture siste- my VAX-11 ? 4. Sostav'te algoritm vydeleniya i osvobozhdeniya stranic pamyati i tablic stranic. Kakie struktury dannyh sleduet ispol'zovat', chtoby dostich' na- ivysshej proizvoditel'nosti ili naibol'shej prostoty realizacii algoritma? 5. Ustrojstvo upravleniya pamyat'yu MC68451 dlya semejstva mikroprocessorov Motorola 68000 dopuskaet vydelenie segmentov pamyati razmerom ot 256 bajt do 16 megabajt. Kazhdoe (fizicheskoe) ustrojstvo upravleniya pamyat'yu podderzhivaet 32 deskriptora segmentov. Opishite effektivnyj metod vyde- leniya pamyati dlya etogo sluchaya. Kakim obrazom osushchestvlyalas' by realiza- ciya oblastej ? 6. Rassmotrim otobrazhenie virtual'nyh adresov, predstavlennoe na Risunke 6.5. Predpolozhim, chto yadro vygruzhaet process (v sisteme s podkachkoj processov) ili otkachivaet v oblast' steka bol'shoe kolichestvo stranic (v sisteme s zameshcheniem stranic). Esli cherez kakoe-to vremya process obra- titsya k virtual'nomu adresu 68432, budet li on dolzhen obratit'sya k so- otvetstvuyushchej yachejke fizicheskoj pamyati, iz kotoroj on schityval dannye do togo, kak byla vypolnena operaciya vygruzki (otkachki) ? Esli nizhnie urovni sistemy upravleniya pamyat'yu realizuyutsya s ispol'zovaniem tablicy stranic, sleduet li eti tablicy raspolagat' v teh zhe, chto i sami stra- nicy, mestah fizicheskoj pamyati ? *7. Mozhno realizovat' sistemu, v kotoroj stek yadra raspolagaetsya nad vershi- 176 noj steka zadachi. Podumajte o dostoinstvah i nedostatkah podobnoj sis- temy. 8. Kakim obrazom, prisoedinyaya oblast' k processu, yadro mozhet proverit' to, chto eta oblast' ne nakladyvaetsya na virtual'nye adresa oblastej, uzhe prisoedinennyh k processu ? 9. Obratimsya k algoritmu pereklyucheniya konteksta. Dopustim, chto v sisteme gotov k vypolneniyu tol'ko odin process. Drugimi slovami, yadro vybiraet dlya vypolneniya process s tol'ko chto sohranennym kontekstom. Ob®yasnite, chto proizojdet pri etom. 10. Predpolozhim, chto process priostanovilsya, no v sisteme net processov, gotovyh k vypolneniyu. CHto proizojdet, kogda priostanovivshijsya process pereklyuchit kontekst ? 11. Predpolozhim, chto process, vypolnyaemyj v rezhime zadachi, izrashodoval vy- delennyj emu kvant vremeni i v rezul'tate preryvaniya po tajmeru yadro vybiraet dlya vypolneniya novyj process. Ob®yasnite, pochemu pereklyuchenie konteksta proizojdet na sistemnom kontekstnom urovne 2. 12. V sisteme s zameshcheniem stranic process, vypolnyaemyj v rezhime zadachi, mozhet stolknut'sya s otsutstviem nuzhnoj stranicy, kotoraya ne byla zagru- zhena v pamyat'. V hode obrabotki preryvaniya yadro schityvaet stranicu iz oblasti podkachki i priostanavlivaetsya. Ob®yasnite, pochemu pereklyuchenie konteksta (v moment priostanova) proizojdet na sistemnom kontekstnom urovne 2. 13. Process ispol'zuet sistemnuyu funkciyu read s formatom vyzova read(fd,buf,1024); v sisteme s zameshcheniem stranic pamyati. Predpolozhim, chto yadro ispolnyaet algoritm read dlya schityvaniya dannyh v sistemnyj bufer, odnako pri po- pytke kopirovaniya dannyh v adresnoe prostranstvo zadachi stalkivaetsya s otsutstviem nuzhnoj stranicy, soderzhashchej strukturu buf, vsledstvie togo, chto ona byla ranee vygruzhena iz pamyati. YAdro obrabatyvaet voznikshee preryvanie, schityvaya otsutstvuyushchuyu stranicu v pamyat'. CHto proishodit na kazhdom iz sistemnyh kontekstnyh urovnej ? CHto proizojdet, esli program- ma obrabotki preryvaniya priostanovitsya v ozhidanii zaversheniya schityvaniya stranicy ? 14. CHto proizoshlo by, esli by vo vremya kopirovaniya dannyh iz adresnogo prostranstva zadachi v pamyat' yadra (Risunok 6.17) obnaruzhilos', chto uka- zannyj pol'zovatelem adres neveren ? *15. Pri vypolnenii algoritmov sleep i wakeup yadro povyshaet prioritet raboty processora tak, chtoby ne dopustit' preryvanij, prepyatstvuyushchih ej. Kakie otricatel'nye posledstviya mogli by vozniknut', esli by yadro ne predpri- nimalo etih dejstvij ? (Namek: yadro zachastuyu vozobnovlyaet priostanov- lennye processy pryamo iz programm obrabotki preryvanij). *16. Predpolozhim, chto process pytaetsya priostanovit'sya do nastupleniya soby- tiya A, no, zapuskaya algoritm sleep, eshche ne zablokiroval preryvaniya; do- pustim, chto v etot moment proishodit preryvanie i programma ego obra- botki pytaetsya vozobnovit' vse processy, priostanovlennye do nastuple- niya sobytiya A. CHto sluchitsya s pervym processom ? Ne predstavlyaet li eta situaciya opasnost' ? Esli da, to mozhet li yadro izbezhat' ee vozniknove- niya ? 17. CHto proizojdet, esli yadro zapustit algoritm wakeup dlya vseh processov, priostanovlennyh po adresu A, v to vremya, kogda po etomu adresu ne oka- zhetsya ni odnogo priostanovlennogo processa ? 18. Po odnomu adresu mozhet priostanovit'sya mnozhestvo processov, no yadru mo- zhet potrebovat'sya vozobnovlenie tol'ko nekotoryh iz nih - teh, kotorym budet poslan sootvetstvuyushchij signal. S pomoshch'yu mehanizma posylki signa- lov mozhno identificirovat' otdel'nye processy. Podumajte, kakie izmene- niya sleduet proizvesti v algoritme wakeup dlya togo, chtoby mozhno bylo vozobnovlyat' vypolnenie tol'ko odnogo processa, a ne vseh processov, priostanovlennyh po zadannomu adresu. 19. Obrashcheniya k algoritmam sleep i wakeup v sisteme Multics 177 imeyut sleduyushchij sintaksis: sleep (sobytie); wakeup (sobytie, prioritet); Takim obrazom, v algoritme wakeup vozobnovlyaemomu processu prisvaivaet- sya prioritet. Sravnite formu vyzova etih algoritmov s formoj vyzova so- 178