Obowiązki zarządzania stronami OS i MMU to dwie strony tego samego mechanizmu, które funkcjonują na granicy architektury i mikroarchitektury.
Pierwsza strona określa "kontrakt" między sprzętem a oprogramowaniem, które go obsługuje (w tym przypadku - OS) - jeśli chcesz używać pamięci wirtualnej, musisz zbudować i utrzymać tabelę stron zgodnie z opisem w tę umowę. Z drugiej strony strona MMU jest jednostką sprzętową odpowiedzialną za wykonanie zadań HW tłumaczenia adresu. Może to, ale nie musi, obejmować optymalizacje sprzętowe, są one zazwyczaj ukryte i mogą być wdrażane na różne sposoby, tak aby działały pod maską, o ile utrzymają stronę sprzętową umowy.
Teoretycznie MMU może zdecydować o wydaniu zestawu dostępu do pamięci dla każdego tłumaczenia (spacer strony) w celu osiągnięcia wymaganego zachowania. Jednakże, ponieważ jest to element krytyczny pod względem wydajności, większość MMU optymalizuje to poprzez buforowanie wyników poprzednich spacerów strony wewnątrz TLB, tak jak cache przechowuje wyniki poprzednich dostępów (faktycznie, w niektórych implementacjach, same pamięci podręczne mogą również przechowywać niektóre z nich dostęp do tabeli stron, ponieważ zwykle znajduje się w pamięci podręcznej). MMU może zarządzać wieloma TLB-ami (większość implementacji rozdziela te na strony danych i kodowe, a niektóre mają TLB drugiego poziomu) i dostarcza z nich tłumaczenie bez zauważenia tego, z wyjątkiem krótszego czasu dostępu.
Należy również zauważyć, że sprzęt musi chronić przed wieloma narożnymi przypadkami, które mogą zaszkodzić spójności takiego "buforowania" TLB poprzednich tłumaczeń, na przykład aliasingu strony lub remapów podczas użytkowania. Na niektórych maszynach, najgorsze przypadki wymagają nawet masowego przepływu zwanego strzelaniem TLB.
Linux może działać na sprzęcie bez MMU, więc jądro musi wiedzieć, jak zrobić tłumaczenie, ale na x86, wierzę, po prostu użyj do tego MMU. –
I sekundę do komentarza Gennadi. W architekturze x86 MMU zajmuje się tłumaczeniem adresów wirtualnych na adresy fizyczne, ale jądro będzie nadal śledzić, które strony należą do jądra i jakie strony należą do procesów użytkownika. Wierzę, że [this] (http://www.tldp.org/LDP/tlk/mm/memory.html) może pomóc w określeniu, jak działają pewne rzeczy. –