C++-----虚拟地址空间分布

操作系统(32位)会为每个进程分配4G(2的32次方计算得到)的虚拟地址空间,由用户空间和内核空间两部分构成。虚拟内存是内存的一种管理方式,实现对于逻辑上对于内存容量的扩展,使用硬盘(文件)来模拟的内存空间。Windows系统下,用户空间和内核空间以2:2比例划分,Linux系统下用户空间和内核空间以3:1划分。内核空间所有进程共享,用户空间各自独立。 虚拟地址空间分布如下图所示: (***64位的操作为进程分配16G的虚拟地址空间***)

.text(代码段)可执行代码、只读变量、字符串常量
.data(数据段)已初始化且初值非0的全局变量和静态变量(全局和局部)
.bss未初始化或初始值为0的全局变量和静态变量。如果变量都已初始化,则bss段被清零
heap(堆)动态申请的内存
共享库程序运行时被动态加载到内存中使用(Linux下为.so文件,widow下为.DLL文件)
stack(栈)

程序运行时需要在这里做数据运算,存储临时数据(局部变量、局部只读变量、函数参数、返回地址等),开辟函数栈等。

Linux下,栈是高地址往低地址开辟的。对于函数栈来说,函数运行完毕就释放内存。

命令行参数类似ps  -eLf 中-eLf就是命令行参数,而ps是可执行程序。
环境变量linux下的PATH,HOME等的环境变量(子进程会继承父进程的环境变量)
ZONE_DMA直接访问区,16M
ZONE_NORMAL常用区,映射页目录表,892M
ZONE_HIGHMEM

高端内存区,大于1G的文件的映射

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值