当前位置:恩施知识网 > 电脑百科 > 正文

为什么32位系统上虚拟地址空间是4GB

在一台32位系统上,虚拟地址空间为4GB,这个大小由系统上指针的可用数量决定。对于一块32位的处理器,一个32位值可以表达232个不同的数值,如果你将每一个数值都指向不同的内存地址,则你就得到了一个232个字节的地址空间,也就是4GB。
如果你愿意放弃平坦内存模型(flat memory model)并使用选择器(selectors),那么你可以将16 位选择器值与32位偏移量组合为一个48位的指针值。从理论上来说,这将创建高达248个不同指针值,如果你允许每个指针值寻址不同的内存字节,则会产生

在一台32位系统上,虚拟地址空间为4GB,这个大小由系统上指针的可用数量决定。对于一块32位的处理器,一个32位值可以表达232个不同的数值,如果你将每一个数值都指向不同的内存地址,则你就得到了一个232个字节的地址空间,也就是4GB。

如果你愿意放弃平坦内存模型(flat memory model)并使用选择器(selectors),那么你可以将16 位选择器值与32位偏移量组合为一个48位的指针值。从理论上来说,这将创建高达248个不同指针值,如果你允许每个指针值寻址不同的内存字节,则会产生 256TB 的内存。虽说理论上可以达到如此巨大的内存空间,但是在奔腾级CPU上这个理论最大值无法支持。

一个原因是,段选择器中的低位会用来携带段选择器的类型信息。所以,结果就是,一个16位段选择器可以有65536个不同数值,但是其中只有8191个数值可以用来进行寻址用户模式数据,也就是说最大地址空间会降至32TB。使用selector:offset这种寻址模型对地址空间的真正限制是:每个选择器只描述了平面32位地址空间的一个子集。

所以,即使你能使用到所有的8191个段选择器,它们都只是对同一个底层32位地址空间的特定视图。(另外,我觉得不会有人希望回到使用段选择器来寻址吧? 那可是一段疯狂的时代。)

在64位的Windows系统上,2GB地址空间限制就没有了,用户模式虚拟地址空间可以达到8TB。8TB有多大?这样说吧:从现在开始,你每秒钟都从这8TB的虚拟地址空间中分配1MB的内存,也需要整整3个月才能分配完。

(但请注意,你可以在64位程序上设置/LARGEADDRESSAWARE:NO开关,来告诉操作系统强制程序运行在2GB边界以下。不过,我还不大清楚你为什么要这样做,因为这样你只能使用庞大的64位地址空间中的很小一部分,同时,指针还是一个64位的指针。这就好比,你有线电视付费了但是不看一样。)

有了到目前为止你所学到的知识,也许你可以回答下面这个问题:“我们的boot.ini文件中有一个/7GB开关。我们的技术顾问告诉我们,我们应该将其设置为比系统内存少1GB。因为我们的系统配备了8GB内存,所以8GB – 1GB = 7GB。顾问表示,设置此值允许应用程序分配超过 2GB的内存。我们希望微软对此分析发表评论。”

总结

对于上面的问题,聪明如你,是一定有办法回答的。没错吧?

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Why is the virtual address space 4GB anyway?》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。我想:你值得拥有。

为什么32位系统上虚拟地址空间是4GB

在学习多线程中,说到32位进程有4GB虚地址空间,这个怎么理解呢?

32位进程,从理论上每个32位进程可以访问的地址空间是2的32次方(4GB),这个地址空间是由系统分配的虚拟地址空间。
在真实访问中会将虚拟内存映射到物理内存,所以你的内存是够用的。虚拟内存技术是在硬盘上开辟的空间,理论上是硬盘可用空间,所以每个进程都可以由4GB的虚拟内存空间。

为什么32位系统上虚拟地址空间是4GB

32位的cpu的寻址空间为什么是4GB

内存寻址取决于处理器的针脚数量
32位的处理器32个针脚就能有2的32次方的寻址空间
32位的处理器有35个针脚的就有2的35次方的寻址空间
64位的64个针脚就有2的64次方的寻址空间
免责申明:以上内容属作者个人观点,版权归原作者所有,不代表恩施知识网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.esly.wang/diannao/16974.html 感谢你把文章分享给有需要的朋友!
上一篇:为什么要使用数据库?,我们为什么要做数据库 下一篇:一键还原相当于重装系统吗,系统重装还原设置

文章评论