搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 5445|回复: 61
收起左侧

[专业知识] 32位操作系统真的只能用3.25G内存吗?【科普水文】

[复制链接]

该用户从未签到

25

主题

21

好友

1万

积分

第一章

积分
10837
发表于 2012-9-6 00:17:22 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 Bugsong 于 2012-12-26 11:44 编辑

原文名:操作系统 内存 CPU之间不得不说的故事[科普水文]
原文发表于:大D综合研究院

原文链接:http://www.dadclab.com/archives/1881

本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

协议查看链接http://creativecommons.org/licenses/by-nc-sa/2.5/cn/

好吧,大D我不得不承认这标题极具欺骗性。【我就不说我好久木有写水文了,水一水。】

本文围绕“32位操作系统不能识别并使用4G内存”这个问题来展开。

一、CPU、地址总线、内存

大D实在是想不出如何去总结这个小标题。就这样吧。

CPU要对数据进行读写,就必须对外部设备进行3类数据交互:

  • 存储单元的地址(地址信息)
  • 设备的选择,读或写的命令(控制信息)
  • 读或写的数据(数据信息)

这三类信息通过CPU与外部设备间的总线进行传递。总线在逻辑上可以大致分为三类,既地址总线、控制总线以及数据总线。

CPU与外部设备的3类数据交互就通过这三个总线来完成。

现在我们知道,CPU是通过地址总线来指定存储器单元的,也就是说,地址总线确定CPU能寻址多少内存。

32位内存的地址总线宽度为32,所以CPU可以寻找2^32的内存单元。

2^32=4096,所以,32位CPU最大能够识别(寻址)4G内存。同理:

2^64=18446744073709551616,哇,很庞大啊~

当然了,上面计算出的64位CPU的寻址能力可以寻找的内存。这是理论上的数据撒~


二、为什么64位CPU不能使用超大的内存

上面我们说了,64位CPU地址总线宽度决定了它可以寻址超大的内存空间。但是在具体实现上,却不能全部使用整体高达16EB的内存。

要将64位CPU的地址线全部使用,则需要CPU厂商及操作系统开发厂商投入巨大的成本来研发地址转换相关的技术。例如早期CPU的段地址:偏移地址方式来定位内存地址。

在目前的64位CPU和操作系统技术上,Windows已经实现在AMD64技术CPU上最大搭载16TB内存,即44位地址线宽度可以寻址的内存大小。

从根本上来讲,Windows操作系统使用了虚拟地址空间来操作内存,也就是说,Windows操作系统上运行的程序进程读取的内存地址是Windows的虚拟地址空间影射出来的地址,而非纯物理地址。


三、32位操作系统只能使用3.25G?

说到这个问题。又要扯到32位CPU最大识别(寻址)4G内存上。

4G内存会不会全部都给CPU使用呢?答案是否定的。

为了保证计算机的正常运行,内存还要分配给其他的一些组件来使用,例如集成显卡,Bios Roms等,这就是为什么很多电脑看到的内存不是整数,比如2047MB这样的内存地址,其中的1M分配给了其他的设备。

32位操作系统只能使用3.25G的原因也出自内存分配给其它组件来使用这一情况。

但是并不是所有的电脑都会分配很多内存给其它组件。于是就有了以下两个技术来帮助访问剩余的空闲内存。


四、PAE和AWE

从上面的内容可以得出,32位操作系统是可以使用并访问4G内存的。

这得益于PAE技术

PAE技术全称为物理地址扩展技术,早在Pentium Pro的时代就有这个技术了。

操作系统在不用PAE的情况下,使用的是页表结构方式实现两级地址转换来解决虚拟地址和物理地址的映射的。

开启PAE之后,页表结构方式会做出一些更改。


(大D温馨提示:这部分可以跳过不读。)

在大D模糊的记忆里,两级地址转换时,控制寄存器会指向一个4k大小的页目录,而这个目录里面又有1024个4k大小的页表,最后每个页表里又有1024个4k的页。(页表和页目录中的表项都是32位的。)

启用PAE后,由于页表和页目录表项从32位扩展到64位以用来附加地址,于是页目录和页表就变成了512项了,并新增一个地址指针表(貌似叫这个,或者叫目录指针表),通过这一方式,把地址寻址从32位扩展到52位,32位操作系统使用其中32位,64位操作系统使用40位或者48位,且64位CPU+64位操作系统默认必须开启PAE。


同时,在操作系统层面,还需要AWE技术来辅助。(AWE技术:Address Windowing Extensions 扩展地址内存管理的一个技术。)

在Unix和类Unix系统上,与AWE相似的技术的到了广泛应用。


五、操作系统究竟可以使用多少内存?

详见下表:

Windows版本32位操作系统           (N/A表示不支持或没有对应版本操作系统)64位操作系统         (N/A表示不支持或没有对应版本操作系统)
Windows 2000 专业版、服务器版4 GBN/A
Windows 2000 高级服务版8 GBN/A
Windows 2000 数据中心版32 GBN/A
Windows XP 家庭及媒体中心版4 GBN/A
Windows XP 专业版4 GB128 GB
Windows Server 2003 Web版2 GBN/A
Windows Server 2003 小企业版、家庭服务器版、Storage4 GBN/A
Windows Server 2003 Storage Server(专为存储服务器设计的版本)4 GBN/A
Windows Server 2003 R2 标准版4 GB32 GB
Windows Server 2003 标准版 (SP1)4 GB32 GB
Windows Server 2003 标准版 (SP2)4 GB32 GB
Windows Server 2003 企业版 (SP1)16 GB with 4GTN/A
Windows Server 2003 R2 企业版64 GB1 TB
Windows Server 2003 数据中心版 (SP1)128 GBN/A
Windows Server 2003 R2 数据中心版 (SP1)128 GB1 TB
Windows Server 2003 R2 数据中心版 (SP2)128 GB2 TB
Windows Vista 入门版1 GBN/A
Windows Vista 家庭基础版4 GB8 GB
Windows Vista 家庭高级版4 GB16 GB
Windows Vista 商用版、企业版、企业版4 GB128 GB
Windows Server 2008 标准版、Web版4 GB32 GB
Windows Server 2008 企业版、数据中心版64 GB2 TB
Windows 7 入门版2 GBN/A
Windows 7 家庭基础版4 GB8 GB
Windows 7 家庭高级版4 GB16 GB
Windows 7 专业版、企业版、旗舰版4 GB192 GB
Windows Server 2008 R2 基础班N/A8 GB
Windows Server 2008 R2 标准版N/A32 GB
Windows Server 2008 R2 企业版、数据中心版、安腾版N/A2 TB

七、怎样使32位操作系统使用4G内存

网上开启PAE的教程很多,自己搜索下就OK咯~

关键字:“32位WINXP/WIN7开启PAE”

32位WinXP、Win7开启PAE后可能会变的不稳定,并且有的显卡驱动跟PAE扩展不兼容,酌情开启哟~


八、总结

总的来说,32位操作系统是可以识别并使用4G内存的。

内存识别与使用,跟CPU/操作系统都用很大的关系,在计算机这个大体系中,主板芯片组也是一个很关键的因素,比如P45芯片组是支持36bit寻址的。

再一个,大D觉得呢,如果你不想折腾着重装64位系统,又有4G内存,尝试一下开启PAE也未尝不可,如果你装备了大于4G的内存,还是用64位操作系统比较好哟。

P.S.其实吧,64位的兼容性还是不错的~


P.S.S.以上内容均为个人看法~欢迎拍砖~


评分

参与人数 4宅魂 +10 宅币 +52 贡献 +6 收起 理由
原味板烧鸡腿堡 + 30 + 4
甚没钱 + 1 + 3 o(* ̄▽ ̄*)ブ 发糖
akira_ou + 5 + 10 + 2 o(* ̄▽ ̄*)ブ 发糖
hcl + 4 + 9 评最高分!

查看全部评分

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

该用户从未签到

397

主题

61

好友

11万

积分

荣誉会员

地下研究所 所长

积分
115586
发表于 2012-9-6 00:29:52 | 显示全部楼层
看见大D,激动的泪流满面啊!一如既往的高水准!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

20

好友

3681

积分

序章

积分
3681
发表于 2012-9-6 00:44:11 | 显示全部楼层
哇,不明觉厉~好想换电脑啊。

点评

表示 8G 內存完全不夠用……  发表于 2012-11-6 19:23
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

41

好友

1万

积分

第一章

积分
13705
发表于 2012-9-6 02:24:29 | 显示全部楼层
- -32位系统虽然可以识别4G内存
但是利用率似乎并不到4G。。是个硬伤
【某梦淡定地说
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

324

好友

4万

积分

第二章

积分
42664
发表于 2012-9-6 04:33:46 | 显示全部楼层
直到现在还没调好内存分配的怒排ヾ(。`Д´。)
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

11

好友

2202

积分

Continue

积分
2202
发表于 2012-9-6 08:19:57 | 显示全部楼层
好高端~~学习了!!!之前自己电脑重装很多软件都不兼容64位,可愁死了啊!
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

25

主题

21

好友

1万

积分

第一章

积分
10837
 楼主| 发表于 2012-9-6 10:04:14 | 显示全部楼层

由于操作系统使用了虚拟地址空间来控制进程对内存的访问,且32位操作系统的地址空间为0x00000000 - 0xFFFFFFFF 这么个地址。
0x00000000 - 0x0000FFFF: 这段内存是空指针区,同时肯定是不可访问的
系统会把低位,即0x00010000 - 0x7FFEFFFF 这一段给用户程序以及其他非核心模块。
0x7FFF0000 - 0x7FFFFFFF 禁止访问区域,因为紧挨着这个的就是内核。相当于一个屏障。
0x80000000 - 0xFFFFFFFF 内核区域 内存管理啊,驱动线程啊,都在这里加载。


也就是说,开启PAE后的部分是被操作系统给用了。这也就是为何会有一定机率导致系统不稳定的原因撒。
内存的分配模式,无论是硬件上还是操作系统层面,利用率神马的貌似都到不了100%的说。。
大D的8G内存就有差不多400M被分配到不知道哪里去了。只有7.59G是操作系统可以分配并使用的。。。
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

25

主题

21

好友

1万

积分

第一章

积分
10837
 楼主| 发表于 2012-9-6 10:04:57 | 显示全部楼层
hcl 发表于 2012-9-6 00:29
看见大D,激动的泪流满面啊!一如既往的高水准!

表激动
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

19

主题

175

好友

1万

积分

第一章

积分
13097
发表于 2012-9-6 10:44:02 | 显示全部楼层
pae貌似调了之后会很不稳定的说……3.25g飘过TAT
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

19

主题

173

好友

3万

积分

第二章

积分
34909
发表于 2012-9-6 11:05:22 | 显示全部楼层
学习下
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 2 天

连续签到: 2 天

[LV.1]初来乍到

200

主题

134

好友

16万

积分

最终章

请叫我千酱

积分
163917

技术宅四周年庆组委会纪念

发表于 2012-9-7 17:11:28 | 显示全部楼层
= =我好像看不太懂。。。。。(撞墙
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

15

好友

1026

积分

Continue

积分
1026
发表于 2012-9-8 18:18:54 | 显示全部楼层
window xp 64位 128G内存支持,好奢侈的能力啊!!!
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

1

好友

1530

积分

Continue

积分
1530
发表于 2012-9-10 12:34:13 | 显示全部楼层
嘿嘿 坐等win8 128bit
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

17

好友

3288

积分

序章

积分
3288
发表于 2012-9-10 13:10:45 | 显示全部楼层
32位系统,然后用利用剩下的0.75G内存做成ramdisk也挺好的说0 0
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

18

好友

4928

积分

序章

积分
4928
发表于 2012-9-10 13:15:59 | 显示全部楼层
谢谢分享啊
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-7-10 21:15 , Processed in 0.149278 second(s), 47 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

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