您的位置:首页 > 其它

进程的虚拟地址空间

2014-04-20 11:45 274 查看
32位机器,每个程序有4G的虚拟地址空间。大致分为4块,从低地址到高地址依次是:NULL区,用户区,隔离区,核心区。用户私有的数据都在用户区(当然这个区里又可以细分,其中也包括一部分可以共享的内容),系统内核等东西都在核心区。总体来说,A进程的虚拟地址空间中的内容和B进程相比,只有各自的用户区不一致。通常用户区中,进程又会将exe文件(由头数据和段数据组成)中定义的代码段、堆栈段、数据段等各个段映射到用户区的特定不同部位。对于这部分区域,用户需要用VirtualAlloc先为自己预留后再提交,最后在自己的页面被cpu访问时再从exe映像中将数据加载到主存,然后将虚拟地址映射为主存的物理地址。

应用程序能使用的只是用户区而已,大约 2GB 左右 ( windows,最大可以调整到 3GB,linux为3GB) 。内核区为 2GB ,内核区保存的是系统线程调度、内存管理、设备驱动等数据,这部分数据供所有的进程共享,但应用程序是不能直接访问的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: