Wie wird PAE unter Linux implementiert?

3

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 .

Jeff
quelle
Vielleicht durch Hinzufügen verschiedener Offsets?
H2CO3
2
PT-Einträge sind 64-Bit-Einträge, da sie nur 32 oder 64 Bit breit sein können. Es gibt keine 36-Bit-Ganzzahl, auf die eine CPU normalerweise zugreifen kann ( ohnehin keine echte CPU, ohne Verschiebung und Maskierung). Es spielt jedoch keine Rolle. Das Betriebssystem schreibt 36-Bit-Ganzzahlen mit einer Größe von 64 Bit in den NS-Terminal, und die Anwendung verwendet 32-Bit-Ganzzahlen als Zeiger, auf die der NS-Terminal alles übersetzt, worauf die entsprechenden Einträge zeigen. Einschließlich mehrerer virtueller Adressen, die auf dieselbe physikalische Adresse verweisen. Es interessiert niemanden, die Hardware ordnet nur das, was Sie sagen, dem zu, was Sie sagen.
Damon

Antworten:

1

Es gibt nur 36 physikalische Adresszeilen, aber ein Seitentabelleneintrag ist 64 Bit lang. Wie prüft die CPU, ob die Adresse gültig ist?

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 .

Wie ordnet das Linux-Betriebssystem dieselbe virtuelle Adresse in verschiedenen Prozessen unterschiedlichen physischen Adressen zu?

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.

Durchbruch
quelle