2.7. Segmentace se strankovanim
- Kombinace segmentace a strankovani prinasi vylepseni obou techto technik. Vyuzivaji ji napr. procesory
Motorola 68000 i Intel 80X86.
2.7.1. OS/2 32-bit version
- OS/2 ve 32 bitove verzi na platforme Intel 80X86 vyuziva kombinaci segmentace a strankovani pro
management pameti.
- Maximalni pocet segmentu na proces je 16384 (16k) a kazdy segment muze byt velky max. 4 GB. Velikost
stranky je 4kB.
- Adresovy prostor kazdeho procesu je rozdelen na 2 casti - 8192 segmentu muze byt privatnich pro kazdy
proces a 8192 segmentu muze byt sdilenych. Informace o prvni skupine segmentu jsou ulozeny v local
descriptor table (LDT) o druhe potom v global descriptor table (GDT). Kazda polozka techto
tabulek zabira 8 bytu podrobnych informaci o kazdem segmentu vcetne delky a pocatecni adresy segmentu.
- Logicka adresa je dvojice (selector, offset), kde selektorem je 16-bitove cislo:
Obr. 33 Logicka adresa v systemu OS/2
- s - cislo segmentu
- g - indikuje, je-li segment v GDT nebo LDT
- p - informace pro ochranu pameti
- Offset je 32-bitove cislo udavajici relativni adresu slova v ramci daneho segmentu.
- Vypocetni system I386 obsahuje 6 segmentovych registru adresujicich 6 segmentu, ktere mohou byt
okamzite uzity CPU. Ke kazdemu z registru je pridelen 8-bytovy registr pro prislusne zaznamy z LDT nebo
GDT.
- Fyzicka adresa u I386 je 32-bitove cislo. Select registr ukazuje na prislusnou polozku v LDT nebo GDT. Z
ni jsou uzity delka a pocatecni adresa aktualniho segmentu pro vytvoreni linearni adresy. Nejdrive je
delka segmentu uzita pro overeni regulernosti odkazu na pametove misto. Pokud adresa je mimo dany segment,
je vyvolano preruseni (memory fault). Je-li vse v poradku, pripocte se pocatecni adresa segmentu k offsetu
a vznikne 32- bitova linearni adresa. Tato adresa je modifikovana na fyzickou.
- Jak jiz bylo uvedeno, kazdy segment je strankovan a velikost stranky je 4kB. Tabulka stranek musi tedy
obsahovat vice nez 1 mil. polozek. Kazda polozka zabira 4B, kazdy proces muze pozadovat az 4MB
adresoveho prostoru pro svou tabulku stranek. Takto rozsahle tabulky je moznou pouze stezi implementovat a
I386 to resi dvouurovnovym schematem strankovani.
- Linearni adresa je rozdelena na dve casti - cislo stranky (20 b) a offset (12 b). Cislo stranky je rozdeleno na
ukazatel do adresare stranek (10b) a ukazatel na stranku (10b). Transformaci adresy z logicke na fyzickou
ukazuje Obr. 34
Obr. 34 Linearni adresa v systemu OS/2
- Pro zvyseni rozsahu fyzicke pameti muze I386 swapovat tabulky stranek na disk. V tom pripade je jeden
nepouzity bit v polozkach ukazatel do adresare stranek pouzit pro indikaci toho, zda je dana polozka na disku
nebo v pameti. Je-li na disku, OS uziva 31b cislo pro adresaci tabulky na disku. Tabulka muze byt vlozena do
pameti na zadost.
Obr. 35 Transformace adres u I386
- Strankovani na zadost je vseobecne uznavane jako nejlepsi mechanismus pro vytvoreni virtualni pameti.
Vyzaduje ovsem silnou hardwarovou podporu. Pokud takovy hardware neni k dispozici lze vytvorit virtualni
pamet pomoci segmentace na zadost.
- I80286 nepodporuje strankovani pameti, ale je schopen vytvaret segmenty. System OS/2 instalovany na tuto
platformu vyuziva segmentaci na zadost jako prostredek pro vytvoreni virtualni pameti.
- System opet vyuziva tabulek segmentu pro jednotlive procesy, kde jsou informace o ulozeni, ochrane a
velikosti segmentu. Jelikoz se segment ve fyzicke pameti vyskytovat muze i nemusi, ma kazda tabulka navic
indikacni bit, ktery o tom informuje.
- Je-li adresovan segment, ktery neni ve fyzicke pameti, je vyvolano preruseni (segment fault) stejne jako u
strankovani na zadost. Neni-li ve fyzicke pameti dost mista pro zatazeni noveho segmentu (i po pripadnem
provedenem zhustovani), je nektery ze segmentu v pameti vyswapovan na disk.
- Pro urceni segmentu, ktery ma byt presunut do zalozni pameti vyuziva OS/2 dalsi bit z tabulky segmentu -
accessed bit. Jeho funkce je stejna jako funkce referencniho bitu u strankovani na zadost. Je nastaven
do hodnoty 1 v okamziku, je-li cteno lib. slovo ze segmentu, nebo pokud je do nej zapisovano. System udrzuje
frontu obsahujici polozku pro kazdy segment v pameti. V kratkych casovych intervalech system uklada na
vrchol fronty segmenty s nastavenym access bitem a potom ho nastavi na 0. Timto mechanismem si
udrzuje OS/2 frontu segmentu, kde na vrcholu jsou ty nejpouzivanejsi. Poradi ve fronte muze menit i OS a
zajistit tak neustalou pritomnost nekterych segmentu v pameti.
- Je-li treba vybrat segment pro odlozeni na disk, je vybran ten na konci fronty. Je-li pro zatazeni segmentu
volne misto v pameti, je do nej segment zatazen, aktualizuji se zaznamy v tabulce segmentu a identifikace
segmentu je zarazena na vrchol fronty.
- I segmentace na zadost ma znacne hardwarove naroky, takze s malo vyspelym hardwarem nelze virtualni
pamet budovat. Segmentace na zadost je pouze rozumnym kompromisem nad jeste narocnejsim hardwarem
potrebnym k provozu strankovani na zadost..
Zpet
Obsah
Vpred