title: How to use more than 3 GB in a process on 32-bit PAE-enabled Linux app?
body: <p>PAE (<a href="http://en.wikipedia.org/wiki/Physical_Address_Extension" rel="nofollow noreferrer">Physical Address Extension</a>) was introduced in CPUs back in 1994.  This allows a 32-bit processor to access 64 GB of memory instead of 4 GB.  Linux kernels offer support for this starting with 2.3.23.  Assume I am booting one of these kernels, and want to write an application in C that will access more than 3 GB of memory (why 3 GB?  <a href="http://kerneltrap.org/node/2450" rel="nofollow noreferrer">See this</a>).</p>
  
  <p>How would I go about accessing more than 3 GB of memory?  Certainly, I could fork off multiple processes; each one would get access to 3 GB, and could communicate with each other.  But that's not a realistic solution for most use cases.  What other options are available?</p>
  
  <p>Obviously, the best solution in most cases would be to simply boot in 64-bit mode, but my question is strictly about how to make use of physical memory above 4 GB in an application running on a PAE-enabled 32-bit kernel.</p>