进程的虚拟地址空间
2014-04-20 11:45
274 查看
32位机器,每个程序有4G的虚拟地址空间。大致分为4块,从低地址到高地址依次是:NULL区,用户区,隔离区,核心区。用户私有的数据都在用户区(当然这个区里又可以细分,其中也包括一部分可以共享的内容),系统内核等东西都在核心区。总体来说,A进程的虚拟地址空间中的内容和B进程相比,只有各自的用户区不一致。通常用户区中,进程又会将exe文件(由头数据和段数据组成)中定义的代码段、堆栈段、数据段等各个段映射到用户区的特定不同部位。对于这部分区域,用户需要用VirtualAlloc先为自己预留后再提交,最后在自己的页面被cpu访问时再从exe映像中将数据加载到主存,然后将虚拟地址映射为主存的物理地址。
应用程序能使用的只是用户区而已,大约 2GB 左右 ( windows,最大可以调整到 3GB,linux为3GB) 。内核区为 2GB ,内核区保存的是系统线程调度、内存管理、设备驱动等数据,这部分数据供所有的进程共享,但应用程序是不能直接访问的。
应用程序能使用的只是用户区而已,大约 2GB 左右 ( windows,最大可以调整到 3GB,linux为3GB) 。内核区为 2GB ,内核区保存的是系统线程调度、内存管理、设备驱动等数据,这部分数据供所有的进程共享,但应用程序是不能直接访问的。
相关文章推荐
- Linux进程全解2——进程环境(环境变量、进程运行的虚拟地址空间)
- 进程虚拟地址空间与物理内存关系
- 进程的虚拟地址空间
- 关于Windows编程中进程虚拟地址空间/虚拟内存及内存映射方面的资料
- 进程的虚拟地址空间,堆栈、堆、数据段、代码段
- Chap-6 6.4 进程虚拟地址空间分布
- 关于进程的4GB虚拟地址空间概念的理解
- 内存管理分析之一:Linux进程空间与虚拟地址的好处
- 进程虚拟地址空间之数据分区存放
- 进程虚拟地址空间中的虚拟内存区域(vma)---可执行程序与虚拟地址空间的映射关系
- 进程用户态虚拟地址空间上限测试
- 进程的虚拟地址空间4G划分
- 进程的虚拟地址空间
- 进程虚拟地址空间
- 进程的虚拟地址空间——NULL指针分区
- Linux系统--进程地址空间之虚拟地址空间
- Linux进程虚拟地址空间的分布、以及堆和栈的区别
- 进程虚拟地址空间之数据分区存放【转】
- 进程的虚拟地址空间