/ / Demand Paging Prepínanie rámcov - pamäť, operačný systém, stránkovanie, virtuálna pamäť

Dopytové stránky na výmenu stránok - pamäť, operačný systém, paging, virtuálna pamäť

Disclaimer: Táto otázka sa týka mojej triedy operačných systémov. Nie je to však pre žiadnu konkrétnu otázku týkajúcu sa domácich úloh.

Tu je to, čo si myslím, že viem o dopyt paging takďaleko. Každý proces má svoju vlastnú stránkovaciu tabuľku. Táto tabuľka obsahuje index logickej adresy, jej zodpovedajúcu fyzickú adresu a platný / neplatný bit, ktorý označuje, či je stránka práve načítaná do hlavnej pamäte.

Ak je stránka prístupná, ak je platný / neplatný bitje nastavená na platnú, potom je stránka jednoducho prístupná v hlavnej pamäti cez záznam logickej adresy v tabuľke. Ak stránka nie je obsiahnutá vo fyzickej pamäti, potom sa vygeneruje chyba stránky. To spôsobí, že sa program pokúsi načítať stránku do pamäte.

Systém najprv skontroluje, či požadovaná adresaje platné. Ak nie, potom sa proces ukončí. Ak je adresa platná, systém kontroluje voľné rámce. Ak sa nájde voľný rámec, systém načíta požadované dáta z disku a umiestni ich do voľného rámca. Platný / neplatný bit je nastavený na platnú v stránkovacej tabuľke, logická adresa je nastavená na predtým voľný rámec a program môže pokračovať vo vykonávaní.

Ak nie sú prítomné žiadne voľné snímky, potom systémmusí vymeniť práve používaný rám a vložiť požadované údaje do rámca. Systém je algoritmus ako LRU, MRU atď. Na určenie, ktorá stránka sa má vymeniť. Systém prepne starú stránku, načíta novú stránku a potom vráti kontrolu procesu.

Tu je moja otázka: Keď sa celý rám vymení, ako to robíplatný / neplatný bit stránkovacej tabuľky, ktorá pristupuje k tomuto rámcu, sa nastaví? To znamená, ako systém vie, že stránkovacia tabuľka procesu pristupuje k rámcu, ktorý sa vymieňa?

Tu je príklad: Predpokladajme, že existujú dva procesy, každý s stránkovacími tabuľkami veľkosti 2 a fyzickou pamäťou veľkosti 2. Nech sú stránkovacie tabuľky procesov nasledovné:

Spracovať virtuálnu pamäť:

Address  Contents
0        "A"
1        "B"

Proces virtuálnej pamäte B:

Address  Contents
0        "C"
1        "D"

Spracovať stránkovaciu tabuľku:

Logical  Physical  Valid/Invalid
0        0         Valid
1        0         Invalid

Tabuľka stránkovania B:

Logical  Physical  Valid/Invalid
0        1         Valid
1        0         Invalid

Hlavná pamäť:

Address  Contents
0        "A"
1        "C"

Predpokladajme, že proces A sa pokúsi o prístup k nemulogická adresa B. Systém vymení obsah hlavnej pamäte 1 a swapy v "D". Ako systém vie nastaviť platný / neplatný bit na neplatnú pre logickú adresu 0 stránkovacej tabuľky 0 v procese?

odpovede:

1 pre odpoveď č. 1

Na stránke je viac riadiacich polítabuliek samotných alebo inde v jadre OS na rozlíšenie medzi pamäťovým rozsahom, ktorý nemá vôbec žiadne mapovanie (nikdy nebol pridelený / zmapovaný alebo nebol uvoľnený / nezmapovaný) a rozsahom pamäte, ktorý ukazuje na pamäťové miesto, ktoré bolo „zamenené“ V obidvoch prípadoch nie je možné pristupovať k rozsahu a prístup má za následok chybu stránky, ale operačný systém spracováva túto chybu stránky inak v týchto prípadoch: V predchádzajúcom prípade sa proces ukončí. pamäte a obnoví mapovanie do stavu, v ktorom sa k údajom dá pristupovať.

OS vie, kde stránky fyzickej pamätesa používajú. To buď skenuje tabuľky stránok, aby zistil, že alebo konzultuje svoje vlastné dátové štruktúry, ktoré udržuje. Ak operačný systém potrebuje ukradnúť stránku z procesu, uloží ju (ak bola upravená), zmení mapovanie tak, aby proces už nemohol priamo pristupovať na túto stránku bez zásahu operačného systému, potom túto stránku znova použije inde, napr. v inom procese vyplnením správnych údajov a ich vhodným mapovaním tak, aby proces mohol pristupovať k údajom.