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

Linux – Was sind High Memory und Low Memory unter Linux?

Mich interessiert der Unterschied zwischen Highmem und Lowmem:

  1. Warum gibt es eine solche Unterscheidung?
  2. Was gewinnen wir dadurch?
  3. Welche Funktionen haben die einzelnen?

Akzeptierte Antwort:

Auf einer 32-Bit-Architektur ist der Adressraumbereich zum Adressieren von RAM:

0x00000000 - 0xffffffff

oder 4'294'967'295 (4 GB).

Der Linux-Kernel teilt das 3/1 (könnte auch 2/2 oder 1/3 sein) in Userspace (hoher Arbeitsspeicher) bzw. Kernelspace (niedriger Arbeitsspeicher) auf.

Der Bereich des Benutzerbereichs:

0x00000000 - 0xbfffffff

Jeder neu gestartete Benutzerprozess erhält eine Adresse (Bereich) innerhalb dieses Bereichs. Benutzerprozesse sind im Allgemeinen nicht vertrauenswürdig und dürfen daher nicht auf den Kernelspace zugreifen. Außerdem werden sie als nicht dringend angesehen, in der Regel versucht der Kernel, die Zuweisung von Speicher an diese Prozesse hinauszuzögern.

Der Kernel-Space-Bereich:

0xc0000000 - 0xffffffff

Ein Kernel-Prozess erhält hier seine Adresse (Bereich). Der Kernel kann direkt auf diese 1 GB an Adressen zugreifen (na ja, nicht auf die vollen 1 GB, es sind 128 MB für hohen Speicherzugriff reserviert).

Im Kernelspace erzeugte Prozesse sind vertrauenswürdig, dringend und werden als fehlerfrei angenommen, die Speicheranforderung wird sofort verarbeitet.

Jeder Kernel-Prozess kann auch auf den User-Space-Bereich zugreifen, wenn er möchte. Und um das zu erreichen, bildet der Kernel eine Adresse aus dem User Space (dem High Memory) auf seinen Kernel Space (den Low Memory) ab, die oben erwähnten 128 MB sind extra dafür reserviert.

Ob die Teilung 3/1, 2/2 oder 1/3 ist, wird durch CONFIG_VMSPLIT_... gesteuert Möglichkeit; Sie können wahrscheinlich unter /boot/config* nachsehen um zu sehen, welche Option für Ihren Kernel ausgewählt wurde.


Linux
  1. Was ist Linux-Kernel und sollten Sie auf den neuesten Kernel aktualisieren?

  2. Linux – Unterschied zwischen User Space und Kernel Space?

  3. In welchen Sprachen sind Windows, Mac OS X und Linux geschrieben?

  4. Welche Zeichen sind in Windows- und Linux-Verzeichnisnamen verboten?

  5. Linux-Kernel-Live-Debugging, wie wird es gemacht und welche Tools werden verwendet?

Was ist der Unterschied zwischen macOS- und Linux-Kernels

Linux Kernel 5.9:Was ist neu und wie man aktualisiert

Was sind Linux-Protokolle und wo sind sie zu finden?

Linux-Kernel und seine Funktionen

Was tun bei einer Linux-Kernel-Panik?

Was ist der Unterschied zwischen Benutzerbereich und Kernelbereich?