dgy18787 发表于 2011-11-26 18:21:23

32位的 linux 的最大内存寻址范围就是 4G 吧?

最近给电脑填了一条内存。从2G 变成了4G。但是win7下面发现提示只有3G可用,于是就拿出来未识别的1G去用作内存虚拟磁盘装浏览器的缓存。不知道linux下面是个什么状况

sejishikong 发表于 2011-11-26 20:33:14

如果不开pae的话,好像连4G都不行,开pae的话,可以支持到64G,当然还需要内核配置支持。

panpanpdj 发表于 2011-11-26 20:53:15

那1G不一定就是未识别出来的
试验过,好像是已经识别过的,WIN7的64位感觉不怎么样,因为WIN上原生的64位程序不多

sejishikong 发表于 2011-11-27 14:45:46

原帖由 panpanpdj 于 2011-11-26 20:53 发表 http://forum.linuxfans.org/images/common/back.gif
那1G不一定就是未识别出来的
试验过,好像是已经识别过的,WIN7的64位感觉不怎么样,因为WIN上原生的64位程序不多
32位的最大好像是3.75还是3.25来着,和bios有关。不过肯定认不全4G。我现在用的是win7 64,感觉还行。因为是8G的,必须得用了。
啊,对了,32位的可以破解,能认出4G的。32位的2003/2008都行。

dgy18787 发表于 2011-11-27 15:39:17

果然是只识别了3G的空间啊

jiangtao9999 发表于 2011-11-27 17:07:14

不是 32 位系统认不出完整 4G ,而是 32 位系统为软件分配的空间在 3G 之后有了特殊用途,一般 32 为系统为软件能分配的最大内存容量就是 3G ,3G+ 的内存空间都是共享的虚拟地址的。这是老的兼容原因。
这个是系统为软件准备的虚拟内存寻址的分配结果,具体系统如何使用 4G 内存软件是看不出来的。

现在软件的内存使用都是“虚拟”的,32 位环境下每个软件都有自己的 4G 内存。开 100 个软件,系统依然可以给每个系统 4G ,但你能信这个机器就有 400G 的内存吗?32 位系统 3G+ 的位置是固定的系统共享的一些数据区,主要是 PCI 设备,系统共享库,BIOS 什么的调用区。
而且就算你改用64 位环境,在这个环境下运行 32 的程序依然是这个结果。打开 PAE 的 32 位系统,直接访问 3G+ 的空间也依然是这些保护数据区,除非程序支持 PAE 调用,自己去进行页转换操作才能实现完整的 64G 寻址。

操作系统早就实现了程序内存的虚拟寻址化了,系统如何管理的内存和程序如何使用内存是没有直接关联的。这个内存操作系统会做转换的。

dgy18787 发表于 2011-11-27 20:07:03

不过那些共享的数据大概用不满3G以后的那么多空间吧
我在win7下是直接用软件把号称“不可用”的那1G做了IE缓存的文件夹,好像也没什么问题

jiangtao9999 发表于 2011-11-27 21:36:51

问题是这 3G 高位内存共享是老传统,你不能私自使用的。因为你私自使用 3G+ 的内存,你会覆盖系统数据。最典型的就是很多共享库,其实内存里就他们一个实体,所有程序调用的都是 3G+ 部分,会被转换到同一个内存实体上进行读取。很多硬件的接口位置也都扔到这部分。
这不是一个一个连续存放的,而是某个起点后面是一个功能,另一个起点后面是另一个功能。每部分之间有空闲但你不能用……这部分内存是因系统硬件什么的而有差异,这些空闲你也说不好到底是不是真的没用,你也不好确定到底这个数据有多长。

至于不可用的内存,这要看系统如何处理,系统的寻址和软件的寻址是两个无关的寻址。从软件方面根本看不出来内存是如何使用的。
你可以试试开 N 个虚拟机,看看多个虚拟机同时运行时内存占用如何就知道了。

不过我认为,所谓 3G+ 的部分,系统依然会正确使用但需要系统提供特殊的手段,老 32 位系统因为没考虑现在的内存这么大,肯定使用会有问题。 Win98 不是还出现过大于 256M(要么 512M?)内存会不能启动的问题么?
DOS 时代不是还有过内存陷阱的设计么?
这个使用 3G+ 的软件应该是必须用驱动方式直接接管内存读写才能实现吧?

sejishikong 发表于 2011-11-28 00:32:12

那个应该是ramdisk一类的,肯定是驱动方式。

jiangtao9999 发表于 2011-11-28 10:12:04

这么底层的驱动不怕出故障?

sejishikong 发表于 2011-11-28 11:39:40

据说其中有两款很稳定,我没用过。

jiangtao9999 发表于 2011-11-28 13:22:27

:roll:
妥妥的装 64 位系统,不折腾。

我现在想再买两个 4G 内存组 12G 不知道有没有实际用处。
:mrgreen:

dgy18787 发表于 2011-11-28 13:29:32

Ramdisk 可以用。比较稳定.但是貌似休眠会出问题,其他一切正常。
Vsuite貌似也有软件

sejishikong 发表于 2011-11-30 14:44:27

Vsuite的太贵了。够买ssd的了。

jiangtao9999 发表于 2011-11-30 18:04:56

用这种东西做内存盘用还不如去买 i-ram
http://en.wikipedia.org/wiki/I-RAM
类似产品貌似很多的。
页: [1] 2
查看完整版本: 32位的 linux 的最大内存寻址范围就是 4G 吧?