请高人指点:进程地址空间和虚拟内存的到底是什么关系?好困惑

shelager 2004-04-29 08:14:00
看<Windows 核心编程>一书,困惑很久的问题还是没有解决,反而越来越糊涂,到底进程地址空间和虚拟内存是什么关系?进程地址空间(0x00000000~0xFFFFFFFF)在Windows中到底只是一个抽象概念还是有具体实现?什么叫"加载可执行文件到地址空间?",可执行文件不是PE格式的包含各种节(如.data,.text等)组成的,每节由指令或数据组成的吗,那它是怎么映像到地址空间的???在磁盘上的.exe文件中每节的指令/数据编了地址吗?还有,文件映射对象和内存映射文件是干什么的?
...全文
168 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
diaoni 2004-05-04
  • 打赏
  • 举报
回复
建议先去系统地学一下操作系统
jennifergiant 2004-04-30
  • 打赏
  • 举报
回复
其实看下操作系统的书就OK了!
Semigod 2004-04-30
  • 打赏
  • 举报
回复
看来楼主要去学习一下汇编语言才行!
shelager 2004-04-30
  • 打赏
  • 举报
回复
up
code8238 2004-04-29
  • 打赏
  • 举报
回复
页面文件当然是在硬盘上。
进程地址空间中的页表只是记录了虚拟地址到物理地址的转换,真正的转换工作是由操作系统完成的,并不是页表负责的。
shelager 2004-04-29
  • 打赏
  • 举报
回复
还是不明白.
页文件是什么,在硬盘上还是在内存中?
进程地址空间中不是有页表吗,它不是负责虚拟地址到物理地址的转换吗?
code8238 2004-04-29
  • 打赏
  • 举报
回复
虚拟内存并不简单的是用硬盘上的页面文件代替内存,而更重要的是内存映射机制。
在WINDOWS中,每个进程的地址空间都是固定的并且是相同的,如果没有虚拟内存,这显然是不合乎逻辑的,因为每个内存地址都只能使用一次,不能重叠。所以引入了虚拟内存机制。进程地址空间是逻辑上的而不是物理上的。内存映射机制负责把这个逻辑上的地址映射到实际的内存或页面文件上。
"加载可执行文件到地址空间"实际上主要就是逻辑地址到物理内存的映射过程。
UDX协议 2004-04-29
  • 打赏
  • 举报
回复
进程地址空间,简单的讲就是,程序可以访问的地方,就象鱼,只能在水里一样,不能到岸上来,特须的情况不算。
虚拟内存指,从字面上理解是,他其实不是内存,但可以当成内存用,这种情况发生在,你的程序需要很多内存来存储数据,而你的机器没有这么多内存,这时候操作系统通过文件虚拟内存来帮你,这就是虚拟内存。进程地址空间理论上,在32位操作系统上为4G,实际上,你的内存可能没有那么多,至少现在的机器,一般是128,256,512M的内存,没有4G内存,这时候,虚拟内存可以帮你访问其他的地址空间。
roger_ding 2004-04-29
  • 打赏
  • 举报
回复
进程地址空间就是基于虚拟内存的,换句话说就是进程地址空间的地址都是虚拟地址,即理论上是可以从0x00000000~0xFFFFFFFF

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧