Jaka jest różnica między rozmiarem strony a rozmiarem pozycji tabeli stron?

Najlepsza odpowiedź

Cóż, rozmiar strony to przestrzeń potrzebna na 1 stronę. (To całkiem proste )

Aby mieć tylko trochę tła, tabela stron to tabela konwersji z adresów wirtualnych na fizyczne, których system operacyjny używa do sztucznie zwiększ całkowitą ilość pamięci głównej dostępnej w systemie. Pamięć fizyczna to faktyczne bity znajdujące się pod adresami w pamięci (DRAM), pamięć wirtualna to miejsce, w którym system operacyjny znajduje się w procesach, aby powiedzieć im, gdzie się znajduje, aby wykonywać różne czynności na przykład zezwalaj na 2 ^ 64 bity przestrzeni adresowej, mimo że 2 ^ 34 bity to najczęściej używana pamięć RAM. (2 ^ 32 bity to 4 gigabajty, więc 2 ^ 34 to 16 GB).

Obecnie większość domyślnych rozmiarów tabel stron to 4096 kb dla każdego procesu, ale liczba pozycji tablicy stron może wzrosnąć, jeśli proces potrzebuje więcej miejsca na proces. Rozmiary tabel stron można również początkowo przydzielić mniejsze lub większe ilości lub pamięci, po prostu 4 KB to zwykle najlepszy rozmiar dla większości procesów. Dlatego rozmiar pozycji tabeli stron miałoby dokładnie taką ilość miejsca, jaka mieściłaby dowolny adres w 32-bitowej przestrzeni adresowej.

Rozważmy następujący przykład: rozważmy system z 32-bitową logiczną przestrzenią adresową. Jeśli strona rozmiar w takim systemie to 4 KB (212), wtedy tablica stron może zawierać do 1 miliona wpisów (232/212). Zakładając, że każdy wpis składa się z 4 bajtów , każdy proces może potrzebować do 4 MB fizycznej przestrzeni adresowej dla samej tablicy stron.

Jak to w pełni zrozumieć?

Odpowiedź: 4 bajty (32 bity ) to dokładnie taka ilość miejsca, jaka może pomieścić dowolny adres w 32-bitowej przestrzeni adresowej. Ponieważ 1 milion wpisów po 4 bajty każdy daje 4 MB, proces może potrzebować do 4 MB fizycznej przestrzeni adresowej.

Odpowiedź

strona ta ble jest obsługiwany przez system operacyjny dla każdego procesu. Każdy proces ma własną tabelę stron i dlatego nie musimy przechowywać żadnych identyfikatorów procesów w tabeli stron. Tablica stron odwzorowuje podany logiczny / wirtualny numer strony na rzeczywisty fizyczny adres ramki / strony.

Adres logiczny odwołania do pamięci ma postać:

Adres logiczny:

Numer strony (numer wirtualnej strony) jest używany do przeszukiwania tablicy stron i uzyskania adresu bazowego ramki fizycznej, do której jest odwzorowany. Adres bazowy ramki (f) jest następnie łączony z przesunięciem na stronie (d), aby uzyskać fizyczny adres ramki pamięci jako:

f = page-table [p]

Adres fizyczny:

Rozważmy teraz system z:

1. logiczna przestrzeń adresowa: 32-bitowa 2. rozmiar strony: 4 kB (2 ^ 12) 3. rozmiar pozycji tabeli stron: 4 bajty 4. pamięć fizyczna: 2 GB

Należy pamiętać, że 4 bajty wpisu tablicy strony skutecznie przechowują wiele typów informacji oprócz adresu podstawowego ramki fizycznej. Informacje te mogą służyć do ochrony pamięci (ważny / nieprawidłowy bit), typu dostępu (odczyt / zapis), księgowości itp. Odnoszę się do fizycznego adresu ramki (f), faktycznie odnoszę się do tej konkretnej części 4-bajtowego wpisu.

Obliczmy rozmiar tablicy stron:

Rozmiar tabela stron = (liczba wpisów * rozmiar każdego wpisu).

Biorąc pod uwagę powyższe parametry, 32-bitowy adres logiczny zostanie podzielony na:

lub

.

Teraz możemy obliczyć, że liczba wpisów w tabeli stron (całkowita liczba wirtualnych stron) może wynosić nawet 2 ^ 20. Stąd rozmiar tablicy stron byłby następujący:

(2 ^ 20) * 4 bajty = 4 MB miejsca (na proces).

Tak duża ilość miejsca byłaby wymagana w pamięci fizycznej na tablicę stron każdego procesu. Nie zapominaj, że mamy tylko 2 GB pamięci głównej, a posiadanie 4 MB tego miejsca na tablicę stron każdego procesu może nie być dobrym pomysłem. Ponadto wiele adresów wirtualnych może nie mieć przypisanego fizycznego adresu strony. Ale , nadal rozmiar tabeli stron będzie duży. Nawet jeśli „prawidłowy” bit nie jest ustawiony dla numeru strony wirtualnej, miejsce na niego będzie musiało istnieć w tabeli stron.

W przypadku wspólnego pamięci, posiadanie tablicy stron na proces będzie wymagało wpisu tej samej strony fizycznej w tablicy stron każdego procesu, który ma współdzielony dostęp do tej strony. W ten sposób system będzie utrzymywał wiele wpisów dla tego samego fizycznego adresu ramki. Niezbyt dobre wykorzystanie pamięci fizycznej.

Możemy również zrozumieć, że tablica stron dla każdego procesu będzie zawierać jeden wpis na adres wirtualny. Rozmiar tablicy jest zatem proporcjonalny do rozmiaru tablicy logicznej / wirtualnej przestrzeń adresowa, która może okazać się ogromna.

Naszym celem jest zmniejszenie / zoptymalizowanie ilości pamięci fizycznej wymaganej do przechowywania tablic stron. Odwrócona tabela stron jest jednym z takich rozwiązań.

Odwrócona tabela stron to globalna tabela stron obsługiwana przez system operacyjny dla wszystkich procesów. W całym systemie istnieje tylko jedna tabela stron, co oznacza, że ​​w tabeli stron należy przechowywać dodatkowe informacje, aby zidentyfikować wpisy tabeli stron odpowiadające każdemu procesowi.

Przechowuje jeden wpis na fizyczną ramkę i jest tablicą liniową, w której zawartość w każdej lokalizacji to , a indeks każdej lokalizacji to fizyczny adres ramki. Formuła zmieni się teraz:

= page-table [f]

To od razu oznacza, że ​​wyszukiwania nie mogą już mieć miejsca na wirtualnym numerze strony. Cała tabela musi być przeszukiwana pozycja po pozycji, aby znaleźć pasującą pozycję o numerze pid równym „id” i numerze strony wirtualnej równej „p”. Lokalizacją indeksu odpowiadającą dopasowaniu jest fizyczny adres ramki (f), który następnie w połączeniu z przesunięciem (d) daje adres fizyczny.

Możemy łatwo wywnioskować, że czas wyszukiwania na odwróconej stronie tabela może być znacznie wyższa w porównaniu z prostą tabelą stron .

Jednakże, ponieważ tabela przechowuje jeden wpis na fizyczny adres ramki, aw całym systemie znajduje się pojedyncza tablica stron, ilość pamięci używanej przez odwróconą tablicę stron znacznie się zmniejszyła. Jak?

Rozważ ponownie te same parametry:

1. logiczna przestrzeń adresowa: 32-bitowa 2. wielkość strony: 4 kB (2 ^ 12) 3. wielkość pozycji tablicy stron: 4 bajty. 4. pamięć fizyczna: 2 GB (2 ^ 31)

Liczba pozycji w tabeli stron = Liczba stron fizycznych =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 fizycznych stron lub ramek.

Powiedzmy, że używamy 1-bajtowych identyfikatorów procesów. Rozmiar każdego wpisu tablicy strony będzie następujący:

8 bitów (PID) + 20 bitów ( wirtualny numer strony) + 4 bity (informacje dostępowe) = 32 bity = 4 bajty.

Rozmiar tabeli stron = (2 ^ 19) * 4 = 2 MB dla całego systemu.

Wydajność odwróconych tabel stron jest zwykle rozwiązywana za pomocą haszowanych tabel stron. Jest jednak jeszcze jedna wada używania odwróconych tabel stron oprócz wydajności. Jest to pamięć współdzielona.

Ponieważ jest jeden i tylko jeden wpis w tabeli stron na fizyczną ramkę, która zawiera dokładnie jeden numer wirtualnej strony, nie możemy już mapować tej samej fizycznej ramki na wiele wirtualnych numerów stron w różnych procesach. Istnieją sposoby obejścia tego problemu, ale nie znamy szczegółów, które należy tutaj zapisać .

Źródło – koncepcje systemu operacyjnego (Silberschatz et al)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *