Wie viel RAM kann eine Anwendung auf 64-Bit-x86-Linux-Systemen zuweisen?

Wie viel RAM kann eine Anwendung auf 64-Bit-x86-Linux-Systemen zuweisen?

Stimmt es, dass eine einzelne Anwendung bei Verwendung eines 32-Bit x86 PAE Linux-Kernels nicht mehr als 2 GiBs zuweisen kann, selbst wenn das System über GiBs mehr freien Speicher verfügt? Wird diese Beschränkung bei 64-Bit x86 Linux-Kerneln gelockert?

Antwort1

Ein 32-Bit-Prozess hat per Definition einen 32-Bit-Adressraum: „32-Bit“ bedeutet, dass die Speicheradressen im Prozess 32 Bit breit sind, und wenn Sie 2 32 verschiedene Adressen haben, können Sie höchstens 2 32 Bytes (4 GB) adressieren. Ein 32-Bit-Linux-Kernel kann nur 32-Bit-Prozesse ausführen. Abhängig von den Kernel-Kompilierungsoptionen kann jeder Prozess nur 1 GB, 2 GB oder 3 GB Speicher zuweisen (der Rest ist für den Kernel reserviert, wenn er Systemaufrufe verarbeitet). Dies ist eine Menge an virtuellem Speicher, unabhängig von einer Aufteilung zwischen RAM, Swap und mmapped-Dateien.

Ein 64-Bit-Kernel kann sowohl 64-Bit- als auch 32-Bit-Prozesse ausführen. Ein 64-Bit-Prozess kann prinzipiell bis zu 2 64 Bytes (16EB) adressieren.x86_64 Architektur, teilweise aufgrund des Designs von x86_64MMUs, derzeit besteht eine Beschränkung auf 128 TB Adressraum pro Prozess.

Antwort2

32-Bit-Prozesse können nur bis zu 1, 2, 3 oder etwa 4 GB zuweisen, je nachdem, welche Speicheraufteilung beim Erstellen des 32-Bit-Kernels gewählt wurde. 32-Bit-Prozesse auf einem 64-Bit-Kernel können etwa 4 GB zuweisen. 64-Bit-Prozesse auf einem 64-Bit-x86-64-Kernel könnenbis zu 128 TiB.

verwandte Informationen