51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4473|回复: 10
打印 上一主题 下一主题

[讨论] “虚拟空间“到底有多大

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-12-7 14:16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在看一片英文文档是发现:有关虚拟空间大小的描述前后有些矛盾,上面提到:虚拟空间有4G大,其中2G分配给进程,另外2G分配给操作系统(当然还有另外的分法)。我想问的是:是对每一个进程来说是这样分的(2G分配给进程,另外2G分配给操作系统),还是说所有的进程一共分配到2G,也即虚拟空间总共只有4G,而不是相对一个进程就有4G大。
希望我表述清楚了;)
还望高手们指点迷津!多谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2004-12-7 14:59:55 | 只看该作者

友情提示

在Windiows操作系统中,每个进程可以访问4G的虚拟空间地址,但是其中2G是提供给操作系统的,程序只能另外2G的空间内存存取,每个进程可使用的就是2G空间,通过设置可以增大到3G。2G是地址空间,相当于指针访问可以访问到的空间,即32位操作系统提供进程可访问的地址,是通过2的32次方计算得到的。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2004-12-7 15:08:12 | 只看该作者
对每一个进程都是这样分的:2G分配给进程,另外2G分配给操作系统(win2000 serv还有另一种分法即3G+1G),但是32位处理器的寻址能力只有4G(服务器的扩展映射另当别论),每个程序分4G空间是不可能的,因此系统将每一个进程独立映射到4G的虚拟内存空间,你可以看到每一个正常的exe程序的入口应该都是以0X4...开始的,而实际物理内存空间是共享的。

不好意思,看过这方面的东西时间有点久了,术语记得不太准确,大概意思是那样。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2004-12-7 17:04:10 | 只看该作者

多谢?不过还有点疑问

假设系统上现在有两个进程在运行,是不是说将有8G大的虚拟空间
我知道自己的问题很傻,请见谅!以前没学过操作系统!
万分感谢楼上的两位大虾!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2004-12-7 18:07:24 | 只看该作者
是两个独立的4G虚拟空间,互不干扰,两个进程的DLL和系统部分共享并使用相同的虚拟映射地址和物理地址,但进程自身映射的入口相同但物理地址不同。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2004-12-8 09:11:34 | 只看该作者
我明白了 非常感谢你 homeless
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2004-12-8 14:30:40 | 只看该作者
homeless:
请问"虚拟内存"是不是在硬盘中分出来的一块空间吗?
如果是的话,假设有两个进程,那不是要分配8G的空间,而此时硬盘没有足够的空间,那系统将如何处理?
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2004-12-9 16:45:51 | 只看该作者
虚拟内存的确是在硬盘中分出的一块空间,
但是,并不是程序一运行就全部映射到4G的虚拟内存空间,程序初始化时分配予所需要的空间,如有需要运行时再动态分配。4G虚拟空间未使用的部分你可以用编程工具的调试模式看到全是没有实际数据的内容,比如显示为FF或??

具体的介绍可以参考 windows2000 内核编程(书名好像是这样,我不记得的,以前看的,里面对此过程有较详细的解释)
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2004-12-9 17:49:49 | 只看该作者
多谢了,明白了
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2004-12-10 08:22:25 | 只看该作者
之前学过的,都快忘了,呵呵!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2004-12-15 23:17:50 | 只看该作者
好深奥啊
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 07:55 , Processed in 0.069731 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表