GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen 32-Bit-PAE- und 64-Bit-Kernels?

Der Kernel sieht den physischen Speicher und bietet einen Blick auf die Prozesse. Wenn Sie sich jemals gefragt haben, wie ein Prozess 4 GB Speicherplatz haben kann, wenn Ihre gesamte Maschine nur 512 MB RAM hat, dann deshalb. Jeder Prozess hat seinen eigenen virtuellen Speicherplatz. Die Adressen in diesem Adressraum werden entweder physischen Seiten oder dem Auslagerungsbereich zugeordnet. Wenn Speicherplatz ausgelagert werden soll, müssen sie zurück in den physischen Speicher ausgelagert werden, bevor Ihr Prozess auf eine Seite zugreifen kann, um sie zu ändern.

Das Beispiel von Torvalds in der Antwort von XQYZ (DOS highmem) ist nicht zu weit hergeholt, obwohl ich seiner Schlussfolgerung nicht zustimme, dass PAE im Allgemeinen eine schlechte Sache ist. Es hat spezifische Probleme gelöst und hat seine Vorzüge - aber all das ist argumentativ. Beispielsweise mag der Implementierer einer Bibliothek die Implementierung als nicht einfach empfinden, während der Benutzer dieser Bibliothek diese Bibliothek als sehr nützlich und einfach zu verwenden empfindet. Torvalds ist ein Implementierer, also muss er sagen, was die Erklärung sagt. Für einen Endbenutzer löst dies ein Problem und darum geht es dem Endbenutzer.

Zum einen hilft PAE bei der Lösung eines anderen Legacy-Problems auf 32-Bit-Rechnern. Es ermöglicht dem Kernel, die vollen 4 GB Speicher abzubilden und die BIOS-Speicherlücke zu umgehen, die auf vielen Maschinen vorhanden ist, und führt dazu, dass ein reiner 32-Bit-Kernel ohne PAE trotz der physischen 4 GB nur 3,1 oder 3,2 GB Speicher "sieht".

Wie auch immer, für den 64-Bit-Kernel ist es eine symmetrische Beziehung zwischen der physischen Seite und den virtuellen Seiten (wobei Auslagerungsspeicher und andere Details beiseite gelassen werden). Der PAE-Kernel bildet jedoch zwischen einem 32-Bit-Zeiger im Adressraum des Prozesses und einer 36-Bit-Adresse im physischen Speicher ab. Hier ist mehr Buchhaltung nötig. Schlüsselwort:"Erweiterte Seitentabelle". Aber das ist eher eine Programmierfrage. Dies ist der Hauptunterschied. Mehr Buchhaltung im Vergleich zu einem vollständigen linearen Adressraum. Für PAE sind es, wie Sie erwähnt haben, Blöcke von 4 GB.

Ansonsten beides PAE und 64-Bit ermöglichen große Seiten (anstelle der standardmäßigen 4-KB-Seiten in 32-Bit).

Kapitel 3 von Band 1 des Intel Processor Manual hat einen Überblick und Kapitel 3 von Band 3A ("Protected Mode Memory Management") enthält weitere Details, falls Sie darüber nachlesen möchten.

Für mich scheint dies eine große Unterscheidung zu sein, die von vielen Leuten ignoriert zu werden scheint.

Sie haben Recht. Allerdings die Mehrheit der Menschen sind Nutzer, keine Implementierer . Deshalb wird es ihnen egal sein. Und solange Sie für Ihre Anwendung keine großen Speichermengen benötigen, ist es vielen Leuten egal (vor allem, da es Kompatibilitätsschichten gibt).


Vielleicht möchten Sie sich hier ansehen, was Linus Torwalds dazu sagt:

PAE hat diese sehr einfache Tatsache auf den Kopf gestellt und die Dinge königlich vermasselt. Wer auch immer auf die Idee kam, war völlig inkompetent und hatte alle DOS HIGHMEM-Mühe vergessen. Es gibt einen verdammt guten Grund, warum wir die 286er hinter uns gelassen haben und anfingen, 386er zu verwenden, anstatt HIGHMEM-Mist mit Fenstern in einen größeren physischen Raum zu haben.

[...]

Wiederholen Sie mir also nach:PAE hat nie wirklich etwas repariert. Es war ein Fehler. Es war einfach ein Totalausfall und das Ergebnis von Hardware-Ingenieuren, die Software nicht verstanden.


Linux
  1. Was ist der Unterschied zwischen InnoDB und MyISAM?

  2. Was ist der Unterschied zwischen Puffer- und Cache-Speicher in Linux?

  3. Was ist der Unterschied zwischen dem Schreiben in eine Datei und einem zugeordneten Speicher?

  4. Was ist der Unterschied zwischen $(CC) und $CC?

  5. Was ist der Unterschied zwischen unlink und rm?

Was ist der Unterschied zwischen macOS- und Linux-Kernels

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen DMA und Memory-Mapped IO?