linux 段页式内存管理
http://blog.chinaunix.net/uid-24227137-id-3723898.html 页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率从;或者说,分页是由于系统管理的需要,而不是用户的需求。短是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需求。 进程是如何使用内存的 对于任意一个普通的进程都会涉及到5种不同的数据段, 代码段:存放代码 数据段:存放程序静态分配的变量和全局变量 BSS:未初始化的全局变量 堆:用于存放进程运行中被动态分配的内存段,大小不固定。Malloc分配内存时,新分配的内存的添加到堆上(堆扩张),free释放内存时称为堆缩减。 栈:存放局部变量,函数调用时传入的参数和返回的参数都保存在栈中。 如图所示:数据段、bss、堆段通常是被连续存储的,内存位置上是连续的。而代码和栈往往会被独立存放。栈向下生长,堆向上生长。 进程内存空间 Linux中采用虚拟内存管理技术,用户看到和接触到的都是该虚拟地址,无法看到实际的物理内存地址。利用虚拟地址使得用户不能直接访问物理内存,进程间也各自互不干涉,起到保护的作用;另一方面,用户程序可使用比实际物理内存更大的地址空间。4G进程空间分为两个部分,1-3G为用户空间,4G为内核空间,用户通常情况不能访问内核空间