Linux używa wirtualnego systemu pamięci, w którym wszystkie adresy są adresami wirtualnymi, a nie adresami fizycznymi. Te adresy wirtualne są przetwarzane przez procesor na adresy fizyczne.
Aby ułatwić tłumaczenie, pamięć wirtualna i fizyczna są podzielone na strony. Każda z tych stron ma unikalny numer; numer ramki strony.
Niektóre rozmiary stron mogą wynosić 2 KB, 4 KB itp. Ale w jaki sposób określa się ten rozmiar strony? Czy wpływa na to wielkość architektury? Na przykład 32-bitowa magistrala będzie miała 4 GB przestrzeni adresowej.
Sprzęt (w szczególności MMU , który jest częścią procesora) określa, jakie rozmiary stron są możliwe. Nie ma związku z rozmiarem rejestru procesora, a jedynie pośredni związek z rozmiarem przestrzeni adresowej (w tym, że MMU określa oba).
Prawie wszystkie architektury obsługują rozmiar strony 4kB. Niektóre architektury obsługują większe strony (a niektóre obsługują także mniejsze strony), ale 4kB jest bardzo rozpowszechnionym ustawieniem domyślnym.
Linux obsługuje dwa rozmiary stron:
CONFIG_HUGETLB_PAGE
jest to konieczne, aCONFIG_HUGETLBFS
także do większości zastosowań). Odpowiada to drugiemu najgłębszemu poziomowi deskryptorów MMU (co Linux nazywa PMD) (a przynajmniej tak zwykle robi, nie wiem, czy dotyczy to wszystkich architektur).Rozmiar strony to kompromis między zużyciem pamięci, zużyciem pamięci i szybkością.
Większe rozmiary stron są niewielkie w przypadku większości aplikacji, a koszt jest znaczny. Dlatego większość systemów używa tylko stron o normalnym rozmiarze.
Można kwerendy (normalny) rozmiar strony w systemie z
getconf
narzędzia lub funkcji Csysconf
.Korzystanie z dużych stron wymaga zamontowania tam
hugetlbfs
systemu plików immap
pingowania plików.źródło
Rozmiar strony zależy głównie od architektury procesora. Na x86, od czasów procesora 386, który wprowadził tryb chroniony, rozmiar strony wynosił 4 kB.
W trybie x64 mogą być także ogromne strony o wielkości 2 MB. Jednak korzystanie z nich jest nieco skomplikowane.
Więcej informacji na temat wielkości strony można znaleźć w artykule w Wikipedii
źródło
Procesor określa dostępne rozmiary stron. W większości przypadków rozmiar strony zaimplementowanej sprzętowo w procesorach x86 i x86_64 wynosi 4 kb. Jednak system operacyjny może przydzielić więcej niż jedną stronę na raz, jeśli chce, i tym samym skutecznie wdrożyć strony 8kb, 16kb lub 32kb w oprogramowaniu.
Procesory x86 i x86_64 mogą również odpowiednio mieszać strony 4 MB i 2 MB ze standardowymi stronami 4 KB. Jeśli ta funkcja zostanie w ogóle wykorzystana, byłaby przeważnie wykorzystana do przydzielenia przestrzeni jądra.
źródło