Linux的内存布局
2013-11-04 01:13
309 查看
T he 4 GB address space in 32 bit x86 Linux is usually split into different sections for every process on
the system:
0GB-1GB User space - Used for text, code and brk/sbrk allocations. malloc uses brk for small
chunks.
1GB-3GB User space - Used for shared libraries, shared memory, and the stack. Shared memory
and malloc use mmap. malloc uses mmap for large chunks.
3GB-4GB Kernel Space - Used by and for the kernel itself
The split between brk(2) and mmap(2) was changed by setting the kernel parameter TASK_UNMAPPED_BASE
and by recompiling the kernel.
在x86里,
#define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
The mmap allocated memory grow bottom up from 1GB and the stack grows top down from around 3GB.
The split between user space and kernel space is set by the kernel parameter PAGE_OFFSET which is usually
0xc0000000 (3GB).
By default, in Red Hat Enterprise Linux 2.1 the address space between 0x4 0000000 (1 GB) and
0xc0000000 (3 GB) is available for mapping shared libraries and shared memory segments. The
default mapped base for loading shared libraries is 0x4 0000000 (1 GB) .
the system:
0GB-1GB User space - Used for text, code and brk/sbrk allocations. malloc uses brk for small
chunks.
1GB-3GB User space - Used for shared libraries, shared memory, and the stack. Shared memory
and malloc use mmap. malloc uses mmap for large chunks.
3GB-4GB Kernel Space - Used by and for the kernel itself
The split between brk(2) and mmap(2) was changed by setting the kernel parameter TASK_UNMAPPED_BASE
and by recompiling the kernel.
在x86里,
#define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
The mmap allocated memory grow bottom up from 1GB and the stack grows top down from around 3GB.
The split between user space and kernel space is set by the kernel parameter PAGE_OFFSET which is usually
0xc0000000 (3GB).
By default, in Red Hat Enterprise Linux 2.1 the address space between 0x4 0000000 (1 GB) and
0xc0000000 (3 GB) is available for mapping shared libraries and shared memory segments. The
default mapped base for loading shared libraries is 0x4 0000000 (1 GB) .
相关文章推荐
- Linux内存布局
- 系统初始化阶段Linux内存布局
- linux进程内存布局
- Linux 程序内存空间布局
- LINUX程序(进程)在内存中的布局
- linux进程内存布局
- Linux 进程地址空间 && 进程内存布局
- linux内存布局的内核实现--用户空间的映射方式
- Linux应用程序在内存中的地址布局
- linux系统进程的内存布局
- 基于mini2440的Linux内存布局分析
- linux内存布局的内核实现--用户空间的映射方式
- linux和windows内存布局验证
- 《coredump问题原理探究》Linux x86版6.2节C++风格数据结构内存布局之有成员变量的类
- Linux线程的内存布局
- linux进程内存布局(转)
- Linux内存线性地址空间布局解析
- linux进程内存布局--randomize_va_space
- linux系统进程的内存布局
- Linux下C程序的内存布局