Skip title Accessibility statement: we seek to make the HPC web pages accessible to all users. If you encounter accessibility issues with HPC web pages please send a description of the problem by email to eric_sills@ncsu.edu - thank you. NC State
Office of Information Technology
High Performance Computing
Skip menu side bar
Home
About
 
OpNews
 
Help/Accounts
 
Partners
 
User Projects
Services
 
Hardware
 
Software
 
Grid
 
Monitor
HowTo/FAQ
 
Docs & Pubs
 
Courses
 
Other Resources

IA32 Linux Virtual Memory Map

The IA32 architecture provides a 32-bit virtual address space providing access to 4 gigabytes of virtual memory. Linux divides the available memory as 3 GB for user processes and 1 GB for the kernel. Within the user space the first gigabyte is shared by user program text and data and the upper two gigabytes are used by shared libraries and user stack.

Shared Libraries

It has been observed that executables linked with shared libraries begin to fail with segmentation faults as the size of the user data approaches one gigabyte. This observation is consistent with the expansion of user data space being stopped by the presence of shared library text beginning at virtual address 0x40000000 (1 gigabyte).

Static Libraries

Executables linked with static libraries (-static option for ifc compiler) are able to allocate storage for data approaching three gigabytes before beginning to fail with segmentation faults. It appears that linking with static libraries removes the shared library region from the virtual memory map and allows user data to continue to grow toward the user stack. Actual limit of data storage that can be allocated depends on the size of the program text (with static libraries) and the size of the program stack.

graphical representation of memory layout described in text
Last modified: May 14 2005 11:10:05.
Office of Information Technology | NC State University | Raleigh, NC 27695 | Accessibility Statement | Policy Disclaimer | Contact Us