3

I know that the 32-Bit kernel can use PAE to allocate more RAM to applications with PAE (up to 64GB) as such I imagine if I am running 32 bit applications on a 32-bit kernel I can use all of my 24GB on one application (-what my OS is using ofc).

But what if I am using a 64-bit kernel? Can 32 bit (multilib) applications use all my memory in there too? Or is it limited to 4GB again?

Cestarian
  • 1,991
  • 5
  • 26
  • 45

1 Answers1

5

A 32-bit process can access only about 3GB. (It can be less, depending on the kernel compilation options.) It doesn't matter whether the kernel is a 32-bit or 64-bit one — that only affects the ability to run 64-bit applications. PAE is a way to allow more physical memory but doesn't change the size of the virtual memory seen by each process. That's pretty much what “32-bit” means: a pointer uses 32 bits, so there are only 232 possible virtual addresses, so each process can access at most 232B = 4GB. Linux reserves 1GB for kernel use during system calls, which leaves 3GB.

An application can use more memory if it runs multiple processes.

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175