3G用户空间
保留区:位于虚拟地址空间的底层,存放的C的库,不可访问 大小为128M
. text 存放程序执行代码,也叫代码段(可读、可执行)
. data 数据段,用来存放已初始化且初始化不为0的全局变量和静态局部变量 (可读、可写)
. bss 未初始化数据段,用来存放未初始化或者初始化为0的全局变量和静态局部变量
栈 又称堆栈,由编译器自动分配释放
- 用函数内部声明的非静态局部变量提供空间
- 记录函数调用过程中相关的维护信息
- 临时存储区,用于暂时存储长算式表达式部分计算结果或alloc()函数分配的栈内内存
堆 用于存放程序运行时动态分配的内存段,可以动态的扩张或缩减。堆中内容是匿名的,不能按名字直接访问,只能通过指针间接访问。当进程调用malloc(C)/new(C++)等函数分配内存时,新分配的内存动态添加到堆上(扩张);当调用free(C)/delete(C++)等函数释放内存时,被释放的内存从堆中剔除(缩减)
共享库:存放的C的库,防止保留区不够大
1G内核空间
ZONE_DMA 直接内存访问区,CPU直接访问,不用通过寄存器提高了CUP的效率
ZONE_NORMAL 常用内存,虚拟地址空间与内存的映射关系,PCB就在这里
ZONE_HIGHMEM 高端内存,内核中映射文件超过1G时使用