Czytam poprzez książki "Understanding Linux Kernel" przez Boveta i Cesati. W drugim rozdziale, w dziale "Paging in Linux", autor wspomina, w jaki sposób strona Middle i Upper katalogi są eliminowane w 32 architekturach bez włączonego PAE. Mam problemy z podążaniem za tym, co autor ma na myśli.Poziomy Linux Kernel Memory Zarządzanie przywoławcze
Zostały one luźno w ich leczeniu, a nie czyni całe mnóstwo intuicyjnym sensie.
Dla architektur 32-bitowych bez rozszerzenia adresu fizycznego wystarczają dwa poziomy stronicowania. Linux zasadniczo eliminuje pola Page Upper Directory i Middle katalogu strony, mówiąc, że zawierają one zero bitów. Jednak pozycje Page Upper Directory i Middle Directory w sekwencji wskaźników są zachowywane, aby ten sam kod mógł działać na architekturach 32-bitowych i 64-bitowych. Jądro utrzymuje pozycję dla katalogu Page Upper i Middle Directory, ustawiając liczbę wpisów w nich na 1 i odwzorowując te dwa wpisy na właściwe wprowadzenie strony Global Directory.
Czy ktoś może wyjaśnić to w łatwiejszy sposób?
Okej, więc zastanowiłem się trochę i zobacz, czy to ma sens. Zasadniczo masz sprzęt MMU przechodzący przez hierarchię stron w systemie TLB, dla którego zasadniczo pojedynczy wpis PMD i PUD są niepomne. Jednak w przypadku pozostałej części kodu jądra musimy przedstawić jednolity interfejs stronicowania czteropoziomowego.Tak więc mamy pojedynczy PUD wejścia i pojedynczy wpis PMD, z których emulowany jest tak, by zawierał dokładnie tę samą wartość odpowiadającego wpisu PGD dla tego adresu. – subramanian
Tak. Na procesorach bez PAE, MMU oczekuje tylko niższych dwóch tabel, ale jądro oczekuje wszystkich czterech, więc dwa górne muszą zostać utworzone za pomocą tylko jednego wpisu. Pamiętaj, aby dodać komentarz jako odpowiedź, gdy tylko możesz. – ughoavgfhw
Myślę, że moje wyjaśnienie miało dziury, które Linuxios wyjaśnia mi wyraźnie. więc oznaczę jego odpowiedź jako poprawną. – subramanian