amyati dlya translyacii. Kogda neobhodimoj informacii v TLB ne okazyvaetsya, processor zamenyaet naibolee staryj element TLB novym elementom. Princip lokal'nosti ssylok predpolagaet, chto novyj element skoree vsego budet ispol'zovat'sya v budushchem. Poskol'ku vklyuchenie stranichnogo mehanizma ne uvelichivaet vremeni translyacii adresa, ono malo vliyaet na vremya ispolneniya komandy tol'ko pri nepopadaniyah v TLB. Na ris.3-7 pokazany osnovnye polya elementa stranichnoj tablicy (PTE). |lementy spravochnika stranichnyh tablic identichny pokazannomu za tem isklyucheniem, chto pole adresa rassmatrivaetsya kak fizicheskij adres stranichnoj tablicy, a ne adres stranicy. ATRIBUTY PRISUTSTVIE -------------------------------------+ PRAVA ---------------------------------------+ | PRIVILEGII ------------------------------+ | | BYLO OBRASHCHENIE ----------------------+ | | | BYLA ZAPISX ---------------------+ | | | | OPREDELYAETSYA POLXZOVATELEM --+ | | | | | | | | | | | +-----------------------------------------------------------+ | ADRES STRANICY | | | | | | | +-----------------------------------------------------------+ Zadachi mogut sovmestno pol'zovat'sya otdel'nymi stranicami ili celymi stranichnymi tablicami. |lementy 1 razlichnyh stranichnyh tablic, ukazyvayushchie na odnu i tu zhe stranicu , yavlyayutsya sinonimami odin dlya drugogo, takzhe kak deskriptory s temi zhe samymi adresami yavlyayutsya sinonimami drug dlya druga. V dvuh urovnevoj strukture stranichnyh tablic processora 80786 legche razdelyat' stranicy mezhdu zadachami putem razdeleniya celoj stranichnoj tablicy. Poskol'ku adres razdelyaemoj stranicy v etom sluchae nahoditsya v odnoj stranichnoj tablice, operacionnoj sistemy neobhodimo izmenit' tol'ko odin element stranichnoj tablicy, kogda ona peremeshchaet etu stranicu. 3.3.4 Virtual'naya pamyat' Virtual'naya pamyat' pozvolyaet ochen' bol'shim programmam ili #`c// , rabotat' v znachitel'no men'shem ob®eme fizicheskoj pamyati bez ispol'zovaniya tehniki overleev. Sistemy s virtual'noj mogut osnovyvat'sya ili na segmentah, ili na stranicah. V oboih sluchayah osnovnaya ideya virtual'noj pamyati sostoit v tom, chtoby ispol'zovat' znachitel'no bolee deshevuyu diskovuyu pamyat' vmesto poluprovodnikovoj pamyati. Operacionnaya sistema v sluchae s virtual'noj pamyat'yu zapominaet vse segmenty ili stranicy v bol'shoj oblasti diskovoj pamyati, nazyvaemoj chasto "oblast'yu obmena". Znachitel'no men'shaya fizicheskaya (real'naya) pamyat' soderzhit tol'ko naibolee chasto ispol'zuemye segmenty ili stranicy. Do teh por, poka segmenty ili stranicy zapomnennye na diske, ispol'zuyutsya nechasto, sistema s virtual'noj pamyat'yu budet vesti sebya takzhe horosho, kak i sistema so znachitel'no bol'shej operativnoj pamyat'yu, no za znachitel'no men'shuyu cenu. Klyuchevye arhitekturnye svojstva, neobhodimye dlya effektivnogo ispol'zovaniya virtual'noj pamyati, perechislyayutsya nizhe: z bit dlya kazhdogo segmenta ili stranicy, kotoryj govorit processoru (ili ustrojstvu upravleniya pamyat'yu), imeetsya li dannyj segment ili stranica v pamyati, ili neobhodimo zagruzit' ego (ee) s diska; z mehanizm lovushki ili osobogo preryvaniya, pri pomoshchi kotorogo processor mozhet ukazat' operacionnoj sisteme o neobhodimosti zagruzki v pamyat' otsutstvuyushchego segmenta ili stranicy; z perezapuskaemye komandy, kotorye pozvolyayut processoru vybirat' zanovo komandu posle togo, kak operacionnaya sistema zagruzila tol'ko chto ne prisutstvuyushchuyu stranicu v pamyat' i pometila ee prisutstvuyushchej. Processor 80786 imeet vse eti neobhodimye svojstva, a takzhe drugie, kotorye uluchshayut effektivnost' mehanizma upravleniya virtual'noj pamyat'yu. Kak deskriptory, tak i elementy stranichnyh tablic imeyut bit prisutstviya i poetomu mogut byt' ispol'zovany kak osnova dlya postroeniya virtual'noj pamyat'yu. Obmen segmentami mezhdu pamyat'yu i diskom yavlyayutsya razumnym podhodom, kogda segmenty otnositel'no maly, kak eto bylo v 16-bitnyh arhitekturah. Kogda segmenty mogut byt' ochen' veliki, kak eto vozmozhno v 80786, obmen stranicami obychno yavlyaetsya bolee effektivnym priemom blagodarya fiksirovannomu razmeru stranic. V stranichnyh sistemah operacionnaya sistema raspredelyaet i osvobozhdaet pamyat' elementami razmerom so stranicu, nazyvaemymi stranichnymi kadrami; stranica , zagruzhaemaya s diska, budet podhodit' lyubomu imeyushchemusya kadru. Poskol'ku bol'shinstvo iz 32-bitnyh sistem s virtual'noj pamyat'yu osnovyvaetsya na mehanizme stranic, ostavshayasya chast' etogo razdela opisyvaet stranichnyj virtual'nyj mehanizm 80786. V obshchem sluchae operacionnaya sistema so stranichnoj virtual'noj pamyat'yu peresylaet otsutstvuyushchie stranicy s diska v stranichnye kadry po zaprosam, t.e. kogda ona budet opoveshchena processorom, chto komanda obrashchaetsya k otsutstvuyushchej stranice. Kogda kolichestvo svobodnyh kadrov stanovitsya malen'kim, operacionnaya sistema takzhe peredaet stranicy iz stranichnyh kadrov na disk, pytayas' iz®yat' te stranicy, kotorye vryad li budut ispol'zovany v blizhajshem budushchem. Putem takogo "prozrachnogo" obmena stranicami mezhdu stranichnymi kadrami i diskom operacionnaya sistema sozdaet u prikladnogo programmnogo obespecheniya illyuziyu, chto fizicheskaya pamyat' imeet razmer ochen' bol'shoj oblasti obmena na diske. Nizhe podrobno opisyvaetsya etot mehanizm. Kogda v processe translyacii logicheskogo adresa processor poluchaet linejnyj adres, kotoryj ssylaetsya na element stranichnoj tablicy, chej bit prisutstviya sbroshen, v processore voznikaet osobaya situaciya, nazyvaemaya, uslovno, stranichnoj oshibkoj. Osobye a(bc f(( rassmatrivayutsya nizhe v etom razdele, no osnovnym sledstviem etoj oshibki yavlyaetsya vyzov processorom procedury operacionnoj sistemy, nazyvaemoj obrabotchikom stranichnoj oshibki. Pri vhode v obrabotchik stranichnoj oshibki Upravlyayushchij registr 2 soderzhit linejnyj adres, svyazannyj s otsutstvuyushchej stranicej. Po etomu adresu obrabotchik stranichnoj oshibki mozhet najti otnosyashchijsya k nemu element stranichnoj tablicy putem translyacii linejnogo adresa, kak eto delaet processor. Otmetim, chto vse ostal'nye bity, za isklyucheniem bita prisutstviya v elemente stranichnoj tablicy, opredelyayutsya pol'zovatelem; oni predstavlyayut dlya operacionnoj sistemy udobnoe mesto dlya zapominaniya diskovogo adresa otsutstvuyushchej stranicy. Opredeliv diskovyj adres otsutstvuyushchej stranicy, obrabotchik stranichnoj oshibki mozhet najti svobodnyj stranichnyj kadr i peredat' stranicu s diska v etot kadr. Zatem obrabotchik stranichnoj oshibki izmenyaet adresnoe pole v elemente stranichnoj tablicy i bit prisutstviya, posle chego vozvrashchaet upravlenie programme, prervannoj stranichnoj oshibkoj. Posle etogo processor avtomaticheski zanovo vybiraet komandu, v kotoroj proizoshla stranichnaya oshibka, i rezul'tat budet takim zhe, kak esli by stranica ranee nahodilas' v pamyati, kogda komanda nachala ispolnyat'sya v pervyj raz. Drugie polya v elemente stranichnoj tablicy processora 80786 pomogayut operacionnoj sisteme effektivno proizvodit' dejstviya, svyazannye s upravleniem virtual'noj pamyat'yu. Krome zagruzki stranic po zaprosam operacionnaya sistema dolzhna podderzhivat' nabor svobodnyh stranichnyh kadrov, kotorye mogut byt' raspredeleny obrabotchikom stranichnyh oshibok. Dlya uvelicheniya nabora svobodnyh stranichnyh kadrov operacionnaya sistema dolzhna znat', kakoj kadr osvobodit'. Prezhde chem osvobodit' kadr, operacionnaya sistema dolzhna zapisat' etu stranicu na disk, esli stranica byla modificirovana s teh por, kogda ona byla zagruzhena. Dlya togo, chtoby pomoch' operacionnoj sisteme v etoj dlitel'nosti, arhitektura 80786 imeet bit dostupa i bit izmeneniya v kazhdom elemente stranichnoj tablicy, processor izmenyaet eti bity avtomaticheski, dlya vseh imeyushchihsya v pamyati stranic 80786 ustanavlivaet bit dostupa vsegda, kogda proishodit chtenie ili zapis' v dannoj stranice, i ustanavlivaet bit izmeneniya, kogda proishodit zapis' v etu stranicu. Putem periodicheskogo prosmotra i sbrosa bitov dostupa operacionnaya sistema mozhet opredelit' stranicy, kotorye davno ne ispol'zovalis'. Kadry, soderzhashchie takie stranicy, yavlyayutsya horoshimi kandidatami na osvobozhdenie, poskol'ku stranicy, kotorye davno ne ispol'zovalis', vryad li budut ispol'zovany v blizhajshem budushchem. Kogda operacionnaya sistema vybrala stranicu dlya osvobozhdeniya ee stranichnogo kadra, stranica ne dolzhna zapisyvat'sya na disk za isklyucheniem sluchaya, kogda processor ustanovil ee bit izmeneniya. Kazhdyj element stranichnoj tablicy takzhe soderzhit 3-h bitnoe pole, kotoroe operacionnaya sistema mozhet ispol'zovat' po svoemu usmotreniyu. Operacionnye sistemy obychno ispol'zuyut eto pole dlya markirovki stranic special'nymi znakami takimi kak, naprimer, "zakryto dlya vvoda/vyvoda". 3.4Zashchita Processor 80786 obespechivaet neskol'ko mehanizmov zashchity, kotoroe operacionnaya sistema mozhet selektivno vybirat' dlya svoih nuzhd. Odna iz form zashchity - otdelenie prostranstv adresov zadach pri pomoshchi tablic deskriptorov segmentov i stranichnyh tablic, obsuzhdalas' vyshe. |to razdelenie effektivno predotvrashchaet nalozhenie kodov i dannyh razlichnyh prikladnyh zadach. V dopolnenie k izolyacii zadach drug ot druga 80386 obespechivaet vozmozhnost' ' i(bk operacionnoj sistemy ot prikladnyh zadach, zashchitu odnoj chasti operacionnoj sistemy ot drugih chastej i zashchitu zadach ot nekotoryh ih sobstvennyh oshibok. Krome togo, chto sistema zashchity 80386 delaet operacionnye sistemy bolee nadezhnymi, ona mozhet uprostit' process otladki, ispol'zuya preryvaniya (lovushki) po oshibkam dlya konkretnyh zadach. Vse svojstva zashchity processora 80386 realizovany vnutri kristalla, poetomu dejstviya po proverke zashchity ne vliyayut na proizvoditel'nost' processora. 3.4.1 Privilegii Mnogie iz svojstv zashchity processora 80386 baziruyutsya na ponyatii ierarhii privilegij. V lyuboj moment privilegii zadachi ekvivalentna urovnyu privilegij ispolnyaemogo kodovogo segmenta. V kazhdom deskriptore segmenta imeetsya pole, kotoroe opredelyaet uroven' privilegii svyazannogo s nim segmenta, pole mozhet prinimat' 0 - eto naibolee privilegirovannyj uroven', a uroven' privilegii 3 - naimenee privilegirovannyj. Na ris.3-8 Pokazano, kak urovni privilegii processora 80386 mogut byt' ispol'zovany dlya ustanovki razlichnyh strategij zashchity. Sistema bez zashchity mozhet byt' realizovana putem prostogo pomeshcheniya vseh procedur v segment (ili segmenty), chej uroven' privilegii raven 0. Tradicionnoe razdelenie na supervizora i pol'zovatelya mozhet byt' realizovano putem pomeshcheniya prikladnoj zadachi v segment s urovnem privilegii 3, a procedur supervizora - v segment chej uroven' privilegij raven 0. Operacionnaya sistema mozhet takzhe ispol'zovat' urovni privilegii 1 i 2, esli eto neobhodimo. Naprimer, naibolee kriticheskie i naibolee izmenyaemye procedury operacionnoj sistemy (inogda nazyvaemye yadrom operacionnoj sistemy) mogut imet' uroven' privilegij 0. Uroven' privilegij 0. Uroven' privilegij 1 mozhet byt' ispol'zovan dlya funkcij operacionnoj sistemy , kotorye yavlyayutsya menee kriticheskimi i bolee chasto izmenyayutsya ili rasshiryayutsya, naprimer, dlya drajverov ustrojstv. Uroven' 2 mozhet byt' ispol'zovan dlya ispol'zovaniya proizvoditelyami original'nogo oborudovaniya, takie proizvoditeli original'nogo oborudovaniya dolzhny zatem prisvaivat' uroven' privilegij 2 svoim programmam, ostavlyaya uroven' privilegij 3 dlya konechnyh pol'zovatelej. V etom sluchae programmy proizvoditelej original'nogo oborudovaniya zashchishcheny ot programm konechnyh pol'zovatelej. Operacionnaya sistema zashchishchena kak ot programm proizvoditelej original'nogo oborudovaniya i programm konechnyh pol'zovatelej, a yadro operacionnoj sistemy zashchishcheno ot vseh ostal'nyh programm, vklyuchaya tu chast' operacionnoj sistemy, kotoraya yavlyaetsya predmetom chastnyh izmenenij. Kak budet pokazano nizhe, uroven' privilegij zadachi opredelyaet, kakie komandy mozhno ispol'zovat' i kakoe podmnozhestvo segmentov i/ili stranic v ih adresnom prostranstve oni mogut obrabatyvat' (ispolnyat'). Processor osushchestvlyaet proverku na dopustimost' raboty soglasno urovnyu privilegii zadachi i urovnyu privilegii segmentov ili stranic, kotorye yavlyayutsya operandami komand. Lyubaya popytka zadachi ispol'zovat' bolee privilegirovannyj segment ili stranicu privodit k ostanovke raboty processora nad komandoj i vozniknoveniyu osoboj situacii zashchity. (Osobye situacii opisyvayutsya v dannom razdele nizhe kak sistemnye vyzovy, kotorye obespechivayut upravlyaemyj put' dlya vyzova menee privilegirovannymi procedurami bolee privilegirovannyh procedur). 3.4.2 Privilegirovannye komandy V dopolnenie k tomu, kakie segmenty i stranicy mogut byt' ispol'zovany, uroven' privilegii zadachi opredelyaet komandy, kotorye zadachej mogut byt' ispol'zovany. Processor 80386 imeet /.$,-.&%ab". komand, ispolnenie kotoryh dolzhno byt' tshchatel'no proanalizirovano dlya togo, chtoby predotvratit' ser'eznye razrusheniya sistemy. Vse komandy, kotorye zagruzhayut novye znacheniya v sistemnye registry, yavlyayutsya primerami privilegirovannyh komand. Tol'ko zadacha, rabotayushchaya na urovne privilegij 0, mozhet ispolnyat' privilegirovannye komandy. 3.4.3 Zashchita segmentov Deskriptory v registrah LDT i GDT - zadach opredelyayut logicheskoe adresnoe prostranstvo zadachi. Segmenty, opredelennye v etih tablicah, teoreticheski adresuemy, poskol'ku tablicy deskriptorov obespechivayut informaciej, neobhodimoj dlya vychisleniya adresa segmenta. Odnako adresuemyj segment ne mozhet byt' dostupen dlya nekotoryh operacij, iz-za dopolnitel'nyh proverok zashchity, osushchestvlyaemyh processorom 80386. Processor proveryaet kazhdoe obrashchenie k segmentu (sgenerirovannoe pri ispolnenii komandy ili pri vyborke komandy), chtoby opredelit', chto obrashchenie soglasuetsya s atributami zashchity segmenta, kak eto opisano nizhe. Privilegiya: CHtoby poluchit' dostup k segmentu, programma dolzhna imet', po krajnej mere, takuyu zhe privilegiyu kak segment. Naprimer, programma, rabotayushchaya na urovne 3, mozhet obrashchat'sya tol'ko k tem segmentam, chej uroven' privilegij takzhe raven 3, v to vremya, kak programma, rabotayushchaya na urovne 0, mozhet obrashchat'sya ko vsem segmentam v svoem adresnom prostranstve. Granica: Obrashchenie k segmentu dolzhno nahodit'sya vnutri granic segmenta. Granicy segmenta pozvolyayut processoru obnaruzhivat' programmnye oshibki, takie kak perepolnenie steka, nevernye ukazateli i indeksy massivov, a takzhe nepravil'nye adresa vyzovov i perehodov. V sluchayah, kogda operacionnaya sistema mozhet opredelit', chto obrashchenie za granicy segmenta ne yavlyaetsya oshibkoj (perepolnenie steka yavlyaetsya primerom dlya nekotoryh sistem), operacionnaya sistema mozhet rasshirit' segment (naprimer, putem dobavleniya stranicy k nemu) i nachat' komandu s nachala. Tip: Kazhdyj deskriptor soderzhit pole tipa, kotoroe processor proveryaet na sootvetstvie komande, kotoruyu on ispolnyaet. Obychnye segmenty imeyut tip komand ili dannyh , pozvolyaya processoru, naprimer, obnaruzhit' popytku zapisi v sushchestvuyushchij kod, naprimer, tipy segmentov, neposredstvenno rabotayushchie v prikladnyh programmah - eto komandy i dannye. Sistemnye deskriptory takzhe imeyut tip, tak chto processor mozhet, naprimer, proverit' pri pereklyuchenii zadach, chto segment, ukazannyj v komande JUMP TSS, dejstvitel'no yavlyaetsya segmentom sostoyaniya zadachi. Prava: Deskriptor segmenta mozhet byt' pomechen pravami, ogranichivayushchimi operacii, kotorye mozhno proizvodit' so svyazannym s nim segmentom. Segmenty komand mogut byt' pomecheny kak ispolnyaemyj ili chitaemyj. Segmenty dannyh mogut byt' pomecheny kak dostupnye tol'ko dlya chteniya ili kak dostupnye dlya chteniya i zapisi. Vse proverki, opisannye vyshe, zavisyat ot celostnosti deskriptorov. Esli zadacha, ispolnyayushchaya prikladnuyu programmu, mogla by izmenyat' deskriptor, proverka nichego by ne garantirovala. Po etoj prichine operacionnaya sistema mozhet ogranichit' dostup k tablicam deskriptorov tol'ko dlya programm s urovnem privilegii 0. Zametim, chto v sluchae razdelyaemyh segmentov razlichnye deskriptory dlya odnogo i togo zhe segmenta (t.e. sinonimy) mogut imet' razlichnye atributy zashchity, pozvolyaya, naprimer, odnoj zadache chitat' i pisat' segment, v to vremya, kak drugoj tol'ko chitat' ego. Sinonimy takzhe pozvolyayut operacionnoj sisteme preodolet' mehanizm zashchity, esli eto neobhodimo, naprimer dlya peremeshcheniya kodovogo segmenta. 3.4.4 Zashchita stranic Sistemy, kotorye shiroko ne ispol'zuyut zashchitu segmentov, vmesto etogo mogut zashchishchat' stranicy (zashchita stranic mozhet byt' takzhe prilozhima k otdel'nym chastyam bol'shih segmentov). Analogichno deskriptoru element stranichnoj tablicy imeet nabor atributov zashchity, processor 80386 proveryaet kazhdoe obrashchenie k stranice na sootvetstvie etim atributam. |lement stranichnoj tablicy mozhet byt' otmechen odnim iz dvuh urovnej privilegij: pol'zovatel'skij ili supervizornyj. Pol'zovatel'skij uroven' sootvetstvuet urovnyu privilegij 3, a supervizornye stranicy mogut byt' dostupny tol'ko zadacham, rabotayushchim s urovnyami privilegij 0, 1 ili 2, pol'zovatel'skaya stranica mozhet byt' otmechena kak dostupnaya tol'ko dlya chteniya ili dlya chteniya i zapisi. Processor 80386 proveryaet atributy zashchity stranic posle togo, kak on udostoverilsya, chto dostup nahoditsya v sootvetstvii s atributami segmenta. Takim obrazom, zashchita stranic yavlyaetsya udobnym sredstvom dlya operacionnoj sistemy realizovat' dopolnitel'nuyu zashchitu chastej segmentov. Naprimer, operacionnaya sistema mozhet bezopasno zapolnit' dannye operacionnoj sisteme, otnosyashchiesya k zadacham, takie kak stranichnye tablicy i deskriptory fajlov, v segmente dannyh zadachi, oboznachiv stranicy, gde raspolozheny eti dannye, kak supervizornye. 3.5Sistemnye vyzovy Bol'shinstvo operacionnyh sistem organizuyut svoi funkcii kak nabor procedur, kotorye mogut byt' vyzvany zadachami. Nezashchishchennaya operacionnaya sistema processora 80386 mozhet pomestit' svoi procedury i prikladnoj kod v kodovoj segment s urovnem privilegii 0/ ili v bolee chem odin takoj segment, prikladnaya zadacha mozhet zatem vyzvat' funkciyu operacionnoj sistemy obychnoj komandnoj vyzova. Takoj podhod yavlyaetsya bystrym, no trebuet ot prikladnyh zadach, chtoby v nih ne bylo oshibok i chtoby oni vypolnyalis' pravil'no (kak eto, naprimer, realizuetsya vo vstroennyh sistemah). Nichto ne zapreshchaet zadache, rabotayushchej na urovne privilegii 0, vyzyvat' procedury, nahodyashchiesya v adrese, kotoryj ne yavlyaetsya tochkoj vhoda v operacionnuyu sistemu, nichto ne zapreshchaet takoj zadache isportit' dannye operacionnoj sistemy. Dlya zashchity operacionnoj sistemy prikladnye programmy i dannye mogut byt' pomeshcheny v menee privilegirovannye segmenty. Takzhe kak zadacha, rabotayushchaya na dannom urovne privilegii, ne mozhet chitat' ili pisat' dannye v segment s bol'shim urovnem privilegii, zadacha takzhe ne mozhet neposredstvenno vyzvat' proceduru iz bolee privilegirovannogo segmenta. Dlya togo, chtoby pozvolit' zadache, ispolnyayushchej komandy iz menee privilegirovannogo segmenta, sdelat' vyzov zashchishchennoj sistemnoj procedury, operacionnaya sistema dolzhna opredelit' odnu ili bolee vhodnyh tochek. V processore 80386 eti vhodnye tochki nazyvayutsya shlyuzami (sm. ris.3-9). ATRIBUTY SCHETCHIK DVOJNYH SLOV TIP PRIVILEGIYA +------------------------------------------------+ | | | | | BIT NALICHI | +------------------------------------------------| | UKAZATELX TOCHKI VHODA | +------------------------------------------------+ SCHETCHIK DVOJNYH SLOV OTNOSITSYA TOLXKO K SHLYUZAM Imeyutsya dva tipa shlyuzov, kotorye mogut byt' ispol'zovany dlya realizacii vhodnyh tochek operacionnoj sistemy: shlyuzy lovushek i shlyuzy vyzovov. Dva tipa shlyuzov, voobshche govorya, pohozhi, odnako shlyuz vyzova pozvolyaet sdelat' interfejs operacionnoj sistemy identichnym s interfejsom obychnoj procedury. Ispol'zuya shlyuzy vyzovov, programmisty kompilyatorov i assemblerov mogut ispol'zovat' obshchij nabor soglashenij dlya vyzova lyubyh procedur, ostavlyaya za processorom 80386 zaboty o dopolnitel'noj obrabotke, neobhodimoj dlya izmeneniya urovnej privilegii. Kak pokazano na ris.3-9, shlyuz soderzhit logicheskij adres vhodnoj tochki i nabor atributov. Naibolee vazhnyj atribut - eto uroven' privilegii shlyuza. Uroven' privilegii shlyuza opredelyaet urovni privilegii, kotorye mogut ispol'zovat' shlyuz, dlya ispol'zovaniya shlyuza vyzyvayushchaya procedura dolzhna byt', kak minimum, takzhe privilegirovanna kak shlyuz. Na ris.3-10 Pokazan primer. V etoj gipoticheskoj sisteme programma pol'zovatelya imeet uroven' privilegii 3, v to vremya kak operacionnaya sistema razdelena na 2 urovnya. YAdro operacionnoj sistemy rabotaet na urovne privilegii 0, a menee kritichnye funkcii operacionnoj sistemy rabotayut na urovne privilegii 1. (Uroven' privilegii 2 ne ispol'zuetsya). V etoj sisteme pol'zovatel'skaya programma pozvolyaet vyzyvat' servisnye procedury, no ne yadro. V sootvetstvii s etim obespechivaet shlyuz dlya servisnyh procedur. Uroven' privilegij etogo shlyuza raven 3, tak chto programma pol'zovatelya mozhet vyzyvat' procedury cherez nego. Prisvaivaya shlyuzu yadra uroven' privilegii 1, operacionnaya sistema pozvolyaet servisnym proceduram vyzyvat' yadro, no zapreshchaet dostup k programme pol'zovatelya, kotoraya menee privilegirovanna, chem shlyuz yadra. Takim obrazom operacionnaya sistema mozhet primenyat' shlyuzy dlya akkuratnogo opredeleniya svoih tochek vhoda, vklyuchaya urovni privilegii, neobhodimye dlya ispol'zovaniya etih tochek vhoda. Dlya togo, chtoby sdelat' funkcii operacionnoj sistemy vyzyvaemymi iz vseh zadach, operacionnaya sistema, obychno pomeshchaet ih shlyuzy vyzovov v global'nuyu tablicu deskriptorov. Dlya osushchestvleniya vyzova cherez shlyuz lovushki zadacha ispol'zuet komandu preryvaniya, dlya osushchestvleniya vyzova cherez shlyuz vyzova zadacha ispolnyaet komandu obychnogo mezhsegmentnogo vyzova. Obe komandy izmenyayut uroven' privilegii zadachi perehodyat k steku, opredelennomu (v TSS zadache) dlya starshego urovnya privilegii. (Opredelennaya sistema dolzhna imet' svoj sobstvennyj stek dlya togo, chtoby garantirovat' dostatochno stekovoe prostranstvo dlya raboty, nel'zya verit' prikladnym zadacham, chto oni imeyut dostatochnoe stekovoe prostranstvo). Pered vyzovom cherez stek vyzova zadacha mozhet zaslat' parametry v svoj stek, kak ona sdelala by eto pered vyzovom drugoj procedury. Processor 80386 avtomaticheski kopiruet parametry v privilegirovannyj stek (pole schetchika dvojnyh slov v shlyuze vyzova govorit processoru 80386, skol'ko dvojnyh slov parametrov neobhodimo skompilirovat'). Sistemy, kotorye osushchestvlyayut vyzovy cherez shlyuzy lovushek, mogut peresylat' parametry v registrah. 3.6Preryvaniya i osobye situacii Ustrojstva generiruyut preryvaniya, kogda oni trebuyut vnimaniya, v to vremya kak komandy mogut vyzvat' osobye situacii, esli pri ih ispol'zovanii voznikayut osobye usloviya, takie kak nesushchestvuyushchaya stranica. Tipichnoe preryvanie ili osobaya situaciya trebuyut bystrogo vmeshatel'stva programmnogo drajvera, kotoryj otvechaet na preryvanie ili osobuyu situaciyu. Posle togo, kak drajver vernet upravlenie, 80386 vozobnovlyaet ispolnenie komandnogo potoka, kotoryj byl prervan ili kotoryj vyzval osobuyu situaciyu. Poskol'ku preryvaniya i osobye situacii ves'ma pohozhi, processor 80386 ` aa, b`(" %b ih unificirovannym sposobom. Kazhdyj istochnik preryvaniya i kazhdyj tip osoboj situacii imeet identifikacionnyj nomer v diapazone ot 0 do 255, processor 80386 ispol'zuet etot nomer dlya togo, chtoby vyzvat' obrabotchik, svyazannyj s preryvaniem ili osoboj situaciej. Pri vozniknovenii osobyh situacij oni raspoznayutsya processorom 80386, kotoryj opredelyaet nomera osobyh situacij, kak eto pokazano v tabl.3-1. Nomera preryvanij opredelyayutsya operacionnoj sistemoj. Operacionnaya sistema inicializiruet programmiruemyj kontroller preryvanij 8259a takim obrazom, chto kazhdyj istochnik preryvanij svyazyvaetsya so svoim nomerom. Pri poyavlenii preryvaniya 8259a peredaet processoru 80386 nomer preryvaniya. Komandy preryvanij ukazyvayut svoi nomera svoih operandah. Zametim, chto dlya sovmestimosti s sushchestvuyushchim i budushchim oborudovaniem firmy INTEL nomera preryvanij i osobyh situacij ot 0 do 71 ne dolzhny ispol'zovat'sya inache, chem eto ukazano v tabl.3-1. Vse drugie nomera mogut primenyat'sya bez ogranichenij. Tablica 3-1 +-----------------------------------------------------------+ | NOMER | OPISANIE | +----------------+------------------------------------------| | 00 | DELENIE NA 0 | | 01 | OSOBAYA SITUACIYA OTLADKI | | 03 | KONTROLXNAYA TOCHKA PROGRAMMY | | 04 | PEREPOLNENIE | | 05 | NARUSHENIE GRANIC MASSIVA | | 06 | NEDOPUSTIMYJ KOD OPERACII | | 07 | SOPROCESSOR OTSUTSTVUET | | 08 | DVOJNAYA OSHIBKA | | 10 | NEPRAVILXNYJ TSS | | 11 | SEGMENTNAYA OSHIBKA | | 12 | PEREPOLNENIE STEKA SVERHU ILI SNIZU | | 13 | NARUSHENIE OBSHCHEJ ZASHCHITY | | 14 | STRANICHNAYA OSHIBKA | | 16 | OSHIBKA SOPROCESSORA | +-----------------------------------------------------------+ 3.6.1 Tablica deskriptorov Sgenerirovav ili poluchiv nomer preryvaniya ili osoboj situacii, processor 80386 ispol'zuet ego kak indeks v tablice deskriptorov preryvanij (IDT). IDT Mozhet byt' raspolozhena v lyubom meste pamyati, operacionnaya sistema inicializiruet IDT i zagruzhaet ee adres v registr tablicy deskriptorov preryvanij (IDTR). Podobno GDT ili LDT, IDT yavlyaetsya vektorom deskriptorov, hotya shlyuzy yavlyayutsya edinstvennym tipom deskriptorov, dopustimyh v IDT. V IDT imeetsya odin shlyuz dlya kazhdogo obrabotchika preryvaniya i osoboj situacii (IDT funkcional'no podobna tablice preryvanij, imeyushchejsya vo mnogih arhitekturah). Obrabotchik preryvanij ili osobyh situacij processora 80386 mozhet byt' realizovan v vide procedury ili zadachi, nizhe kratko obsuzhdayutsya dostoinstva etih dvuh sposobov. Processor 80386 vyzyvaet obrabotchik, organizovannyj v vide procedury tak, on vypolnyaet sistemnyj vyzov cherez shlyuz. Dlya vyzova obrabotchika, organizovannogo v vide zadachi, processor 80386 osushchestvlyaet pereklyuchenie zadach. Tip shlyuza IDT obrabotchika govorit processoru, kakim obrazom neobhodimo vyzvat' obrabotchik (sm. Tabl.3-2). Kak bylo ukazano, shlyuzy preryvanij i lovushek funkcional'no podobny shlyuzam vyzovov, za isklyucheniem togo chto oni zastavlyayut 80386 zapomnit' registr flagov v stek obrabotchika. Oni otlichayutsya odin ot drugogo tol'ko sostoyaniem flaga razresheniya preryvaniya (IF) pri "e.$% v obrabotchik, v obrabotchik preryvanij vhodyat s zapreshchennymi preryvaniyami, v to vremya kak v obrabotchik lovushki, kotoryj obychno ispol'zuetsya dlya obrabotki osobyh situacij, vhodyat bez izmeneniya zapreta. V processe vhoda v obrabotchik - zadachu 80386 zagruzhaet registr flagov znacheniem, zapomnennym v ego TSS - zadache, razreshaya obrabotchiku rabotat' s razreshennymi ili zapreshchennymi preryvaniyami. Tablica 3-2 HARAKTERISTIKI SHLYUZOV PRERYVANIJ I OSOBYH SITUACIJ +-----------------------------------------------------------+ | TIP SHLYUZA | OBRABOTCHIK | PRERYVANIYA | +------------+----------------------+-----------------------| | PRERYVANIE | PROCEDURA | ZAPRESHCHENY | | SHLYUZ | PROCEDURA | RAZRESHENY | | ZADACHA | ZADACHA | (FLAG IF OBRABOTCHIKA) | +-----------------------------------------------------------+ Obrabotchiki - procedury yavlyayutsya podhodyashchim sredstvom dlya programm, kotorye dolzhny rabotat' v kontekste (t.e. ispol'zovat' adresnoe prostranstvo i znacheniya registrov) zadachi, kotoraya prervana ili vyzvala osobuyu situaciyu. Pri 16-mgc-sinhrosignale procedura vhoda v obrabotchik zanimaet 3,6 mks. Podobno lyuboj drugoj procedura preryvaniya ili osoboj situacii imeet dostup ko vsem resursam rabotayushchej zadachi: k ee dannym i kodu, ee registram i steku. Tak i dolzhno byt' dlya bol'shinstva osobyh situacij, poskol'ku v zadache voznikla osobaya situaciya i mozhet potrebovat'sya dostup k dannym zadachi, chtoby etu osobuyu situaciyu razreshit'. Naprimer, obrabotchiku stranichnyh oshibok neobhodimy stranichnye tablicy rabotayushchej zadachi dlya togo, chtoby najti diskovyj adres otsutstvuyushchej stranicy. V ideale preryvaniya dolzhny obrabatyvat'sya zadachami, a ne procedurami, tak kak preryvanie , voobshche govorya, ne otnositsya k zadache, kotoruyu ono preryvaet. Bolee togo, obrabotchik preryvanij dolzhen imet' svoi sobstvennye resursy (naprimer, svoj sobstvennyj stek), a ne vnedryat' v stek kakoj-to zadachi, kotoraya rabotala v moment poyavleniya preryvaniya. S drugoj storony pereklyuchenie zadach trebuet znachitel'no bol'shego vremeni chem vyzov procedury (17 mks vmesto 3,6), poskol'ku processor zapominaet i vosstanavlivaet registry pri pereklyuchenii zadach. Sistemy, kotorye chrezvychajno chuvstvitel'ny ko vremeni reakcii na preryvaniya, mogut obrabatyvat' preryvaniya pri pomoshchi procedur. 3.6.2 Osobye sluchai i registry otladki Podobno bol'shinstvu processorov 80386 imeet komandu kontrol'noj tochki, kotoruyu mozhno ispol'zovat' dlya vyzova otladchika. Odnako otladochnaya apparatura 80386 imeet formu registrov otladki, pokazannyh na ris.3-11. Registry otladki podderzhivayut kontrol'nye tochki dannyh yavlyayutsya vazhnym novovvedeniem, kotoroe mozhet sokratit' vremya otladki na mnogie chasy, t.K. Naprimer, pozvolyaet ustanovit', kogda proishodit nepredusmotrennaya zapis' v struktury dannyh. Registry otladki takzhe sokrashchayut iskazheniya v programmah, neobhodimye dlya zapisi komandy tochek ostanova v kod, osobenno dlya programm, kotorye zashchishcheny ot zapisi ili razdeleny drugimi zadachami. Otladchik 80386 realizuet v vide obrabotchika osoboj situacii s nomerom 1. Processor mozhet neposredstvenno vyzvat' otladchik posle ispolneniya lyuboj komandy (putem ustanovki flaga TF - flaga lovushki poshagovogo ispolneniya), posle pereklyucheniya opredelennoj zadachi ili posle poyavleniya usloviya tochki ostanov, opredelennogo odnim iz `%#(ab`." otladki. Analiziruya registr statusa otladki, obrabotchik otladochnoj osoboj situacii mozhet opredelit', kakaya iz prichin ego vyzvala. Buduchi vyzvan pri pereklyuchenii zadach, otladchik mozhet perezagruzit' registry otladki znacheniyami, podhodyashchimi dlya novoj zadachi. 80386 Mozhet ozhidat' poyavleniya odnovremenno do chetyreh uslovij kontrol'nyh tochek, vyzyvaya obrabotchik otladochnoj osoboj situacii pro poyavlenii odnogo iz uslovij. Kazhdoe uslovie kontrol'noj tochki opredelyaetsya soderzhimym registra otladki, eti registry mogut byt' zagruzheny i zapomneny pri pomoshchi privilegirovannyh formatov komandy MOVE. Uslovie kontrol'noj tochki soderzhit 32-bitnyj linejnyj adres, 2-bitnoe pole dliny i pole dostupa, poslednie dva elementa ukazyvayutsya v polyah registra upravleniya otladkoj DR7. Adres usloviya kontrol'noj tochkoj i dlina formiruyut adresnyj diapazon, kotoryj kontroliruetsya processorom pri kazhdoj ssylke na pamyat'. Pole dostupa opredelyaet tip dostupa, dlya kotorogo processor mozhet vyzvat' osobuyu situaciyu 1. Mogut byt' ukazany 3 tipa dostupa: 1) ispolnenie komandy po ukazannomu adresu; 2) zapis' dannyh v diapazon adresov; 3) chtenie ili zapis' dannyh v diapazone adresov. 3.7Vvod/vyvod Sistemy, baziruyushchiesya na 80386, mogut raspredelyat' ustrojstva vvoda/vyvoda v prostranstvo pamyati processora ili v otdel'noe prostranstvo vvoda/vyvoda. Ustrojstvam vvoda/vyvoda, raspredelennym v prostranstvo pamyati, mozhno obrashchat'sya dlya chteniya ili zapisi, ispol'zuya takie komandy obrashcheniya, kak MOVE, OR ili analogichnye. Ustrojstva, raspredelennye v pamyati, mogut byt' zashchishcheny s pomoshch'yu standartnogo mehanizma zashchity segmenta i stranicy processora 808386. V dopolnenii k svoemu adresnomu prostranstvu processor 80386 imeet 64k-bajtnoe adresnoe prostranstvo vvoda/vyvoda. Ustrojstva, raspredelennye v eto prostranstvo, upravlyayutsya komandami vvoda, vyvoda, vvoda stroki i vyvoda stroki. Pervye dve komandy peredayut bajt, slovo, dvojnoe slovo v ili iz EAX-registra. Poslednie dve komandy peredayut stroku bajtov, slov ili dvojnyh slov v pamyat' ili iz pamyati. Komandy vvoda-vyvoda 80386 chuvstvitel'ny k urovnyu privilegij. V registre flagov imeetsya pole, nazyvaemoe urovnem privilegij vvoda/vyvoda (IOPL), kotoroe opredelyaet minimal'nyj uroven' privilegij , na kotorom rabotayushchaya zadacha mozhet ispolnyat' komandy vvoda/vyvoda (IOPL zagruzhaetsya iz TSS, tak chto zadachi mogut imet' razlichnye IOPL). Naprimer, esli IOPL zadachi raven 1, to zadacha ne mozhet vydavat' komandy vvoda-vyvoda, isklyuchaya sluchai, kogda ona rabotaet na urovne privilegii 0 ili 1. Mehanizm IOPL podderzhivaet operacionnye sistemy s mnogourovnevoj zashchitoj, v kotoryh, naprimer, kritichnye i stabil'nye procedury yadra rabotayut na urovne privilegii 0, a bolee izmenchivye procedury vvoda-vyvoda rabotayut na urovne privilegii 1, v etom sluchae operacionnaya sistema dolzhna tol'ko ustanovit' IOPL ravnym 1, kogda ona sozdaet zadachu, poskol'ku IOPL harakteren dlya zadachi, te zadachi, kotorym mozhno doveryat', mogut ispolnyat' komandy vvoda-vyvoda na prikladnom urovne, pozvolyaya tem samym neposredstvenno rabotat' so special'nymi ustrojstvami, dlya kotoryh ne imeetsya drajvera operacionnoj sistemy. Dlya togo, chtoby realizovat' pryamoj dostup k pamyati (DMA) ot ustrojstv voda/vyvoda, operacionnaya sistema 80386 peredaet d('(g%a*() adres kontrolleru DMA i dolzhna garantirovat', chto segmenty i/ili stranicy, ko kotorym proishodit obrashchenie pri DMA- peredachah , ne budut peremeshchat'sya vo vremya etoj operacii. Odin iz sposobov pometit' stranicy "fiksirovannymi na vremya vvoda-vyvoda" - eto ispol'zovanie odnogo iz treh bitov pol'zovatelya v stranichnoj tablice. ARHITEKTURNAYA SOVMESTIMOSTX 80386 sovmestim na urovne ob®ektnogo koda s 80286 i s 8086. Hotya mozhno prosto ispol'zovat' 80386 kak bystryj 80286 ili kak ochen' bystryj 8086, ih sovmestimost' obladaet dostatochno bol'shoj gibkost'yu. Processor 80386 mozhet vypolnyat' programmy 80286 i 80386 parallel'no, i, ispol'zuya virtual'nyj rezhim 86 processora 80386, sushchestvuyushchie programmy 8086 mogut takzhe ispolnyat'sya parallel'no. Takim obrazom pri pomoshchi 80386 stanovitsya vozmozhnym stroit' sistemy, kotorye mogut parallel'no ispolnyat' programmy, napisannye dlya razlichnyh pokolenij semejstva mikroprocessorov. 4.1Sovmestimost' s 80286 Arhitektura 80286 yavlyaetsya tochnym podmnozhestvom arhitektury 80386. Tak kak processor 80386 raspoznaet vse komandy 80286, registry, deskriptory i t.D., To operacionnaya sistema 80286 i prikladnye programmy mogut byt' pereneseny na analogichnoe oborudovanie, postroennoe na osnove 80386 bez izmeneniya hotya by odnogo bita. Pryamoj perenos, upomyanutyj vyshe, yavlyaetsya naibolee bystrym putem dlya togo, chtoby zapustit' sushchestvuyushchie programmy, napisannye dlya 80286 na sisteme, postroennoj na 80386. S drugoj storony operacionnye sistemy dlya 80386 mogut razrabatyvat'sya tak, chtoby oni podderzhivali sushchestvuyushchie prikladnye programmy dlya 80286, i, pozvolyaya v to zhe vremya, novym prikladnym programmam polnost'yu ispol'zovat' svojstva arhitektury 80386 (naprimer, 32-bitnye parametry i dlinnye segmenty). V takih gibkih razrabotkah novye prikladnye programmy vyzyvayut operacionnuyu sistemu neposredstvenno, peredavaya 32-bitnye parametry. Vyzovy staryh prikladnyh programm, kotorye organizovany v 16-bitnom formate 80286, perehvatyvayutsya i preobrazuyutsya v 32-bitnyj format, a zatem peredayutsya v operacionnuyu sistemu. 4.2Rezhimy real'nogo i virtual'nogo 8086 Processor 80386 mozhet vypolnit' ob®ektnye programmy 80386 vodnom iz 2 rezhimov: real'nom rezhime ili virtual'nom rezhime 86. 80386 Vhodit v real'nyj rezhim pri sbrose. V real'nom rezhime processor obespechivaet bystroe ispolnenie bez zashchity tak, kak na 8086. Mnogie operacionnye sistemy budut pereklyuchat'sya iz real'nogo rezhima v rezhim zashchity posle inicializacii, no takzhe vozmozhno rabotat' vse vremya v real'nom rezhime 8086. Principial'noe razlichie mezhdu real'nym rezhimom 80386 i dejstvitel'nym rezhimom 8086 zaklyuchaetsya v skorosti: programmy 8086, kotorye kritichny po skorosti ispolneniya (naprimer, ispol'zuyushchie rasschitannye vremennye cikly), mogut potrebovat' nebol'shih izmenenij dlya togo, chtoby oni rabotali pravil'no v znachitel'no bolee bystrom real'nom rezhime 80386. No osnovnoe mnozhestvo programm 8086 budet rabotat' bez kakih-libo trudnostej, t.k. oni rabotayut v real'nom rezhime 80286. Virtual'nyj rezhim 86 ustanavlivaet ispolnitel'nuyu sredu 8086 vnutri zashchishchennoj mnogozadachnoj sredy 80386. V to vremya, kak real'nyj rezhim upravlyaet vsem, chto delaet processor, virtual'nyj rezhim 86 mozhet primenyat'sya v izbrannyh zadachah 80386. Kogda processor rabotaet v virtual'nom rezhime 86, on vedet sebya, kak v 8086, no pole pereklyucheniya k normal'noj zadache, processor rabotaet kak 80386 (kotoryj, na samom dele, mozhet interpretirovat' programmy kak dlya 80286, tak i 80386). Takim obrazom virtual'nyj rezhim 86 pozvolyaet operacionnoj sisteme podderzhivat' ispolnenie programm 8086, 80286 i 80386 odnovremenno. V razdele 3 bylo opisano, kak segment sostoyaniya zadachi otrazhaet sostoyanie svoego virtual'nogo processora. Flag VM86 v registre flagov, kotoryj zagruzhaetsya iz TSS, opredelyaet rabotayushchij virtual'nyj processor zadachi kak 8086 ili 80386. Kogda 80386 zagruzhaet svoi registry iz TSS, u kotorogo flag VM86 ustanovlen, processor vhodit v virtual'nyj rezhim 86. Kogda pri posleduyushchem pereklyuchenii zadachi, processor zagruzhaet znacheniya v registr iz TSS, u kotorogo flag VM86 sbroshen, on vyhodit iz virtual'nogo rezhima 86. Takim obrazom ot zadachi k zadache processor emuliruet 80386 ili 8086 soglasno znacheniyu flaga VM86. 80386 Takzhe vyhodit iz virtual'nogo rezhima 86, kogda on vydaet osobuyu situaciyu ili voznikaet preryvanie, i predostavlyaet polnye resursy arhitektury obrabotchiku preryvanij i osobyh situacij. Pri vozvrate iz obrabotchika, vyzvannogo v virtual'nom rezhime 86,80386 avtomaticheski vozvrashchaetsya v virtual'nyj rezhim 86. Tak kak adresnoe prostranstvo 8086 ravno 1 megabajtu, logicheskie adresa, generiruemye zadachej v virtual'nom rezhime 86, popadaet v pervyj megabajt linejnogo adresnogo prostranstva 80386. Mnozhestvo zadach, rabotayushchih v virtual'nom rezhime 86, mogut peresekat'sya drug s drugom, poetomu oni vse dolzhny razdelyat' mladshij megabajt linejnogo adresnogo prostranstva. Operacionnaya sistema mozhet ispol'zovat' stranichnyj mehanizm 80386 dlya peremeshcheniya linejnyh adresnyh prostranstv zadach, rabotayushchih v virtual'nom rezhime 86, v razlichnye oblasti fizicheskogo adresnogo prostranstva. Ispol'zuya stranichnyj mehanizm takim sposobom, ne tol'ko predotvrashchayut nalozhenie zadach, rabotayushchih v virtual'nom rezhime 86, no pozvolyayut operacionnoj sisteme s virtual'noj pamyat'yu obmenivat' stranicy zadach, rabotayushchih v virtual'nom rezhime 86, kak esli by oni byli zadachami 80386. Zadacha, rabotayushchaya v virtual'nom rezhime 86, mozhet vypolnyat' programmu, kotoraya byla napisana dlya vypolneniya na odnozadachnom personal'nom komp'yutere. Takaya programma mozhet soderzhat' komandy, kotorye potencial'no opasny, kogda oni vypolnyayutsya v mnogozadachnoj srede. Naprimer pozvolyaya zadache, rabotayushchej v virtual'nom rezhime 86, vypolnyat' komandu ochistki flaga preryvanij, tem samym zapreshchaya preryvaniya, mozhno ostanovit' v