Powiedzmy, że pracujemy z systemem, który ma 40 bitów adresu fizycznego. Całkowita fizyczna przestrzeń adresowa (przy założeniu, że bajtowo-adresowalna pamięć) wynosi bajtów lub 1 TiB. A jeśli adresy wirtualne mają długość 48 bitów, oznacza to, że w pamięci wirtualnej dostępnych jest więcej adresów niż w lokalizacjach w pamięci fizycznej.
Ma to dla mnie sens, ponieważ „nadmiarowe” adresy mogą również odnosić się do lokalizacji dysków twardych. Jednak nie rozumiem, w jaki sposób odbywa się tłumaczenie między adresami wirtualnymi i fizycznymi. Zakładam, że gdzieś jest zapisane mapowanie, które łączy lokalizacje VAS z lokalizacjami fizycznymi. Jeśli istnieje więcej lokalizacji adresów wirtualnych niż fizycznych, w jaki sposób wszystkie te mapowania mogą być przechowywane w pamięci? Wymagane jest co najmniej 48 bitów do przechowywania każdego adresu wirtualnego, a następnie kolejne 40 do przechowywania fizycznej lokalizacji, na którą mapuje. Oczywiście nie można po prostu zapisać mapowania 1: 1 każdego adresu wirtualnego na jego fizyczny odpowiednik, ponieważ mapowanie każdej lokalizacji zajęłoby więcej pamięci niż samej pamięci fizycznej.
Czego dokładnie tu brakuje?
źródło
Odpowiedzi:
Sztuką wykonania tej pracy jest „stronicowanie”. Przenosząc dane z dysku twardego do pamięci fizycznej, nie zabierasz tylko kilku bajtów. Przynosisz całą stronę. 4k bajtów jest bardzo częstym rozmiarem strony.
Jeśli potrzebujesz tylko śledzić strony, a nie poszczególne bajty, mapowanie staje się znacznie tańsze. Jeśli masz 48-bitową przestrzeń adresową i 4096 stron bajtów, musisz tylko śledzić, która z 2 ^ 36 stron (około 69 miliardów stron). To o wiele łatwiejsze! Zapis miejsca, w którym znajdują się wszystkie strony, znany jest jako „tablica stron”.
Jeśli faktycznie potrzebujesz 1-256 TiB pamięci, to rezygnacja z kilku gigabajtów do przechowywania tej tabeli stron nie jest wielkim problemem. W praktyce będziemy robić takie rzeczy, jak używanie wielopoziomowych tabel stron , co pozwala nam być nieco bardziej wydajne, utrzymując strony tylko dla regionów przestrzeni adresowej, z której faktycznie korzystamy.
źródło