GLAVA 6. STRUKTURA PROCESSOV V glave 2 byli sformulirovany harakteristiki processov. V nastoyashchej gla- ve na bolee formal'nom urovne opredelyaetsya ponyatie "kontekst processa" i po- kazyvaetsya, kakim obrazom yadro identificiruet process i opredelyaet ego mes- tonahozhdenie. V razdele 6.1 opisany model' sostoyanij processov dlya sistemy UNIX i posledovatel'nost' vozmozhnyh perehodov iz sostoyaniya v sostoyanie. V yadre nahoditsya tablica processov, kazhdaya zapis' kotoroj opisyvaet sostoyanie odnogo iz aktivnyh processov v sisteme. V prostranstve processa hranitsya do- polnitel'naya informaciya, ispol'zuemaya v upravlenii protekaniem processa. Za- pis' v tablice processov i prostranstvo processa sostavlyayut v sovokupnosti kontekst processa. Aspektom konteksta processa, naibolee yavno otlichayushchim dannyj kontekst ot konteksta drugogo processa, bez somneniya yavlyaetsya soder- zhimoe adresnogo prostranstva processa. V razdele 6.2 opisyvayutsya principy upravleniya raspredeleniem pamyati dlya processov i yadra, a takzhe vzaimodejst- vie operacionnoj sistemy s apparatnymi sredstvami pri translyacii virtual'nyh adresov v fizicheskie. Razdel 6.3 posvyashchen rassmotreniyu sostavnyh elementov konteksta processa, a takzhe opisaniyu algoritmov upravleniya kontekstom pro- cessa. Razdel 6.4 demonstriruet, kakim obrazom osushchestvlyaetsya sohranenie konteksta processa yadrom v sluchae preryvaniya, vyzova sistemnoj funkcii ili pereklyucheniya konteksta, a takzhe kakim obrazom vozobnovlyaetsya vypolnenie pri- ostanovlennogo processa. V razdele 6.5 privodyatsya razlichnye algoritmy, is- pol'zuemye v teh sistemnyh funkciyah, kotorye rabotayut s adresnym prostranst- vom processa i kotorye budut rassmotreny v sleduyushchej glave. I, nakonec, v razdele 6.6 rassmatrivayutsya algoritmy priostanova i vozobnovleniya vypolneniya processov. 6.1 SOSTOYANIYA PROCESSA I PEREHODY MEZHDU NIMI Kak uzhe otmechalos' v glave 2, vremya zhizni processa mozhno teoreticheski razbit' na neskol'ko sostoyanij, opisyvayushchih process. Polnyj nabor sostoyanij processa soderzhitsya v sleduyushchem perechne: 1. Process vypolnyaetsya v rezhime zadachi. 2. Process vypolnyaetsya v rezhime yadra. 3. Process ne vypolnyaetsya, no gotov k zapusku pod upravleniem yadra. 4. Process priostanovlen i nahoditsya v operativnoj pamyati. 5. Process gotov k zapusku, no programma podkachki (nulevoj process) dolzhna eshche zagruzit' process v operativnuyu pamyat', prezhde chem on budet zapushchen pod upravleniem yadra. |to sostoyanie budet predmetom obsuzhdeniya v glave 9 pri rassmotrenii sistemy podkachki. 6. Process priostanovlen i programma podkachki vygruzila ego vo vneshnyuyu pa- myat', chtoby v operativnoj pamyati osvobodit' mesto dlya drugih processov. 7. Process vozvrashchen iz privilegirovannogo rezhima (rezhima yadra) v neprivi- legirovannyj (rezhim zadachi), yadro rezerviruet ego i pereklyuchaet kontekst na drugoj process. Ob otlichii etogo sostoyaniya ot sostoyaniya 3 (gotovnost' k zapusku) pojdet rech' nizhe. 8. Process vnov' sozdan i nahoditsya v perehodnom sostoyanii; process sushchest- vuet, no ne gotov k vypolneniyu, hotya i ne priostanovlen. |to sostoyanie yavlyaetsya nachal'nym sostoyaniem vseh processov, krome nulevogo. 9. Process vyzyvaet sistemnuyu funkciyu exit i prekrashchaet sushchestvovanie. Od- nako, posle nego ostalas' zapis', soderzhashchaya kod vyhoda, i nekotoraya hronometricheskaya statistika, sobiraemaya roditel'skim processom. |to sos- 137 toyanie yavlyaetsya poslednim sostoyaniem processa. Risunok 6.1 predstavlyaet soboj polnuyu diagrammu perehodov processa iz sostoyaniya v sostoyanie. Rassmotrim s pomoshch'yu modeli perehodov ti- pichnoe povedenie processa. Situacii, kotorye budut obsuzhdat'sya, neskol'ko iskusstvenny i processy ne vsegda imeyut delo s nimi, no eti situacii vpolne Vypolnyaetsya v rezhime zadachi +-------+ | 1 | Vyzov funk- | | cii, prery- ++------+ vanie | ^ ^ Prery- +-----+ +-------+ | | vanie, | | | +-------+ +---+ Vozvrat v vozvrat| | | | Vozvrat | rezhim zadachi iz pre-| | | | | ryva-| v v | Vypolnyaet- | +-------+ niya | +------++sya v rezhi- ++------+ | | +-->| |me yadra | | | 9 |<-----------+ 2 +------------>| 7 | | | Vyhod | | Rezerviruet-| | +-------+ ++------+ sya +-------+ Prekrashchenie | ^ - Zarezer- sushchestvovaniya | | - virovan +---------------+ +------+ -------- | Priostanov Zapusk | - v | - Pri-+-------+ +-+-----+ Gotov k os- | | Vozobnovlenie | | zapusku ta- | 4 +----------------------->| 3 | v pamyati nov-| | | | len +---+---+ ++------+ v pa- | | ^ ^ myati | | | | Dostatochno | | | | pamyati | | | +---+ | Vy- Vy- | | | | gruzka gruzka | | | Sozdan | | |Za- ++------+ | | |gruz-| | fork | | |ka | 8 |<----- | | | ++------+ | | | | Nedosta- | | | +---+ tochno | | | | pamyati | | | | (tol'ko sistema | | | | podkachki) v v | v +-------+ +---+---+ | | Vozobnovlenie | | | 6 +----------------------->| 5 | +-------+ +-------+ Priostanovlen, Gotov k zapusku, vygruzhen vygruzhen Risunok 6.1. Diagramma perehodov processa iz sostoyaniya v sos- toyanie 138 primenimy dlya illyustracii razlichnyh perehodov. Nachal'nym sostoyaniem modeli yavlyaetsya sozdanie processa roditel'skim processom s pomoshch'yu sistemnoj funk- cii fork; iz etogo sostoyaniya process neminuemo perehodit v sostoyanie gotov- nosti k zapusku (3 ili 5). Dlya prostoty predpolozhim, chto process pereshel v sostoyanie "gotovnosti k zapusku v pamyati" (3). Planirovshchik processov v ko- nechnom schete vyberet process dlya vypolneniya i process perejdet v sostoyanie "vypolneniya v rezhime yadra", gde doigraet do konca rol', otvedennuyu emu funk- ciej fork. Posle vsego etogo process mozhet perejti v sostoyanie "vypolneniya v rezhime zadachi". Po prohozhdenii opredelennogo perioda vremeni mozhet proizojti prery- vanie raboty processora po tajmeru i process snova perejdet v sostoyanie "vy- polneniya v rezhime yadra". Kak tol'ko programma obrabotki preryvaniya zakonchit rabotu, yadru mozhet ponadobit'sya podgotovit' k zapusku drugoj process, poeto- mu pervyj process perejdet v sostoyanie "rezervirovaniya", ustupiv dorogu vto- romu processu. Sostoyanie "rezervirovaniya" v dejstvitel'nosti ne otlichaetsya ot sostoyaniya "gotovnosti k zapusku v pamyati" (punktirnaya liniya na risunke, soedinyayushchaya mezhdu soboj oba sostoyaniya, podcherkivaet ih ekvivalentnost'), no oni vydelyayutsya v otdel'nye sostoyaniya, chtoby podcherknut', chto process, vypol- nyayushchijsya v rezhime yadra, mozhet byt' zarezervirovan tol'ko v tom sluchae, esli on sobiraetsya vernut'sya v rezhim zadachi. Sledovatel'no, yadro mozhet pri neob- hodimosti podkachivat' process iz sostoyaniya "rezervirovaniya". Pri izvestnyh usloviyah planirovshchik vyberet process dlya ispolneniya i tot snova vernetsya v sostoyanie "vypolneniya v rezhime zadachi". Kogda process vypolnyaet vyzov sistemnoj funkcii, on iz sostoyaniya "vypol- neniya v rezhime zadachi" perehodit v sostoyanie "vypolneniya v rezhime yadra". Predpolozhim, chto sistemnoj funkcii trebuetsya vvod-vyvod s diska i poetomu process vynuzhden dozhidat'sya zaversheniya vvoda-vyvoda. On perehodit v sostoya- nie "priostanova v pamyati", v kotorom budet nahodit'sya do teh por, poka ne poluchit izveshcheniya ob okonchanii vvoda-vyvoda. Kogda vvod-vyvod zavershitsya, proizojdet apparatnoe preryvanie raboty central'nogo processora i programma obrabotki preryvaniya vozobnovit vypolnenie processa, v rezul'tate chego on perejdet v sostoyanie "gotovnosti k zapusku v pamyati". Predpolozhim, chto sistema vypolnyaet mnozhestvo processov, kotorye odnovre- menno nikak ne mogut pomestit'sya v operativnoj pamyati, i programma podkachki (nulevoj process) vygruzhaet odin process, chtoby osvobodit' mesto dlya drugogo processa, nahodyashchegosya v sostoyanii "gotov k zapusku, no vygruzhen". Pervyj process, vygruzhennyj iz operativnoj pamyati, perehodit v to zhe sostoyanie. Kogda programma podkachki vybiraet naibolee podhodyashchij process dlya zagruzki v operativnuyu pamyat', etot process perehodit v sostoyanie "gotovnosti k zapusku v pamyati". Planirovshchik vybiraet process dlya ispolneniya i on perehodit v sos- toyanie "vypolneniya v rezhime yadra". Kogda process zavershaetsya, on ispolnyaet sistemnuyu funkciyu exit, posledovatel'no perehodya v sostoyaniya "vypolneniya v rezhime yadra" i, nakonec, v sostoyanie "prekrashcheniya sushchestvovaniya". Process mozhet upravlyat' nekotorymi iz perehodov na urovne zadachi. Vo-pervyh, odin process mozhet sozdat' drugoj process. Tem ne menee, v kakoe iz sostoyanij process perejdet posle sozdaniya (t.e. v sostoyanie "gotov k vy- polneniyu, nahodyas' v pamyati" ili v sostoyanie "gotov k vypolneniyu, no vygru- zhen") zavisit uzhe ot yadra. Processu eti sostoyaniya ne podkontrol'ny. Vo-vto- ryh, process mozhet obratit'sya k razlichnym sistemnym funkciyam, chtoby perejti iz sostoyaniya "vypolneniya v rezhime zadachi" v sostoyanie "vypolneniya v rezhime yadra", a takzhe perejti v rezhim yadra po svoej sobstvennoj vole. Tem ne menee, moment vozvrashcheniya iz rezhima yadra ot processa uzhe ne zavisit; v rezul'tate kakih-to sobytij on mozhet nikogda ne vernut'sya iz etogo rezhima i iz nego pe- rejdet v sostoyanie "prekrashcheniya sushchestvovaniya" (sm. razdel 7.2, gde govorit- sya o signalah). Nakonec, process mozhet zavershit'sya s pomoshch'yu funkcii exit po svoej sobstvennoj vole, no kak ukazyvalos' ranee, vneshnie sobytiya mogut pot- rebovat' zaversheniya processa bez yavnogo obrashcheniya k funkcii exit. Vse os- 139 tal'nye perehody otnosyatsya k zhestko zakreplennoj chasti modeli, zakodirovan- noj v yadre, i yavlyayutsya rezul'tatom opredelennyh sobytij, reagiruya na nih v sootvetstvii s pravilami, sformulirovannymi v etoj i posleduyushchih glavah. Ne- kotorye iz pravil uzhe upominalis': naprimer, to, chto process mozhet vygruzit' drugoj process, vypolnyayushchijsya v yadre. Dve prinadlezhashchie yadru struktury dannyh opisyvayut process: zapis' v tab- lice processov i prostranstvo processa. Tablica processov soderzhit polya, ko- torye dolzhny byt' vsegda dostupny yadru, a prostranstvo processa - polya, ne- obhodimost' v kotoryh voznikaet tol'ko u vypolnyayushchegosya processa. Poetomu yadro vydelyaet mesto dlya prostranstva processa tol'ko pri sozdanii processa: v nem net neobhodimosti, esli zapisi v tablice processov ne sootvetstvuet konkretnyj process. Zapis' v tablice processov sostoit iz sleduyushchih polej: * Pole sostoyaniya, kotoroe identificiruet sostoyanie processa. * Polya, ispol'zuemye yadrom pri razmeshchenii processa i ego prostranstva v osnovnoj ili vneshnej pamyati. YAdro ispol'zuet informaciyu etih polej dlya pereklyucheniya konteksta na process, kogda process perehodit iz sostoyaniya "gotov k vypolneniyu, nahodyas' v pamyati" v sostoyanie "vypolneniya v rezhime yadra" ili iz sostoyaniya "rezervirovaniya" v sostoyanie "vypolneniya v rezhime zadachi". Krome togo, yadro ispol'zuet etu informaciyu pri perekachki pro- cessov iz i v operativnuyu pamyat' (mezhdu dvumya sostoyaniyami "v pamyati" i dvumya sostoyaniyami "vygruzhen"). Zapis' v tablice processov soderzhit takzhe pole, opisyvayushchee razmer processa i pozvolyayushchee yadru planirovat' vydele- nie prostranstva dlya processa. * Neskol'ko pol'zovatel'skih identifikatorov (UID), ustanavlivayushchih raz- lichnye privilegii processa. Polya UID, naprimer, opisyvayut sovokupnost' processov, mogushchih obmenivat'sya signalami (sm. sleduyushchuyu glavu). * Identifikatory processa (PID), ukazyvayushchie vzaimosvyaz' mezhdu processami. Znacheniya polej PID zadayutsya pri perehode processa v sostoyanie "sozdan" vo vremya vypolneniya funkcii fork. * Deskriptor sobytiya (ustanavlivaetsya togda, kogda process priostanovlen). V dannoj glave budet rassmotreno ispol'zovanie deskriptora sobytiya v al- goritmah funkcij sleep i wakeup. * Parametry planirovaniya, pozvolyayushchie yadru ustanavlivat' poryadok perehoda processov iz sostoyaniya "vypolneniya v rezhime yadra" v sostoyanie "vypolne- niya v rezhime zadachi". * Pole signalov, v kotorom perechislyayutsya signaly, poslannye processu, no eshche ne obrabotannye (razdel 7.2). * Razlichnye tajmery, opisyvayushchie vremya vypolneniya processa i ispol'zovanie resursov yadra i pozvolyayushchie osushchestvlyat' slezhenie za vypolneniem i vy- chislyat' prioritet planirovaniya processa. Odno iz polej yavlyaetsya tajme- rom, kotoryj ustanavlivaet pol'zovatel' i kotoryj neobhodim dlya posylki processu signala trevogi (razdel 8.3). Prostranstvo processa soderzhit polya, dopolnitel'no harakterizuyushchie sostoyaniya processa. V predydushchih glavah byli rassmotreny poslednie sem' iz privodimyh nizhe polej prost- ranstva processa, kotorye my dlya polnoty vnov' kratko perechislim: * Ukazatel' na tablicu processov, kotoryj identificiruet zapis', sootvets- tvuyushchuyu processu. * Pol'zovatel'skie identifikatory, ustanavlivayushchie razlichnye privilegii processa, v chastnosti, prava dostupa k fajlu (sm. razdel 7.6). * Polya tajmerov, hranyashchie vremya vypolneniya processa (i ego potomkov) v re- zhime zadachi i v rezhime yadra. * Vektor, opisyvayushchij reakciyu processa na signaly. * Pole operatorskogo terminala, identificiruyushchee "registracionnyj termi- nal", kotoryj svyazan s processom. * Pole oshibok, v kotoroe zapisyvayutsya oshibki, imevshie mesto pri vypolnenii sistemnoj funkcii. * Pole vozvrashchennogo znacheniya, hranyashchee rezul'tat vypolneniya sistemnoj funkcii. 140 * Parametry vvoda-vyvoda: ob®em peredavaemyh dannyh, adres istochnika (ili priemnika) dannyh v prostranstve zadachi, smeshcheniya v fajle (kotorymi pol'zuyutsya operacii vvoda-vyvoda) i t.d. * Imena tekushchego kataloga i tekushchego kornya, opisyvayushchie fajlovuyu sistemu, v kotoroj vypolnyaetsya process. * Tablica pol'zovatel'skih deskriptorov fajla, kotoraya opisyvaet fajly, otkrytye processom. * Polya granic, nakladyvayushchie ogranicheniya na razmernye harakteristiki pro- cessa i na razmer fajla, v kotoryj process mozhet vesti zapis'. * Pole prav dostupa, hranyashchee dvoichnuyu masku ustanovok prav dostupa k faj- lam, kotorye sozdayutsya processom. Prostranstvo sostoyanij processa i pe- rehodov mezhdu nimi rassmatrivalos' v dannom razdele na logicheskom urov- ne. Kazhdoe sostoyanie imeet takzhe fizicheskie harakteristiki, upravlyaemye yadrom, v chastnosti, virtual'noe adresnoe prostranstvo processa. Sleduyu- shchij razdel posvyashchen opisaniyu modeli raspredeleniya pamyati; v ostal'nyh razdelah sostoyaniya processa i perehody mezhdu nimi rassmatrivayutsya na fi- zicheskom urovne, osoboe vnimanie pri etom udelyaetsya sostoyaniyam "vypolne- niya v rezhime zadachi", "vypolneniya v rezhime yadra", "rezervirovaniya" i "priostanova (v pamyati)". V sleduyushchej glave zatragivayutsya sostoyaniya "sozdaniya" i "prekrashcheniya sushchestvovaniya", a v glave 8 - sostoyanie "go- tovnosti k zapusku v pamyati". V glave 9 obsuzhdayutsya dva sostoyaniya vygru- zhennogo processa i organizaciya podkachki po obrashcheniyu. 6.2 FORMAT PAMYATI SISTEMY Predpolozhim, chto fizicheskaya pamyat' mashiny imeet adresa, nachinaya s 0 i konchaya adresom, ravnym ob®emu pamyati v bajtah. Kak uzhe otmechalos' v glave 2, process v sisteme UNIX sostoit iz treh logicheskih sekcij: komand, dannyh i steka. (Obshchuyu pamyat', kotoraya rassmatrivaetsya v glave 11, mozhno schitat' v dannom kontekste chast'yu sekcii dannyh). V sekcii komand hranitsya nabor ma- shinnyh instrukcij, ispolnyaemyh pod upravleniem processa; adresami v sekcii komand vystupayut adresa komand (dlya komand perehoda i obrashchenij k podprog- rammam), adresa dannyh (dlya obrashcheniya k global'nym peremennym) i adresa ste- ka (dlya obrashcheniya k strukturam dannyh, kotorye lokalizovany v podprogram- mah). Esli adresa v sgenerirovannom kode traktovat' kak adresa v fizicheskoj pamyati, dva processa ne smogut parallel'no vypolnyat'sya, esli ih adresa pe- rekryvayutsya. Kompilyator mog by generirovat' adresa, neperesekayushchiesya u raz- nyh programm, no na universal'nyh |VM takoj poryadok ne praktikuetsya, pos- kol'ku ob®em pamyati mashiny ogranichen, a kolichestvo transliruemyh programmy neogranicheno. Dazhe esli dlya togo, chtoby izbezhat' izlishnego peresecheniya adre- sov v processe ih generacii, mashina budet ispol'zovat' nekotoryj nabor ev- risticheskih procedur, podobnaya realizaciya ne budet dostatochno gibkoj i ne smozhet udovletvoryat' pred®yavlyaemym k nej trebovaniyam. Poetomu kompilyator generiruet adresa dlya virtual'nogo adresnogo prost- ranstva zadannogo diapazona, a ustrojstvo upravleniya pamyat'yu, nazyvaemoe dispetcherom pamyati, transliruet virtual'nye adresa, sgenerirovannye kompilya- torom, v adresa yacheek, raspolozhennyh v fizicheskoj pamyati. Kompilyatoru net neobhodimosti znat', v kakoe mesto v pamyati yadro potom zagruzit vypolnyaemuyu programmu. Na samom dele, v pamyati odnovremenno mogut sushchestvovat' neskol'ko kopij programmy: vse oni mogut vypolnyat'sya, ispol'zuya odni i te zhe virtual'- nye adresa, fakticheski zhe ssylayas' na raznye fizicheskie yachejki. Te podsiste- my yadra i apparatnye sredstva, kotorye sotrudnichayut v translyacii virtual'nyh adresov v fizicheskie, obrazuyut podsistemu upravleniya pamyat'yu. 6.2.1 Oblasti YAdro v versii V delit virtual'noe adresnoe prostranstvo processa na so- 141 vokupnost' logicheskih oblastej. Oblast' - eto nepreryvnaya zona virtual'nogo adresnogo prostranstva processa, rassmatrivaemaya v kachestve otdel'nogo ob®- ekta dlya sovmestnogo ispol'zovaniya i zashchity. Takim obrazom, komandy, dannye i stek obychno obrazuyut avtonomnye oblasti, prinadlezhashchie processu. Neskol'ko processov mogut ispol'zovat' odnu i tu zhe oblast'. Naprimer, esli neskol'ko processov vypolnyayut odnu i tu zhe programmu, vpolne estestvenno, chto oni is- pol'zuyut odnu i tu zhe oblast' komand. Tochno tak zhe, neskol'ko processov mo- gut ob®edinit'sya i ispol'zovat' obshchuyu oblast' razdelyaemoj pamyati. YAdro podderzhivaet tablicu oblastej i vydelyaet zapis' v tablice dlya kazh- doj aktivnoj oblasti v sisteme. V razdele 6.5 opisyvayutsya polya tablicy ob- lastej i operacii nad oblastyami bolee podrobno, no na dannyj moment predpo- lozhim, chto tablica oblastej soderzhit informaciyu, pozvolyayushchuyu opredelit' mes- topolozhenie oblasti v fizicheskoj pamyati. Kazhdyj process imeet chastnuyu tabli- cu oblastej processa. Zapisi etoj tablicy mogut raspolagat'sya, v zavisimosti ot konkretnoj realizacii, v tablice processov, v adresnom prostranstve pro- cessa ili v otdel'noj oblasti pamyati; dlya prostoty predpolozhim, chto oni yav- lyayutsya chast'yu tablicy processov. Kazhdaya zapis' chastnoj tablicy oblastej so- derzhit ukazatel' na sootvetstvuyushchuyu zapis' obshchej tablicy oblastej i pervyj virtual'nyj adres processa v dannoj oblasti. Razdelyaemye oblasti mogut imet' raznye virtual'nye adresa v kazhdom processe. Zapis' chastnoj tablicy oblastej takzhe soderzhit pole prav dostupa, v kotorom ukazyvaetsya tip dostupa, razre- shennyj processu: tol'ko chtenie, tol'ko zapis' ili tol'ko ispolnenie. CHastnaya tablica oblastej i struktura oblasti analogichny tablice fajlov i strukture indeksa v fajlovoj sisteme: neskol'ko processov mogut sovmestno ispol'zovat' adresnoe prostranstvo cherez oblast', podobno tomu, kak oni razdelyayut dostup k fajlu s pomoshch'yu indeksa; kazhdyj process imeet dostup k oblasti blagodarya ispol'zovaniyu zapisi v chastnoj tablice oblastej, tochno tak zhe on obrashchaetsya k indeksu, ispol'zuya sootvetstvuyushchie zapisi v tablice pol'zovatel'skih desk- riptorov fajla i v tablice fajlov, prinadlezhashchej yadru. Na Risunke 6.2 izobrazheny dva processa, A i B, pokazany ih oblasti, chas- tnye tablicy oblastej i virtual'nye adresa, v kotoryh eti oblasti soedinyayut- sya. Processy razdelyayut oblast' komand 'a' s virtual'nymi adresami 8K i 4K sootvetstvenno. Esli process A chitaet yachejku pamyati s adresom 8K, a process CHastnye tablicy oblastej Oblasti processa (Virtual'nye adresa) +--------+ Koman-+--------------+ | | dy | 8K +-----+ +-->| b | Process Dan-+--------------+ | | | | A nye | 16K +-----|---+ +--------+ +--------+ +--------------+ | | | Stek | 32K +-----|-------------------->| c | +--------------+ | +--------+ | | +------>| | +--------+ | a | Koman-+--------------+ +------>| | dy | 4K +-----+ +--------+ +--------+ Process Dan-+--------------+ | | B nye | 8K +-------------------------->| e | +--------------+ +--------+ | | Stek | 32K +-----+ | | +--------+ +--------------+ +------>| d | | | +--------+ Risunok 6.2. Processy i oblasti 142 B chitaet yachejku s adresom 4K, to oni chitayut odnu i tu zhe yachejku v oblasti 'a'. Oblast' dannyh i oblast' steka u kazhdogo processa svoi. Oblast' yavlyaetsya ponyatiem, ne zavisyashchim ot sposoba realizacii upravleniya pamyat'yu v operacionnoj sisteme. Upravlenie pamyat'yu predstavlyaet soboj sovo- kupnost' dejstvij, vypolnyaemyh yadrom s cel'yu povysheniya effektivnosti sovmes- tnogo ispol'zovaniya operativnoj pamyati processami. Primerami sposobov uprav- leniya pamyat'yu mogut sluzhit' rassmatrivaemye v glave 9 zameshchenie stranic pa- myati i podkachka po obrashcheniyu. Ponyatie oblasti takzhe ne zavisit i ot sobst- venno raspredeleniya pamyati: naprimer, ot togo, delitsya li pamyat' na stranicy ili na segmenty. S tem, chtoby zalozhit' fundament dlya perehoda k opisaniyu al- goritmov podkachki po obrashcheniyu (glava 9), vse privodimye zdes' rassuzhdeniya otnosyatsya, v pervuyu ochered', k organizacii pamyati, baziruyushchejsya na strani- cah, odnako eto ne predpolagaet, chto sistema upravleniya pamyat'yu osnovyvaetsya na ukazannyh algoritmah. 6.2.2 Stranicy i tablicy stranic V etom razdele opisyvaetsya model' organizacii pamyati, kotoroj my budem pol'zovat'sya na protyazhenii vsej knigi, no kotoraya ne yavlyaetsya osobennost'yu sistemy UNIX. V organizacii pamyati, baziruyushchejsya na stranicah, fizicheskaya pamyat' razdelyaetsya na bloki odinakovogo razmera, nazyvaemye stranicami. Obychnyj razmer stranic sostavlyaet ot 512 bajt do 4 Kbajt i opredelyaetsya kon- figuraciej tehnicheskih sredstv. Kazhdaya adresuemaya yachejka pamyati soderzhitsya v nekotoroj stranice i, sledovatel'no, kazhdaya yachejka pamyati mozhet adresovat'sya paroj (nomer stranicy, smeshchenie vnutri stranicy v bajtah). Naprimer, esli ob®em mashinnoj pamyati sostavlyaet 2 v 32-j stepeni bajt, a razmer stranicy 1 Kbajt, obshchee chislo stranic - 2 v 22-j stepeni; mozhno schitat', chto kazhdyj 32-razryadnyj adres sostoit iz 22-razryadnogo nomera stranicy i 10-razryadnogo smeshcheniya vnutri stranicy (Risunok 6.3). Kogda yadro naznachaet oblasti fizicheskie stranicy pamyati, neobhodimosti v naznachenii smezhnyh stranic i voobshche v soblyudenii kakoj-libo ocherednosti pri naznachenii ne voznikaet. Cel'yu stranichnoj organizacii pamyati yavlyaetsya povy- +------------------------------------------------------------+ | SHestnadcatirichnyj adres 58432 | | | | Dvoichnyj 0101 1000 0100 0011 0010 | | | | Nomer stranicy, smeshchenie | | vnutri stranicy 01 0110 0001 00 0011 0010 | | | | V shestnadcatirichnoj sisteme 161 32 | +------------------------------------------------------------+ Risunok 6.3. Adresaciya fizicheskoj pamyati po stranicam +------------------------------------------------------+ | Logicheskij nomer stranicy Fizicheskij nomer stranicy | | | | 0 177 | | 1 54 | | 2 209 | | 3 17 | +------------------------------------------------------+ Risunok 6.4. Otobrazhenie logicheskih nomerov stranic na fizicheskie 143 shenie gibkosti naznacheniya fizicheskoj pamyati, kotoroe stroitsya po analogii s naznacheniem diskovyh blokov fajlam v fajlovoj sisteme. Kak i pri naznachenii blokov fajlu, tak i pri naznachenii oblasti stranic pamyati, presleduetsya za- dacha povysheniya gibkosti i sokrashcheniya neispol'zuemogo (vsledstvie fragmenta- cii) prostranstva pamyati. YAdro ustanavlivaet sootnoshenie mezhdu virtual'nymi adresami oblasti i ma- shinnymi fizicheskimi adresami posredstvom otobrazheniya logicheskih nomerov stranic v oblasti na fizicheskie nomera stranic v mashine, kak eto pokazano na Risunke 6.4. Poskol'ku oblast' eto nepreryvnoe prostranstvo virtual'nyh ad- resov programmy, logicheskij nomer stranicy sluzhit ukazatelem na element mas- siva fizicheskih nomerov stranic. Zapis' tablicy oblastej soderzhit ukazatel' na tablicu fizicheskih nomerov stranic, imenuemuyu tablicej stranic. Zapisi tablicy stranic soderzhat mashinno-zavisimuyu informaciyu, takuyu kak prava dos- tupa na chtenie ili zapis' stranicy. YAdro podderzhivaet tablicy stranic v pa- myati i obrashchaetsya k nim tak zhe, kak i ko vsem ostal'nym strukturam dannyh yadra. Na Risunke 6.5 priveden primer otobrazheniya processa v fizicheskie adresa pamyati. Pust' razmer stranicy sostavlyaet 1 Kbajt i pust' processu nuzhno ob- ratit'sya k ob®ektu v pamyati, imeyushchemu virtual'nyj adres 68432. Iz tablicy oblastej vidno, chto virtual'nyj adres nachala oblasti steka - 65536 (64K), esli predpolozhit', chto stek rastet v napravlenii uvelicheniya adresov. Posle vychitaniya etogo adresa iz adresa 68432 poluchaem smeshchenie v bajtah vnutri ob- lasti, ravnoe 2896. Tak kak kazhdaya stranica imeet razmer 1 Kbajt, adres uka- zyvaet so smeshcheniem 848 na 2-yu (nachinaya s 0) stranicu oblasti, raspolozhennoj po fizicheskomu adresu 986K. V razdele 6.5.5 (gde idet rech' o zagruzke oblas- ti) rassmatrivaetsya sluchaj, kogda zapis' tablicy stranic pomechaetsya "pus- toj". V sovremennyh mashinah ispol'zuyutsya raznoobraznye apparatnye registry i keshi, kotorye povyshayut skorost' vypolneniya vysheopisannoj procedury translya- cii adresov i bez kotoryh peresylki v pamyati i adresnye vychisleniya chereschur by zamedlilis'. Vozobnovlyaya vypolnenie processa, yadro posredstvom zagruzki sootvetstvuyushchih registrov soobshchaet tehnicheskim sredstvam upravleniya pamyat'yu o tom, v CHastnaya tablica oblastej Tablicy stranic processa (Fizicheskie adresa) +--------------+ Komandy | 8K +--------------+ +--------------+ +-------->+--------------+ Dannye | 32K +-------+ | pusto | +--------------+ | +--------------+ Stek | 64K +---+ | | 137K | +--------------+ | v +--------------+ Virtual'nye adresa | +--------------+ | 852K | | | 87K | +--------------+ +------------+ +--------------+ | 764K | v | 552K | +--------------+ +--------------+ +--------------+ | 433K | | 541K | | 727K | +--------------+ +--------------+ +--------------+ | 333K | | 783K | | 941K | +--------------+ +--------------+ +--------------+ | - | | 986K | | 1096K | | - | +--------------+ +--------------+ | - | | 897K | | 2001K | | - | +--------------+ +--------------+ +--------------+ | - | | - | +--------------+ +--------------+ Risunok 6.5. Preobrazovanie virtual'nyh adresov v fizicheskie 144 kakih fizicheskih adresah vypolnyaetsya process i gde raspolagayutsya tablicy stranic. Poskol'ku takie operacii yavlyayutsya mashinno-zavisimymi i v raznyh versiyah realizuyutsya po-raznomu, zdes' my ih rassmatrivat' ne budem. CHast' voprosov, svyazannyh s arhitekturoj vychislitel'nyh sistem, zatragivaetsya v uprazhneniyah. Organizaciyu upravleniya pamyat'yu poprobuem poyasnit' na sleduyushchem prostom primere. Pust' pamyat' razbita na stranicy razmerom 1 Kbajt kazhdaya, obrashchenie k kotorym osushchestvlyaetsya cherez opisannye ranee tablicy stranic. Registry up- ravleniya pamyat'yu v sisteme gruppiruyutsya po tri; pervyj registr v trojke so- derzhit adres tablicy stranic v fizicheskoj pamyati, vtoroj registr soderzhit pervyj virtual'nyj adres, otobrazhaemyj s pomoshch'yu trojki registrov, tretij registr soderzhit upravlyayushchuyu informaciyu, takuyu kak nomera stranic v tablice stranic i prava dostupa k stranicam (tol'ko chtenie, chtenie i zapis'). Takaya model' sootvetstvuet vysheopisannoj modeli oblasti. Kogda yadro gotovit pro- cess k vypolneniyu, ono zagruzhaet trojki registrov sootvetstvuyushchej informaci- ej iz zapisej chastnoj tablicy oblastej processa. Esli process obrashchaetsya k yachejkam pamyati, raspolozhennym za predelami prinadlezhashchego emu virtual'nogo prostranstva, sozdaetsya isklyuchitel'naya situ- aciya. Naprimer, esli oblast' komand imeet razmer 16 Kbajt (Risunok 6.5), a process obrashchaetsya k virtual'nomu adresu 26K, sozdaetsya isklyuchitel'naya situ- aciya, obrabatyvaemaya operacionnoj sistemoj. To zhe samoe proishodit, esli process pytaetsya obratit'sya k pamyati, ne imeya sootvetstvuyushchih prav dostupa, naprimer, pytaetsya zapisat' adres v zashchishchennuyu ot zapisi oblast' komand. I v tom, i v drugom primere process obychno zavershaetsya (bolee podrobno ob etom v sleduyushchej glave). 6.2.3 Razmeshchenie yadra Nesmotrya na to, chto yadro rabotaet v kontekste processa, otobrazhenie vir- tual'nyh adresov, svyazannyh s yadrom, osushchestvlyaetsya nezavisimo ot vseh pro- cessov. Programmy i struktury dannyh yadra rezidentny v sisteme i sovmestno ispol'zuyutsya vsemi processami. Pri zapuske sistemy proishodit zagruzka prog- ramm yadra v pamyat' s ustanovkoj sootvetstvuyushchih tablic i registrov dlya otob- razheniya virtual'nyh adresov yadra v fizicheskie. Tablicy stranic dlya yadra ime- yut strukturu, analogichnuyu strukture tablicy stranic, svyazannoj s processom, a mehanizmy otobrazheniya virtual'nyh adresov yadra pohozhi na mehanizmy, is- pol'zuemye dlya otobrazheniya pol'zovatel'skih adresov. Na mnogih mashinah vir- tual'noe adresnoe prostranstvo processa razbivaetsya na neskol'ko klassov, v tom chisle sistemnyj i pol'zovatel'skij, i kazhdyj klass imeet svoi sobstven- nye tablicy stranic. Pri rabote v rezhime yadra sistema razreshaet dostup k ad- resam yadra, pri rabote zhe v rezhime zadachi takogo roda dostup zapreshchen. Poe- tomu, kogda v rezul'tate preryvaniya ili vypolneniya sistemnoj funkcii prois- hodit perehod iz rezhima zadachi v rezhim yadra, operacionnaya sistema po dogovo- rennosti s tehnicheskimi sredstvami razreshaet ssylki na adresa yadra, a pri vozvrate v rezhim yadra eti ssylki uzhe zapreshcheny. V drugih mashinah mozhno me- nyat' preobrazovanie virtual'nyh adresov, zagruzhaya special'nye registry vo vremya raboty v rezhime yadra. Na Risunke 6.6 priveden primer, v kotorom virtual'nye adresa ot 0 do 4M-1 prinadlezhat yadru, a nachinaya s 4M - processu. Imeyutsya dve gruppy regist- rov upravleniya pamyat'yu, odna dlya adresov yadra i odna dlya adresov processa, prichem kazhdoj gruppe sootvetstvuet tablica stranic, hranyashchaya nomera fiziches- kih stranic so ssylkoj na adresa virtual'nyh stranic. Adresnye ssylki s is- pol'zovaniem gruppy registrov yadra dopuskayutsya sistemoj tol'ko v rezhime yad- ra; sledovatel'no, dlya perehoda mezhdu rezhimom yadra i rezhimom zadachi trebuet- sya tol'ko, chtoby sistema razreshila ili zapretila adresnye ssylki s ispol'zo- 145 vaniem gruppy registrov yadra. V nekotoryh sistemah yadro zagruzhaetsya v pamyat' takim obrazom, chto bol'- shaya chast' virtual'nyh adresov yadra sovpadaet s fizicheskimi adresami i funk- ciya preobrazovaniya virtual'nyh adresov v fizicheskie prevrashchaetsya v funkciyu tozhdestvennosti. Rabota s prostranstvom processa, tem ne menee, trebuet, chtoby preobrazovanie virtual'nyh adresov v fizicheskie proizvodilos' yadrom. Adres tablicy Virtu- Nomera stra- stranic al'nyj nic v tabli- adres ce +-----------+------------+-----------+ Registr yadra 1 | --------+ 0 | | +-----------+-|----------+-----------+ Registr yadra 2 | ---+ | | 1M | | +--------|--+-|----------+-----------+ Registr yadra 3 | --+| | | 2M | | +-------||--+-|----------+-----------+ Registr processa 1 | +--- || | | 4M | | +-|-----||--+-|----------+-----------+ Registr processa 2 | |+-- || | | | | +-||----||--+-|----------+-----------+ Registr processa 3 | ||+- || | | | | +-|||---||--+-|----------+-----------+ +------------------------+|| || | | +--------------+| |+----|-------+ | | +----+ +-----|-------|----------+ | | | +--+ | | v v v v v v +------+ +------+ +------+ +------+ +------+ +------+ | 856K | | 747K | | 556K | | 0K | | 128K | | 256K | +------+ +------+ +------+ +------+ +------+ +------+ | 917K | | 950K | | 997K | | 4K | | 97K | | 292K | +------+ +------+ +------+ +------+ +------+ +------+ | 564K | | 333K | | 458K | | 3K | | 135K | | 304K | +------+ +------+ +------+ +------+ +------+ +------+ | 444K | | - | | 632K | | 17K | | 139K | | 279K | +------+ | - | +------+ +------+ +------+ +------+ | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | +------+ +------+ +------+ +------+ +------+ +------+ Tablicy stranic processa Tablicy stranic yadra (oblasti) Risunok 6.6. Pereklyuchenie rezhima raboty s neprivilegirovannogo (rezhima zadachi) na privilegirovannyj (rezhim yadra) 6.2.4 Prostranstvo processa Kazhdyj process imeet svoe sobstvennoe prostranstvo, odnako yadro obrashcha- etsya k prostranstvu vypolnyayushchegosya processa tak, kak esli by v sisteme ono bylo edinstvennym. YAdro podbiraet dlya tekushchego processa kartu translyacii virtual'nyh adresov, neobhodimuyu dlya raboty s prostranstvom processa. Pri kompilyacii zagruzchik naznachaet peremennoj 'u' (imeni prostranstva processa) fiksirovannyj virtual'nyj adres. |tot adres izvesten ostal'nym komponentam yadra, v chastnosti modulyu, vypolnyayushchemu pereklyuchenie konteksta (razdel 6.4.3). YAdru takzhe izvestno, kakie tablicy upravleniya pamyat'yu ispol'zuyutsya 146 pri translyacii virtual'nyh adresov, prinadlezhashchih prostranstvu processa, i blagodarya etomu yadro mozhet bystro peretranslirovat' virtual'nyj adres prost- ranstva processa v drugoj fizicheskij adres. Po odnomu i tomu zhe virtual'nomu adresu yadro mozhet poluchit' dostup k dvum raznym fizicheskim adresam, opisyva- yushchim prostranstva dvuh processov. Process imeet dostup k svoemu prostranstvu, kogda vypolnyaetsya v rezhime yadra, no ne togda, kogda vypolnyaetsya v rezhime zadachi. Poskol'ku yadro v kazh- dyj moment vremeni rabotaet tol'ko s odnim prostranstvom processa, ispol'zuya dlya dostupa virtual'nyj adres, prostranstvo processa chastichno opisyvaet kon- tekst processa, vypolnyayushchegosya v sisteme. Kogda yadro vybiraet process dlya ispolneniya, ono ishchet v fizicheskoj pamyati sootvetstvuyushchee processu prostrans- tvo i delaet ego dostupnym po virtual'nomu adresu. Adres tablicy Virtu- Nomera stra- stranic al'nyj nic v tabli- adres ce +-----------+------------+-----------+ Registr yadra 1 | | | | +-----------+------------+-----------+ Registr yadra 2 | | | | +-----------+------------+-----------+ (Prost- Registr yadra 3 | ---+ | 2M | 4 | ranstvo +--------|--+------------+-----------+ processa) | +---------------------+ | Tablicy stranic dlya prostranstva processov | v +------+ +------+ +------+ +------+ | 114K | | 843K | |1879K | | 184K | +------+ +------+ +------+ +------+ | 708K | | 794K | | 290K | | 176K | +------+ +------+ +------+ +------+ | 143K | | 361K | | 450K | | 209K | +------+ +------+ +------+ +------+ | 565K | | 847K | | 770K | | 477K | +------+ +------+ +------+ +------+ Process A Process B Process C Process D Risunok 6.7. Karta pamyati prostranstva processa v yadre Predpolozhim, naprimer, chto prostranstvo processa imeet razmer 4 Kbajta i pomeshchaetsya po virtual'nomu adresu 2M. Na Risunke 6.7 pokazana karta pamyati, gde pervye dva registra iz gruppy otnosyatsya k programmam i dannym yadra (ad- resa i ukazateli ne pokazany), a tretij registr adresuet k prostranstvu pro- cessa D. Esli yadru nuzhno obratit'sya k prostranstvu processa A, ono kopiruet svyazannuyu s etim prostranstvom informaciyu iz sootvetstvuyushchej tablicy stranic v tretij registr. V lyuboj moment tretij registr yadra opisyvaet prostranstvo tekushchego processa, no yadro mozhet soslat'sya na prostranstvo drugogo processa, perepisav zapisi v tablice stranic s novym adresom. Informaciya v registrah 1 i 2 dlya yadra neizmenna, poskol'ku vse processy sovmestno ispol'zuyut program- my i dannye yadra. 6.3 KONTEKST PROCESSA Kontekst processa vklyuchaet v sebya soderzhimoe adresnogo prostranstva za- dachi, vydelennogo processu, a takzhe soderzhimoe otnosyashchihsya k processu appa- 147 ratnyh registrov i struktur dannyh yadra. S formal'noj tochki zreniya, kontekst processa ob®edinyaet v sebe pol'zovatel'skij kontekst, registrovyj kontekst i sistemnyj kontekst (*