Es gibt nur 36 physikalische Adresszeilen, aber ein Seitentabelleneintrag ist 64 Bit lang. Wie prüft die CPU, ob die Adresse gültig ist? Wie ordnet das Linux-Betriebssystem dieselbe virtuelle Adresse in verschiedenen Prozessen unterschiedlichen physischen Adressen zu?
Hier ist der Wikipedia-Artikel über die physikalische Adresserweiterung (PAE). http://en.wikipedia.org/wiki/Physical_Address_Extension .
linux
linux-kernel
x86
Jeff
quelle
quelle
Antworten:
Dies wird von einer Hardware namens Memory Management Unit (MMU) ausgeführt, die die Umwandlung von virtuellen in physische Adressen übernimmt. In Bezug auf eine Adresse, die "gültig" ist, hat jeder Prozess seinen eigenen eindeutigen Adressraum (wodurch ein virtuelles Speicherschema implementiert wird), sodass jede Adresse technisch gültig ist. Denken Sie daran, dass ein Prozess mehr Speicher zuordnen kann, als physisch verfügbar ist.
Die MMU verwendet einen TLB ( Translation Lookaside Buffer ), um die virtuelle Adresse schnell in eine physische Adresse zu decodieren, die sich in einer Seitentabelle befindet .
Dies ist wiederum darauf zurückzuführen, dass jeder Prozess einen eindeutigen virtuellen Adressraum aufweist , der für die Implementierung des virtuellen Speichers von grundlegender Bedeutung ist . Eine virtuelle Adresse für einen bestimmten Prozess wird kartiert gewisse physikalische Speicherhardware (RAM, Festplatte, etc. ...), aber die Zuordnung wird zur Laufzeit durch das Betriebssystem & MMU getan.
quelle