Jaký je rozdíl mezi velikostí stránky a velikostí záznamu v tabulce stránek?

Nejlepší odpověď

No, velikost stránky je prostor potřebný pro 1 stránku. (To je docela jednoduché )

Abychom zde měli jen malé pozadí, tabulka stránek je tabulka převodů z virtuálních na fyzické adresy, které operační systém používá pro uměle zvýšit celkové množství hlavní paměti dostupné v systému. Fyzická paměť jsou skutečné bity umístěné na adresách v paměti (DRAM), virtuální paměť je místo, kde operační systém leží na procesech, aby jim řekl, kde je, aby mohl dělat věci jako povolit 2 ^ 64 bitů adresního prostoru navzdory skutečnosti, že 2 ^ 34 bitů je nejvíce používaná RAM. (2 ^ 32 bitů jsou 4 gigabajty, takže 2 ^ 34 je 16 GB.)

Nyní je většina výchozích velikostí tabulky stránek 4096 kb pro každý proces, ale počet položek tabulky stránek se může zvýšit, pokud proces potřebuje více procesního prostoru. Velikosti tabulky stránek lze také zpočátku přidělit menší nebo větší množství nebo paměť, je to jen to, že 4 kB je obvykle nejlepší velikost pro většinu procesů. Takže velikost položky tabulky stránky by přesně to správné množství prostoru pro uložení libovolné adresy v 32bitovém adresním prostoru.

Pojďme zde zvážit příklad: Zvažte systém s 32bitovým logickým adresovým prostorem. Pokud stránka velikost v takovém systému je 4 KB (212), pak může tabulka stránek obsahovat až 1 milion položek (232/212). Za předpokladu, že každá položka obsahuje 4 bajty , každý proces může vyžadovat až 4 MB fyzického adresního prostoru pouze pro tabulku stránek.

Jak tomu plně porozumět?

Odpověď: 4 bajty (32 bitů) ) je přesně ta správná velikost prostoru pro uložení jakékoli adresy ve 32bitovém adresním prostoru. Protože 1 milion položek po 4 bajtech každý vytvoří 4 MB, proces „může“ vyžadovat až 4 MB fyzického adresního prostoru.

Odpověď

A stránka ta ble je udržováno operačním systémem na základě jednotlivých procesů. Každý proces má vlastní tabulku stránek , a proto nemusíme do tabulky stránek ukládat žádné identifikátory procesu. Tabulka stránek mapuje dané logické / virtuální číslo stránky na skutečnou adresu fyzického rámce / stránky.

Logická adresa pro odkaz na paměť má tvar:

Logická adresa:

Číslo stránky (číslo virtuální stránky) se používá k provedení vyhledávání v tabulce stránek a získání základní adresy fyzického rámce, na který je mapován. Základní adresa rámce (f) se poté zkombinuje s posunem na stránku (d), aby se získala adresa rámce fyzické paměti jako:

f = page-table [p]

Fyzická adresa:

Nyní zvažte systém s:

1. prostor logické adresy: 32bitový 2. velikost stránky: 4KB (2 ^ 12) 3. velikost záznamu tabulky stránky: 4 bajty 4. fyzická paměť: 2 GB

Upozorňujeme, že 4 bajtů položky tabulky stránek efektivně ukládá více typů informací kromě základní adresy fyzického rámce. Tyto informace mohou být pro ochranu paměti (platný / neplatný bit), typ přístupu (čtení / zápis), vedení účetnictví atd. Takže, když Odkazuji na adresu fyzického rámce (f), ve skutečnosti odkazuji na tuto konkrétní část 4bajtového záznamu.

Pojďme vypočítat velikost tabulky stránek:

Velikost tabulka stránek = (počet záznamů * velikost každého záznamu).

Vzhledem k výše uvedeným parametrům bude 32bitová logická adresa rozdělena na:

nebo

.

Nyní můžeme vypočítat, že počet položek v tabulce stránek (celkový počet virtuálních stránek) může být až 2 ^ 20. Velikost tabulky stránek by tedy byla:

(2 ^ 20) * 4bytes = 4MB prostoru (na proces).

Toto velké množství místa by bylo zapotřebí ve fyzické paměti pro tabulku stránek každého procesu. Nezapomeňte, že máme pouze 2 GB hlavní paměti a mít 4 MB tohoto prostoru pro tabulku stránek každého procesu nemusí být dobrý nápad. Mnoho virtuálních adres také nemusí mít namapovanou žádnou fyzickou adresu stránky. Ale , velikost tabulky stránek bude stále velká. I když není pro číslo virtuální stránky nastaven bit „platný“, v tabulce stránek bude muset existovat slot.

V případě sdíleného paměť, mít tabulku stránek na proces bude vyžadovat záznam stejné fyzické stránky v tabulce stránek každého procesu, který má sdílený přístup k této stránce. Systém tak nakonec ponechá více záznamů pro stejnou adresu fyzického rámce. Není velmi dobré využití fyzické paměti.

Můžeme také pochopit, že tabulka stránek pro každý proces bude obsahovat jednu položku na virtuální adresu. Velikost tabulky je tedy úměrná velikosti logické / virtuální adresní prostor, který se ve skutečnosti může ukázat jako obrovský.

Naším cílem je snížit / optimalizovat množství fyzické paměti potřebné k uložení tabulek stránek. Jedním z takových řešení je tabulka obrácených stránek.

Tabulka obrácených stránek je globální tabulka stránek udržovaná operačním systémem pro všechny procesy. V celém systému existuje pouze jedna tabulka stránek, z čehož vyplývá, že je třeba do tabulky stránek uložit další informace, aby bylo možné identifikovat položky tabulky stránek odpovídající každému procesu.

Ukládá jednu položku na fyzický rámec a je lineárním polem, kde je obsah v každém umístění a indexem každého umístění je adresa fyzického rámce. Vzorec se nyní změní:

= page-table [f]

Toto ihned znamená, že k vyhledání na virtuálním čísle stránky již nemůže dojít. Celá tabulka musí být prohledávána po jednotlivých položkách, aby se našla odpovídající položka, která má pid rovné „id“ a číslo virtuální stránky rovné „p“. Umístění indexu odpovídající shodě je adresa fyzického rámce (f), která pak v kombinaci s offsetem (d) dává fyzickou adresu.

Tento čas vyhledání na obrácené stránce můžeme snadno odvodit. tabulka může být výrazně vyšší ve srovnání s jednoduchou stránkovou tabulkou .

Protože však tabulka ukládá jeden záznam na adresu fyzického rámce a v celém systému existuje jedna tabulka stránek, množství paměti použité invertovanou stránkovou tabulkou se podstatně snížilo. Jak?

Zvažte znovu stejné parametry:

1. prostor logické adresy: 32 bitů 2. velikost stránky: 4KB (2 ^ 12) 3. velikost položky tabulky stránky: 4 bajty. 4. fyzická paměť: 2 GB (2 ^ 31)

Počet položek v tabulce stránek = Počet fyzických stránek =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 fyzických stránek nebo rámců.

Řekněme, že používáme identifikátory procesu o velikosti 1 bajt. Velikost každého záznamu tabulky stránek bude:

8 bitů (PID) + 20 bitů ( číslo virtuální stránky) + 4 bity (přístupové informace) = 32 bitů = 4 bajty.

Velikost tabulky stránek = (2 ^ 19) * 4 = 2 MB pro celý systém.

Výkon invertovaných tabulek stránek je obvykle řešen pomocí hašovaných tabulek stránek. Existuje však ještě jedna nevýhoda používání invertovaných tabulek stránek kromě výkonu. Je to sdílená paměť.

Protože existuje jeden a pouze jeden záznam v tabulce stránek na fyzický rámec, která obsahuje přesně jedno číslo virtuální stránky, již nemůžeme mapovat stejný fyzický rámec na více čísel virtuálních stránek v různých procesech. Existují způsoby, jak to obejít, ale nevím o podrobnostech, které sem chcete napsat .

Zdroj – koncepty operačního systému (Silberschatz a kol.)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *