Tikslai:
1. Suprasti virtualios mašinos sąvoką
2. Suvokti daugiaprogramio darbo esmę.
3. Žinoti segmentų talpinimo atmintyje principus.
Temos studijoms reikalingas laikas: 2 val. teorijos,
2 val. savarankiško darbo.
Pertraukimai naudojami ir užduočių perjungimui daugelio užduočių sistemose. Tarkim turime du procesus (dvi veikiančias programas) kurie turi būti vykdomi kartu. Iš tikrųjų Fon-Neimano architektūros kompiuteriai vienu metu gali vykdyti tik vieną programą. Tačiau yra įmanoma paleisti vieną procesą, o po kurio laiko jo darbą pagal aparatinę taimerio pertrauktį nutraukti ir, išsaugojus atmintinėje šios programos būseną (visų programa pasiekiamų registrų turinius), pereiti prie kitos programos darbo.
Po kurio laiko, įvykus kitam pertraukimui galima įvykdyti atvirkštinį procesą, išsaugoti antrojo proceso būklę atmintyje, užkrauti į registrus pirmojo proceso duomenis ir pratęsti pirmą procesą.
Šiuos procesų perjungimus reikia įvykdyti abiejų programų vykdymo metu, procesų perjunginėjimo dažnis turi būti toks kad vartotojui susidarytų nepertraukiamumo įspūdis t.y. vartotojas manytų, kad dirba su abiem programomis vienu metu. Be jokios abejonės, procesoriaus resursai dalijami abiems procesam proporcingai.
Kad vartotoją toks persijunginėjimas tenkintų, procesoriaus našumas turi būti pakankamas (reikia dar įvertinti ir laiką reikalingą registrų duomenims įrašyti ir skaityti iš atminties procesų persijunginėjimo metu).
Taip OS periodiškai pakankamai dideliu dažniu perjungiant procesoriaus resursus nuo vienos prie kitos programos vykdymo, vartotojui susidarys įspūdis, kad abi programos veikia vienu metu. x86 kartos procesoriai pradedant nuo antros (286) ir ypatingai nuo trečios (386) kartos turi integruotas daugiaužduotines priemones (užduočių skaičius faktiškai neribojamas), dirbančias apsaugotu rėžimu. Užduočių perjunginėjimas vykdomas pagal pertraukimo signalą kurį duoda taimeris. Tai vyksta visiškai „skaidriai“ procesų atžvilgiu. Šio skaidraus perjunginėjimo dėka programuotojui, kuriančiam programą, daugeliu atvejų visiškai nereikia rūpintis sistemos resursų dalijimu. Programai yra skiriama virtuali mašina kurios valdymas perduodamas tai programai, tarsi ji būtų vienintelis procesas.
Žinoma, virtualių mašinų palaikymas iš daugiaprogramės operacinės sistemos reikalauja tam tikrų „pastangų“, operacinei sistemai reikia dalinti ne tik procesoriaus resursus tačiau ir operatyvinę atmintį, ir informacijos laikmenas, ir įvesties/išvesties resursus, kitaip tariant visus realaus kompiuterio resursus. Čia operacinei sistemai į pagalbą ateina specialios priemonės integruotos į I80286, I80386 ir vėlesnių kartų procesorius.
Procesoriai, pradedant Intel 80286, turi technines priemones leidžiančias dirbti daugelio uždavinių aplinkoje.
Programuotojas paprastai neturi niekuo specialiai pasirūpinti. Jo programa tarsi gauna atskirą virtualią mašiną (beje, irgi Fon _ Neimano).
Daugiaprogramio darbo (multitasking) pavyzdys, tai vienos bylos redagavimas, kitos bylos kompiliavimas, trečios bylos perdavimas į kitą kompiuterinę sistemą ir kt.
Bet kuri veikla, kuri gali būti vykdoma lygiagrečiai, vadinama uždaviniu (task) ar procesu.
Operacinė sistema modeliuoja daugiarežimius procesus, realizuodama kiekvieną uždavinį virtualiu procesoriumi.
Multiprogramavimas – tai viena iš procesoriaus valdymo priemonių, naudojamų, kai yra daug konkuruojančių programų atmintinėje. Programos, kurios laukia resursų (pavyzdžiui laukia I/O pabaigos) yra laukimo būklėje. Programos, kurios pasiruošusios vykdymui yra pasiruošimo būsenoje. Operacinės sistemos dispečerio programa išrenka vieną iš pasiruošusių programų vykdymui. Dispečerio programa naudojasi programų surištų kontrolės bloke sąrašu. Pertraukimais atžymima I/O operacijų pradžia/pabaiga.
Įvykus pertraukimui, pertraukimą apdorojanti programa keičia vykdomos programos ir I/O pabaigos laukiančios programos būvius. Po kiekvieno pertraukimo dispečeris startuoja aukščiausio prioriteto programą.
Laiko dalinimas yra taikomos interaktyvioms programoms. Kadangi laikas, kuris praeina, kol vartotojas surenka sekančią komandą ar duomenų porciją yra palyginti ilgas, operatyvinės atmintinės turinys tame intervale gali keistis įkeliant arba iškeliant programas ar jų dalis. Tam, kad kitų vartotojų programos nelauktų, kol viena programa bus baigta vykdyti, ir yra naudojamas laiko kvantavimas.
Programa pirmą kartą įkeliant ją į sistemą, pakliūna į eilę. Ją valdo eilių apdorojimo programa. Atsiradus laisvai erdvei, eiles tvarkanti programa išrenka vieną iš eilėje esančių programų ir patalpina ją į atmintinę. Norint pagreitinti spausdinimą, ar kito kokio nors lėtaeigio įrenginio darbą, sistemoje yra buferizuojami siunčiami į šį įrenginį arba iš jo priimami duomenys.
Mirties taškas sistemoje gaunasi tuo atveju, kai kelios programos turėdamos resursus dar nori tų resursų, kuriuos turi užsiėmusios kitos programos, bet nei viena programa nenori atiduoti savo užimamų resursų. Kai kurios operacinės sistemos yra suprojektuojamos taip, kad jos pajėgios išvengti mirties taško, o kitos leidžia tam įvykti .
Šiuolaikiniuose procesoriuose yra „Hyper-Threading“ technologija, šios technologijos dėka vieną procesorių operacinė sistema traktuoja kaip du.
Uždavinys, tai aplinka, kurioje vykdoma programa.
Uždavinys turi būseną, kuri apibūdinama registrų turiniais. Privilegijų lygiai ir uždaviniai – tai pagrindinės ypatybės, kurios leidžia realizuoti daugelio langų režimus, pereiti prie daugiavartotojiškų operacinių sistemų naudojimo.
Virtuali A uždavinio atmitinė - tai jo plius globalinė adresinė erdvė.
Dirbant daugelio uždavinių aplinkoje, kiekvienam vartotojui priskiriama tam tikra loginė
atmintines sritis. Fiziniame lygyje skirtingų vartotojų programų, duomenų ir dėklo segmentų išdėstymas gali būti visai kitoks.
14.1 pav. Galimas vartotojų segmentų išdėstymas atmintinėje dirbant daugelio uždavinių aplinkoje
Virtuali A uždavinio atmitinė - tai jo plius globalinė adresinė erdvė.
1. Kas tai yra daugiaprogramis darbo režimas?
2. Kokie fiziniai sprendimai būtini procesoriuje jam realizuoti?
3. Kas tai yra virtuali mašina?
4. Kas tai yra uždavinys?
5. Kas tai yra laiko dalinimas?
6. Kas tai yra mirties taškas?
7. Kodėl programoms priskiriami prioritetai?
8. Kas tai yra procesas?
9. Trumpai paaiškinkite kaip dispečeris valdo procesorių multiprogramavimo atveju.
10. Kas tai yra pertraukimai? Kaip jie valdomi?
11. Trumpai paaiškinkite, kaip daugiaprogramavimo sistemoje dispečeris reaguoja į pertraukimus valdydamas procesorių.
1. Fon-Neimano architektūros kompiuteriai vienu metu gali vykdyti tik vieną programą. Tačiau yra įmanoma paleisti vieną procesą, o po kurio laiko jo darbą pagal aparatinę taimerio pertrauktį nutraukti ir, išsaugojus atmintinėje šios programos būseną (visų programa pasiekiamų registrų turinius), pereiti prie kitos programos darbo.
2. Šiuos procesų perjungimus reikia įvykdyti abiejų programų vykdymo metu, procesų perjunginėjimo dažnis turi būti toks kad vartotojui susidarytų nepertraukiamumo įspūdis t.y. vartotojas manytų, kad dirba su abiem programomis vienu metu. Be jokios abejonės procesoriau resursai dalijasi abiem procesam proporcingai.
3. OS periodiškai pakankamai dideliu dažniu perjungiant procesoriaus resursus nuo vienos prie kitos programos vykdymo, vartotojui susidarys įspūdis, kad abi programos veikia vienu metu. x86 kartos procesoriai pradedant nuo antros (286) ir ypatingai nuo trečios (386) kartos turi integruotasdaugiaužduotines priemones (užduočių skaičius faktiškai neribojamas), dirbančias apsaugotu rėžimu.
4. Užduočių perjunginėjimas vykdomas pagal pertraukimo signalą kurį duoda taimeris tai vyksta visiškai „skaidriai“ procesų atžvilgiu.
5. Žinoma virtualių mašinų palaikymas iš daugiaprogramės operacinės sistemos reikalauja tam tikrų „pastangų“, operacinei sistemai reikia dalinti ne tik procesoriaus resursus, tačiau ir operatyvinę atmintį, ir informacijos laikmenas, ir įvesties/išvesties resursus, kitaip tariant visus realaus kompiuterio resursus.
6. Daugiavartotojiška operacinė sistema šiuo atveju turi užtikrinti ne tik procesoriaus darbo laiko paskirstymą uždaviniams, bet ir pagrindinės atmintinės, išorinių atminties ir įvesties – išvesties, komunikacijos įrenginių, tai yra visų realaus kompiuterio resursų paskirstymą.
7. Procesoriai, pradedant Intel 80286, turi technines priemones leidžiančias dirbti daugelio uždavinių aplinkoje.
8. Bet kuri veikla, kuri gali būti vykdoma lygiagrečiai, vadinama uždaviniu (task) ar procesu. Uždavinys, tai aplinka, kurioje vykdoma programa.
9. Uždavinys turi būseną, kuri apibūdinama registrų turiniais. Privilegijų lygiai ir uždaviniai –tai pagrindinės ypatybės, kurios leidžia realizuoti daugelio langų režimus, pereiti prie daugiavartotojiškų operacinių sistemų naudojimo.
10. Operacinė sistema modeliuoja daugiarežimius procesus, realizuodama kiekvieną uždavinį virtualiu procesoriumi.
11. Multiprogramavimas – tai viena iš procesoriaus valdymo priemonių, naudojamų, kai yra daug konkuruojančių programų atmintinėje.
12. Operacinės sistemos dispečerio programa išrenka vieną iš pasiruošusių programų vykdymui. Dispečerio programa naudojasi programų surištų kontrolės bloke sąrašu. Pertraukimais atžymima I/O operacijų pradžia/pabaiga.
13. Po kiekvieno pertraukimo dispečeris startuoja aukščiausio prioriteto programą.
14. Laiko dalinimas yra taikomos interaktyvioms programoms. Kadangi laikas, kuris praeina, kol vartotojas surenka sekančią komandą ar duomenų porciją yra palyginti ilgas, operatyvinės atmintinės turinys tame intervale gali keistis įkeliant arba iškeliant programas ar jų dalis.
15. Programa pirmą kartą įkeliant ją į sistemą, pakliūna į eilę. Ją valdo eilių apdorojimo programa. Atsiradus laisvai erdvei, eiles tvarkanti programa išrenka vieną iš eilėje esančių programų ir patalpina ją į atmintinę.
16. Mirties taškas sistemoje gaunasi tuo atveju, kai kelios programos turėdamos resursus dar nori tų resursų, kuriuos turi užsiėmusios kitos programos, bet nei viena programa nenori atiduoti savo užimamų resursų.
17. Šiuolaikiniuose procesoriuose yra „Hyper-Threading“ technologija, šios technologijos dėka vieną procesorių operacinė sistema traktuoja kaip du.
Tikslai:
- Suprasti procesoriaus darbo realiame ir virtualiame režimuose skirtumus.
- Suvokti virtualios atminties organizavimo esmę.
- Žinoti selektorių ir aprašų taikymo principus.
- Paaiškinti virtualių adresų transliavimą į fizinius
Temos studijoms reikalingas laikas: 1,8 val. teorijos.
Šiuolaikiniai kompiuteriai vienu metu gali vykdyti kelias programas (pseudolygiagretus ir lygiagretus darbas). Kiekviena tokia programa (procesas) turi atskirą kodo ir duomenų sritį. Mechanizmas, kuris užtikrina sąlygas keliems procesams vykti vienu metu, korektiškai pasidalijant atmintinę ir teisingai vykdant informacijos adresavimą, bei programos loginių adresų transformavimą į fizinius adresus, vadinamas VIRTUALIĄJA ATMINTINE.
1983 m. Intel sukūrė procesorių 80286, o 1984 m. IBM jį panaudojo IBM PC / AT (advanced technology ) kompiuteriui. 286-me yra realus (real) ir virtualus (virtual) darbo režimai.
Natūraliu mikroprocesoriaus 80286 darbo režimu yra apsaugotas virtualaus adreso režimas. Jis nustatomas PE bitu būsenos žodyje (MSW). Vienintele priemone grįžti iš apsaugoto į realų režimą yra techninis sistemos nustatymas į išeities būseną.
Realiame režime atmintinė suskirstyta į segmentus: CS (kodo), DS(duomenų), ES (papildomą duomenų ), SS (steko).
Jie gali persidengti. Fizinis adresas gaunamas sumuojant 16 bitų efektyvųjį adresą su segmento adresu padaugintu iš 16 (kaip ir I8086 procesoriuje). Segmento viduje baitai randami, naudojant 16 bitų postūmį (off set).
Šis režimas skirtas Windows 3.0 versijai, 8086/8088 procesoriams ir yra analogiškas MS-DOS režimui. Vartotojui prieinama tik iki 640 KB operatyviosios atminties. Šiame režime mikroprocesorius imituoja labai greitą 8086 mikroprocesorių. Jame neveikia nei atmintinės apsauga 4 lygiais, nei virtuali atmintinės adresacija. Dirbdamas su operacine sistema DOS, MP praktiškai neperžengia 1 MB pagrindinės atmintinės adresavimo ribos. Dirbama vienprogramiu režimu.
Tam, kad virtualiame režime procesorius galėtų lygiagrečiai dirbti su keliomis programomis ir būtų išvengiama vienų programų neteisėtų kreipčių į kitas arba jų duomenis, o taip pat, kad reikalingų programų ar duomenų segmentai reikiamu metu iš išorinių kaupiklių patektų į pagrindinę atmintinę, buvo būtina procesoriaus architektūrą papildyti techninėmis priemonėmis, kurios leistų operacinėms sistemoms sklandžiai organizuoti daugiaprogramį duomenų apdorojimą.
Pirmas uždavinys buvo - visą informaciją, būtiną programai vykdyti, nepriklausomai nuo to kur ji realiai yra konkrečiu laiko momentu, adresuoti taip, tarsi ji būtų saugoma operatyviojoje atmintinėje. Šią problemą pavyko išspręsti įdiegus virtualią atmintinės adresaciją.
Kita problema susieta su vienų programų galimos įtakos kitoms eliminavimu realizuota pritaikius atmintinės apsaugos keliais prioritetiniais lygiais sprendimus.
Virtuali atminties organizacija ir atminties apsauga keliais prioritetiniais lygiais negalima viena be kitos, kadangi jos realizuojamos iš esmės taikant tuos pačius techninius resursus.
Virtualiame režime kaip ir realiame taip pat naudojami segmentai ir postūmis. Tačiau čia segmento starto adresas paskaičiuojamas ne pridedant keturis nulius prie segmento registro turinio, bet gaunamas iš lentelių, kurias indeksuoja segmentų registrai.
Deskriptoriai - tai specialios esybės, atpažįstamos MMU apsaugotame režime. Automatiškai į deskriptorius kreipiamasi vykdant tarpsegmentines komandas JMP, CALL, INT ir pertraukčių aptarnavimo procedūras.
Uždavinių vykdymo tvarkai nustatyti naudojami selektorius (selector) ir aprašai (descriptor) uždavinių segmente procedūroms aprašyti. Operacinei sistemai skiriama 1 globalinė GDT (global descriptor table), o kiekvienam vartotojui - po lokalinę LDT (local descriptor table) deskriptorinę lentelę.
Kiekvienas uždavinys gali turėti tam tikrą sistemos pločio (systemwide) loginio adreso erdvę, kuri patalpinama į globalinę aprašymų lentelę ir loginę adresų erdvę, kuri patalpinama į vietinę aprašymų lentelę. Šiose lentelėse gali būti iki 8.192 aprašymų (desricptors) kiekvienoje. Kartu jos visos sudaro uždavinio loginio adreso erdvę
Priklausomai nuo informacijos deskriptoriuose, mikroprocesorius vykdo specialius veiksmus. Dirbant šiuo rėžimu, keičiasi segmentinių registrų funkcijos; jie tarnauja selektoriais deskretorinėms lentelėms išrinkti.
Paprastai deskriptorinės lentelės saugomos pagrindinėje atmintinėje, tačiau pagrindinėje atmintinėje esančių segmentų deskriptoriai saugomi priešatmintinėje. Dėl to žymiai padidėja kreiptis į juos sparta,
Kiekviena deskriptorinė ląstelė patalpinama į tris laukus: segmento ilgį, kreipties teisę ir adreso bazę. 80286 procesoriaus deskriptorinės lentelės formatas pateiktas 15.1 pav., 0 80836 – 15.2 pav.
Segmento ilgis
|
Kreipties teisė
|
Adreso bazė
| |
CS
| |||
DS
| |||
ES
| |||
SS
| |||
15 01
|
48 32
|
31 24
|
23 0
|
15.1 pav. Deskriptorinės lentelės formatas 80286 procesoriuje
Segmentiniai registrai
|
fizinis bazinis adresas
|
segmento riba
| ||||||||||
selektorius
|
CS
|
-
| ||||||||||
selektorius
|
SS
|
-
|
-
|
-
| ||||||||
selektorius
|
DS
|
-
|
-
|
-
| ||||||||
selektorius
|
ES
|
-
|
-
|
-
| ||||||||
selektorius
|
FS
|
-
|
-
|
-
| ||||||||
selektorius
|
GS
|
-
|
-
|
-
| ||||||||
15 0
|
36 0
|
15.2 pav. Deskriptorinės lentelės formatas 803286 procesoriuje
Selektorius tiek viename, tiek kitame procesoriuje tarnauja tik kaip konkretaus deskriptoriaus numeris(adresas).
Tam, kad du skirtingi procesai nemaišytų vienas kitam (neapsižiūrint ar piktybiškai), būtina taikyti kritinių resursų apsaugos priemones. Šiuolaikinės operacinės sistemos palaiko apsaugotą procesoriaus darbo režimą. Jame apsaugos priemonės realizuojamos aparatiniu lygiu. Kadangi programa gali bendrauti su kompiuterio posisteme tik tik per atminties erdvę ir įvesties – išvesties prievadus bei pertrauktis, todėl visų šių trijų tipų resursus būtina apsaugoti. Sudėtingiausia yra atminties apsauga.
Operacinė sistema kiekvienam procesui išskiria atminties sritis – segmentus, turinčius įvairią paskirtį ir skirtingas kreipties į juos teises. Iš vienų segmentų duomenis galima tik nuskaitinėti, į kitus galimas ir įrašymas. Programų komandų segmentai išsiskiria tuo, kad komandos išrenkamos ir vykdomos tik iš jų. Jei tokio ribojimo nebūtų, pasitaikytų atvejų, kad procesorius duomenis segmentuose bandytų traktuoti, kaip komandas ir procesorius pradėtų elgtis nenuspėjamai, tai paprastai įvardijama procesoriaus „išlėkimu“. Apsauga to daryti neleidžia.
Tais atvejais, kai komandų segmentą prisieina modifikuoti, jis paskelbiamas duomenų segmentu, į kuri įrašinėti galima.
I80386 procesoriuje atsirado ir puslapinės atminties peradresavimo galimybės. Dabar bet kuris puslapis (fiksuoto ilgio sritis) virtualios loginės atminties gali būti perkeliama į bet kurią fizinės atminties sritį. Toks perkėlimas galimas panaudojant specialias puslapinio peradresavimo lenteles. Jose be ryšio tarp adresų yra nuorodos apie tai, ar šis puslapis šiuo metu yra pagrindinėje atmintyje. Šiuo metu procesoriui nereikalingas puslapis gali būti iškeliamas į kaupiklį.
Paraišką įkelti į operatyviąją atmintį konkretų puslapį išduoda pats procesorius (programuotojo kokių nors pastangų tam nereikia). Procesorius suformuos pertauktį, o operacinės sistemos speciali programa suras laisvą atminties sritį ir įkels į ją reikalingą segmentą. Tokios srities neradus, pasirūpins, kad būtų persiųstas į kaupiklį šiuo metu nenaudojamas puslapis.
Taigi visiems procesams, vykdomiems kompiuteryje pseudolygiagrečiai, skiriama virtuali atmintis, kurios ribas apibrėžia fizinės operatyviosios atminties ir kaupiklio atmintinės, skirtos puslapiams persiuntinėti talpa.
Apsaugotame režime procesorius atskleidžia visas savo galimybes. Šiame režime atsiranda ne tik galimybė padidinti adresuojamos operatyviosios atmintinės erdvę iki 4 GB, palaikomi net keli atmintinės organizavimo moduliai: plokščiasis, daugiasegmentinis ir puslapinis.
Pagrindinis apsaugoto režimo privalumas – daugelio uždavinių režimo palaikymas.
Virtualioji atmintis (angl. virtual memory) - tai šiuolaikiniuose kompiuteriuose populiarus pagrindinės atminties padidinimo būdas: operatyvioji atmintis ir dalis išorinės atminties (swap sritis) naudojama kaip viena sistema. Šiuo atveju duomenys, esantys operatyviojoje atmintyje gali būti kuriam laikui išsaugomi išoriniame įrenginyje tam, kad efektyviau būtų panaudota turimą fizinė atmintis. Vėliau, esant reikalui, duomenys iš išorinio įrenginio perkeliami atgal į operatyviąją atmintį.
Linux operacinėje sistemoje tam dažnai naudojami netgi atskiri disko skirsniai, kuriuos galima sistemai dirbant įjungti ir išjungti tam skirtomis komandomis.
Valdydamos atmintį, operacinės sistemos naudoja šiuos metodus:
Ø Puslapiavimas (paging)
Ø Mainai (swaping)
Pirmuoju atveju į išorinį įrenginį perkeliama tam tikra, logines ribas turinti atminties zona, pvz., procesas ar jo loginė dalis (pvz., funkcija). Toks metodas dažniau naudojamas primityviose OS, pvz., DOS arba realizuojamas paskirose programose. Gana panašiai veikia dinaminės bibliotekos, kurios į atmintį įrašomos tik tam laikui, kol jos naudojamos.
Antruoju atveju atmintis sudalijama nedideliais vienodo dydžio puslapiais. Toks metodas leidžia paprasčiau organizuoti procesų valdymą, supaprastina operacinės sistemos atliekamą atminties tvarkymą, pavyzdžiui, loginio atminties adreso perskaičiavimą į fizinį. Šis metodas gali reikalauti specifinių, atminties valdymą palaikančių procesorių.
Virtualiojo adreso transformacija į fizinį vadinama adresų transliacija.
Taikomi keli virtualiųjų adresų transliavimo į fizinius adresus būdai. Apibendrinta virtualaus adreso keitimo į fizinį schema pateikta 15.5 pav.
15.3 pav. Virtualaus adreso translaivimo į fizinį mechanizmas
Pagal selektorių išrinkto deskriptoriaus bazinis adresas susumuojamas su komandoje nurodytu poslinkiu ir gaunamas linijinis adsresas, pagal kurio dalis nustatomas puslapis ir konkretus adresas jame, kuriuo vykdoma kreiptis.
15.4 pav. pateiktas pagal šią schemą formuojamo realaus 24 bitų adreso pavyzdys.
15.4 pav. Segmentinis atminties adresavimas
Norint paspartinti kreipinius į puslapių lentelę, reikia puslapių lentelės dalį saugoti ne pačiame procesoriuje (nes puslapių lentelė užimtų daug vietos) , o specialioje priešatmintinėje, kuri yra procesoriuje. Kiekvienas tokios priešatmintinės įrašas užtikrina greitą transliaciją, kreipiantis net į 1000 žodžių.
Kombinuotas puslapių ir segmentų metodas (MS-Windows, OS/2) pateiktas 15.6 pav.
virtualinis adresas =
segm.+ pusl.+ poslinkis
|
fizinis adresas =
bloko numeris + poslinkis
| |
Proceso segmentų lentelė
|
Segmento puslapių lentelė
| |
15.5 pav.Kombinuotas puslapių ir segmentų metodas
Interfeisas sujungia PP su RAM. Instrukcijos registras saugo iš RAM paimtą programos instrukciją.
Dekoderis instrukciją paverčia valdymo blokui suprantamais signalais. Valdymo įtaisas valdo instrukcijos vykdymą. ALU, vykdymas valdymo įtaiso komandas, atlieka veiksmus. Registrai saugo ALU darbo tarpinius rezultatus. Segmentavimo ir puslapiavimo įtaisai atėjusį kodą paverčia RAM adresu. Į RAM siunčiamas rezultatas arba iš jos paimami duomenys.
Procesoriaus 80386 loginių adresų erdvė gali būti padalinta į vieną ar daugiau 1-4 gigabaitų segmentus. Segmentai gali būti individualiai apsaugoti privilegijų lygiais ir selektyviai panaudojami įvairiuose uždaviniuose. Procesoriaus 80386 programa potencialiai gali kreiptis į daugelį segmentų. Todėl loginis adresas turi identifikuoti segmentą.
15.6 pav. CPU pagrindiniai įtaisai, jų tarpusavio ryšiai ir veikimas
Loginis adresas susideda iš 16 bitų segmento selektoriaus (segment selector) ir 32 bitų poslinkio (off set) į pasirinktą segmentą. Procesorius 80386 nustato segmento adresą, naudodamas selektorių kaip indekso rodiklį į aprašymų lentelę (descriptor table), kurioje šis indeksas saugomas. Procesorius sumuoja loginio adreso postūmio dalį su bazės adresu, kurį gavo iš segmento aprašo (segment,s descriptor) operando adresui sukurti.
Violation - proceso bandymas adresuoti jam nepriklausomą atmintį
Ribiniai registrai (limit registers) saugo viršutinius skiriamų blokų adresus.
Atminties valdymas apima ne tik atminties priskyrimą programoms. RAM turinį galima labai lengvai keisti. Kai daug programų dalinasi atmintimi, yra galimybė, kad viena programa gali pakeisti turinį atminties, priklausančios kitai programai. Taigi atminties valdymas turi užtikrinti tai, kad bet kokia aktyvi programa būtų apsaugota viena nuo kitos poveikio. Paprastai operacinė sistema įsimena sritį, priskirtą konkrečiai programai. Jei programa bando modifikuoti ( arba bent skaityti) turinį atminties, nepriklausančios tai programai, įsikiša operacinės sistemos atminties apsaugos paprogramės ir neleidžia to daryti vartotojo programai.
Puslapiavimo sistemose specialus registras saugo aktyvaus proceso maksimalų puslapio numerį. Poslinkis negali viršyti puslapio dydžio. Puslapių turinys paprastai nežinomas, tad retai bendrai naudojamas.Segmentavimas atspindi loginę programos struktūrą, segmentų turinys - tai programuotojo apibrėžtos procedūros ir duomenys. Todėl priėjimo kontrolė ir bendras segmentų naudojimas nesunkiai įgyvendinami naudojant segmento deskriptoriaus atributus.
1. Kokios programos yra rezidentinės ir kokios laikinos? Kas tai yra laikina sritis?
2. Koks skirtumas tarp lygiagretaus ir konkuruojančio programų vykdymo?
3. Vienas procesorius gali vykdyti programas konkuruojančiu principu, o ne lygiagrečiai, kodėl?
4. Koks skirtumas atmintinės valdyme esant fiksuotiems atmintinės skyriams ir dinaminiam atmintinės valdymui?
5. Segmentacija ir/arba puslapiavimas gali sumažinti fragmentaciją, nes programa talpinama ne į vientisą sritį. Trumpai paaiškinkite ką tai reiškia.
6. Skirtumai tarp segmentacijos ir puslapiavimo.
7. Paaiškinkite puslapiavimą ir segmentaciją.
8. Paaiškinkite dinaminę adreso transliaciją.
9. Kodėl reikalinga atmintinės apsauga?
10. Kaip panaudojamas programų dalių persidengimas?
11. Kas tai yra virtuali atmintinė?
12. Kokie yra skirtumai tarp virtualios atmintinės, išorinio puslapiavimo įrenginio bei realios atmintinės?
13. Koks skirtumas tarp išankstinio puslapio įkėlimo ir įkėlimo pagal poreikį?
14. Trumpai paaiškinkite perkrovimus susijusius su puslapiavimu.
15. Trumpai paaiškinkite mainus (Swapping) , laiko dalinimą bei buferizaciją.
16. Trumpai paaiškinkite kaip tvarkomos procesų įkėlimo eilės. Skirtumai tarp programos vidinio ir išorinio prioriteto.
17. Kas yra mirties taškas?
1. MP turi virtualios atmintinės adresacijos darbo režimą.
2. MP dirbant virtualios atmintinės režimu, realizuojama atmintinės apsauga 4-iais lygiais.
3. Apsaugotame režime segmentų registrai naudojami, kaip selektoriai deskriptorių išrinkimui iš deskriptorinių lentelių.
4. Failų, esančių pagrindinėje atmintinėje, deskriptoriai saugomi priešatmintinėje.
5. Failų, esančių išorinėje atmintinėje, deskriptoriai saugomi pagrindinėje atmintinėje.
6. Esminis virtualios adresacijos (apsaugoto) režimo privalumas tas, kad jis leidžia darbą daugelio uždavinių aplinkoje.
7. Šis darbo režimas MP 80286 įmanomas tik dirbant su daugiavartotojiškomis operacinėmis sistemomis.
8. DOS aplinkoje MP 80286 dirba tik realios adresacijos režimu.
9. Kokie yra skirtumai tarp virtualios atmintinės, išorinio puslapiavimo įrenginio bei realios atmintinės?
10. Koks skirtumas tarp išankstinio puslapio įkėlimo ir įkėlimo pagal poreikį?
11. Trumpai paaiškinkite perkrovimus susijusius su puslapiavimu.
12. Trumpai paaiškinkite mainus (Swapping) , laiko dalinimą bei buferizaciją.
13. Trumpai paaiškinkite kaip tvarkomos procesų įkėlimo eilės. Skirtumai tarp programos vidinio ir išorinio prioriteto.
14. Kas yra mirties taškas?
Tikslai:
1. Išmanyti 32 skilčių procesorių programinį modelį.
2. Suvokti 32 skilčių procesorių komandų sistemų ypatumus.
Temos studijoms reikalingas laikas: 0,2 val. teorijos.
80386 procesoriaus yra pirmasis 32 bitų MP. Jis gali adresuoti 4 GB realios atmintinės ir 264 - 64 terabaitus (trilijonus) virtualios atmintinės.
16.1 pav. 80386 programinis modelis
Virtualios atmintinės operacinė sistema visus segmentus ir puslapius patalpina į didelę disko erdvę - swap area - pasikeitimo erdvę . Realioje (mažesnėje) atmintinėje saugomi tik dažniausiai naudojami segmentai ir puslapiai. Programos gali būti vykdomos pagal skirtingas operacines sistemas MS-DOS irUNIX .
Jo programinis modelis yra tipinis visų 32 skilčių x86 procesorių šeimai. Tai leidžia įvesti 16 bitų programinę įrangą į 32 bitų sistemą . 386-to instrukcijas galima paskirstyti į 9 kategorijas :
· Duomenų perdavimo (data transfer),
· Aritmetinis (arithmetic),
· Perstūmimų ir rotacijos (shift/rotate),
· Darbo su eilutėmis (string manipulation),
· Darbo su bitais (bit manipulation)
· Valdymo perdavimo (control transfer),
· Aukšto lygio kalbos,
· Operacinės sistemos aprūpinimo (operating system support),
· Procesoriaus valdymo (processor control).
Kiekviena instrukcija yra vidutiniškai 3,2 baitų ilgio. 386-tas turi 16 instrukcijų eilę vidutiniškai 5 instrukcijoms saugoti. Operandai gali būti 8,16 ar 32 bitų ilgio. Kai vykdomos 86 - to ar 286 - to instrukcijos, operandai būna 8 ar 16 bitų ilgio.
1. Kas pasikeitė procesoriaus programiniame modelyje lyginant su 80286 ir ankstesniais procesoriais?
2. Kodėl įvesti papildomi segmentiniai registrai?
3. Po kiek skilčių turi IP ir F registrai?
1. 80386 procesoriaus yra pirmasis 32 bitų MP.
2. Jis gali adresuoti 4 GB realios atmintinės ir 264 - 64 terabaitus (trilijonus) virtualios atmintinės.
3. Virtualios atmintinės operacinė sistema visus segmentus ir puslapius patalpina į didelę disko erdvę - swap area - pasikeitimo erdvę .
4. Realioje (mažesnėje) atmintinėje saugomi tik dažniausiai naudojami segmentai ir puslapiai. Programos gali būti vykdomos pagal skirtingas operacines sistemas MS-DOS ir UNIX .
5. Bendrieji registrai yra 32 skilčių.
6. Įvesti du papildomi segmentiniai registrai.
7. 386-to instrukcijas galima paskirstyti į 9 kategorijas : duomenų perdavimo (data transfer), aritmetinis (arithmetic), perstūmimų ir rotacijos (shift/rotate), darbo su eilutėmis (string manipulation), darbo su bitais (bit manipulation) valdymo perdavimo (control transfer), aukšto lygio kalbos Operacinės sistemos aprūpinimo (operating system support), procesoriaus valdymo (processor control).
8. Kiekviena instrukcija yra vidutiniškai 3,2 baitų ilgio.
Komentarų nėra:
Rašyti komentarą