无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6172|回复: 13
打印 上一主题 下一主题

[求助] 如何取得RAM size?

[复制链接]
跳转到指定楼层
1#
发表于 2017-12-14 19:32:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在MENU上方會顯示本機RAM的大小
那應該就有方式可以拿來做判斷式吧?
請問是要用什麼指令
或是讀取什麼檔案/變數以取得RAM size呢?
2#
发表于 2017-12-14 20:23:19 | 只看该作者
本帖最后由 tools241 于 2017-12-15 06:52 编辑

法一.  利用 \windows\system32\systeminfo.exe -- 在PE不适用(因为PE精简系统之后执行systeminfo.exe产生的报告 "不完整", 会缺少ram size的资讯 )

法二. 利用工具 cpu-z ,
Parameters 参数
------------------
-txt=filename : Launch CPU-Z in ghost mode (no interface appears) and generates the register dump file (.txt)
in the same directory as the exe file. 导出报告为txt文本格式

** 本人发布的10PE 皆已纳入 cpu-z :
效率极致!  简/繁 10PE17025x86 16299x64/x86 15063x64/x86 含IE+Firefox+GoogleChrome+PotPlayer1.7 PE影音上网 ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385866
                   本版 IE11 会优先使用快取在 Y:\Low 并产生 Y:\Virtualized, Y: 空间若用完则快取自动改存到 X:
                   Firefox 异空版 及 Chrome 异空版 会优先将快取存到(使用者建立的) 虚拟磁碟 V: , 若 V:不存在则改试 Y: --
                   执行 Firefox 会优先使用快取在 Y:\cache2 , Y: 空间若用完则快取自动改存到 X:
                   执行 Chrome  会优先使用快取在 Y:\Chrome , Y: 空间若用完则快取自动改存到 X:
                   注: 若记忆体 <= 4G, 当自行添加工具时可依工具大小 "稍加扩大" Y: 的容量;
                   x64 若记忆体 >= 6G, 可将超过4G的部份 "自行扩大" Y: 的容量供浏览器快取使用:
                   在 \my_tool\Addon_*My_10PE_1st.BAT 中会针对 10PE x64 侦测记忆体大小, 若6G会将 Y: 再扩大1024M,
                   若 >= 8G 则将 Y: 再扩大1024M ( 也就是累计扩大 1024M+1024M=2048M ). 实际要扩大多少仍可由使用者自行改动.

点评

SORRY 因為在GRUB4DOS區 我就忘了注明了... 我是指在開機 GRUB4DOS MENU中如何查詢RAM SIZE  详情 回复 发表于 2017-12-14 22:13
回复

使用道具 举报

3#
 楼主| 发表于 2017-12-14 22:13:52 | 只看该作者
tools241 发表于 2017-12-14 20:23
法一.  利用 \windows\system32\systeminfo.exe -- 在PE不适用(因为PE精简系统之后执行systeminfo.exe产生 ...

SORRY 因為在GRUB4DOS區 我就忘了注明了...
我是指在開機 GRUB4DOS MENU中如何查詢RAM SIZE
回复

使用道具 举报

4#
发表于 2017-12-15 21:15:05 | 只看该作者
grub4dos 屏幕顶部报告的 ram 只具有参考价值,不具有使用价值。报告的三个内存量是:

1、常规内存量,也即低端内存量,就是低于 1M 的可写内存的量。这个数据是准确的。

2、扩展内存量。就是高于 1M 、低于 4G 的那部分内存量。注意,它只报告从 1M 起始的那个连续可写内存块的大小。它不报告别的碎块。就是说,它报告的值,有可能低于扩展内存的总量。

3、高位内存量。也就是位于 4G 之上的那部分内存量。这个量通常也是准确的。这是因为,高于 4G 的内存块通常是一个连续的块,没有碎片。

displaymem 命令可以显示出 bios 所报告的内存块详细情况。

你如果会编程,你就可以自己利用 bios 来获知内存信息。你也可以直接分析 displaymem 的输出结果,计算出你想要的值。

鉴于现在电脑内存通常很大,因此,我觉得你不需要了解精确的内存布局信息。

如果高位内存不是 0,那么,用户的内存一定至少有 4G。如果高位内存超过2G,那么用户安装的内存应该有 8G 了。

如果高位内存是 0,则基本可以肯定,机器的内存条总容量不足 4G。

常规内存,扩展内存的第一个碎块,高位内存,这三个量都可以得到。它在内存某个地址处。你可以查阅 readme 文件,了解这些技术细节。置顶的教程也可以看看。


回复

使用道具 举报

5#
发表于 2017-12-16 09:43:35 | 只看该作者
如果高位内存是 0,那么,用户的内存通常是 2G 或更少。此时,你就可以给出提示信息,说 “对不起,您的内存看起来不多,不足4G,软件不能运行,请退出安装 。”

如果高位内存不是 0,那么用户内存肯定有 4G 了。其中有 3G 左右位于 4G 界线以内,而剩余的 1G 左右被 BIOS 安排在 4G 界线以上。这位于 4G 界线以上的部分,就是高位内存的值了。

可以这样粗略计算用户的内存量:

内存总量 = 高位内存量 + 4G - 不足 4G 的零头

举例:高位内存是 0.7G,那么,内存总量 = 0.7+4-不足4G的零头= 4G

再一例:高位内存是 4.7G,那么,内存总量 = 4.7+4-不足4G的零头= 8G

再一例:高位内存是 12.7G,那么,内存总量 = 12.7+4-不足4G的零头= 16G

再一例:高位内存是 29G,那么,内存总量 = 29+4-不足4G的零头= 32G

回复

使用道具 举报

6#
发表于 2017-12-16 14:21:27 | 只看该作者

假定你是想用 map 把 img 加载在内存,却不知道能否加载成功。你可以进行判断。map 执行成功时返回 true,失败时返回 false。我猜你已经知道一些 grub4dos 的脚本编程知识。当 map 失败时,你可以提示用户,内存不够,或内存碎片太多,导致 map --mem 命令失败。这样你根本就不需要了解用户究竟有多少内存。
回复

使用道具 举报

7#
发表于 2017-12-16 14:45:23 | 只看该作者
就算你精确知道内存总量有多少,对于 map --mem 来说,这也是没有用的信息。举例来说,假定精确的内存值是 2G,你想加载 1G 的 img,这看似应该能成功了,其实不然。有人报告联想的某个型号的电脑,最大的内存碎块是 500M 左右,根本无法容纳一个 1G 的 img。而我碰到的一台 Dell 电脑,它的扩展内存就是连续的。因此,如果是 Dell 电脑,则成功的可能性较大,而联想电脑则失败居多。

点评

本来之前还准备比较内存和映像大小,然后是否载入呢。但经过不点大的一般说明之后,已经放弃了  详情 回复 发表于 2017-12-18 18:15
回复

使用道具 举报

8#
发表于 2017-12-17 03:59:23 | 只看该作者
本帖最后由 tools241 于 2017-12-17 05:04 编辑

大大是担心记忆体不足时跑不动某些ISO档?

本人PC的Ram原本只有4G( 目前已再加2G成为6G ), 想测试某大大发布的10PE16299x64的ISO档( 大小为1.75G ),
结果4G的Ram因记忆体不足而无法启动, 解决方法有三:
1.加大RAM
2.将ISO档中的某些工具删除, 缩减ISO档的size
3.提取 boot.WIM 后將boor.WIM改名為 070boot.WIM , 只测 \boot\070boot.WIM, 有兴趣可参考本人的发文:
[分享]Grub4Dos - 直接启动Win10,...,Win7, 第1个XP, XP.VHD, ISO, WIM, PE ==>
    http://bbs.wuyou.net/forum.php?mod=viewthread&tid=380990
    https://www.microduo.tw/thread-33308-1-1.html




点评

您的记忆体有 4G,本来是够了。但是,您的主板安排的记忆体布局可能像这样: 位于 4G 界线以下的碎块共3G,比如,6 块,各 500M。 位于 4G 界线以上的是个连续块,大约 1G。 如此,没有一个碎块能够放得下 1.  详情 回复 发表于 2017-12-17 07:14
回复

使用道具 举报

9#
发表于 2017-12-17 07:14:50 | 只看该作者
tools241 发表于 2017-12-17 03:59
大大是担心记忆体不足时跑不动某些ISO档?

本人PC的Ram原本只有4G( 目前已再加2G成为6G ), 想测试某大大 ...

您的记忆体有 4G,本来是够了。但是,您的主板安排的记忆体布局可能像这样:

位于 4G 界线以下的碎块共3G,比如,6 块,各 500M。
位于 4G 界线以上的是个连续块,大约 1G。

如此,没有一个碎块能够放得下 1.75G 的 ISO 档。

而当您的记忆体增加到 6G 后,位于 4G 界线以下的情况无变化,而位于 4G 界线以上的部分,增加了 2G,变成 3G,而且是连续的一整块。这就可以放得下 1.75G 的 ISO 档了。

回复

使用道具 举报

10#
 楼主| 发表于 2017-12-17 18:55:42 | 只看该作者
略微了解,看來我的設想是沒效的
感謝解答~~~
回复

使用道具 举报

11#
发表于 2017-12-18 18:15:44 来自手机 | 只看该作者
不点 发表于 2017-12-16 14:45
就算你精确知道内存总量有多少,对于 map --mem 来说,这也是没有用的信息。举例来说,假定精确的内存值是  ...

本来之前还准备比较内存和映像大小,然后是否载入呢。但经过不点大的一般说明之后,已经放弃了
回复

使用道具 举报

12#
发表于 2017-12-18 22:18:27 | 只看该作者
如果你想在载入 img 之前确定能否载入,你可以用一个 map 的假动作来测试能否载入。比如,像这样:

map     --mem=-预留扇区数      (md)+8      (rd)

等号右边是一个负数,预留扇区数就是你准备加载的那个 img 所占据的扇区数。此处扇区大小按 512 字节计算。

此处,map 命令并非建立虚拟盘,而是让 grub4dos 内置的 rd 设备指向内存虚拟盘所在的地址。而 rd 不是虚拟盘。

此命令如果成功执行,则你的 img 就能装入内存。此命令如果执行失败,则你的 img 就不能装入内存。

对于 4G 界线以内的情况,这个判断的可靠性很高。

对于带有 --top 的情况,我不知道行不行。你们可以试试看,如果有 bug,比如 rd 设备不能处理高位内存,那就让开发者修复 bug。

点评

多谢解答,有空了我研究研究。  详情 回复 发表于 2017-12-19 09:29
回复

使用道具 举报

13#
发表于 2017-12-19 09:29:53 来自手机 | 只看该作者
不点 发表于 2017-12-18 22:18
如果你想在载入 img 之前确定能否载入,你可以用一个 map 的假动作来测试能否载入。比如,像这样:

map  ...

多谢解答,有空了我研究研究。
回复

使用道具 举报

14#
发表于 2017-12-19 10:36:28 | 只看该作者
新版中 map 的 --top 参数是用来控制是否启用 4G 界线以上的内存块的。如果没有 --top 参数,则不会使用高位内存块。如果带有 --top 参数,则会优先使用高位内存块。另外,新版搜索可用内存块总是从高向低搜索,而不再从低向高搜索。

就是说,如果带有 --top 参数,则新版在大多数情况下可能总是使用高位内存块,除非高位内存块已经被很多 img 占满了(或者高位内存块太小),才会搜索到 4G 界线以内的内存块。新版的搜索方式更合理。

有些软件不支持 img 位于 4G 界线以上的高位内存区。比如,winvblock 就不支持(但 firadisk 支持)。因此,如果使用 winvblock 就不应该使用 --top 参数(使用 --top 参数,进入 Windows 后 winvblock 无法正常驱动虚拟盘,你也就无法访问虚拟盘)。推论:如果你想使用很大的 img(比如 4G 或更大)来创建内存虚拟盘,你就不可能使用 winvblock,只能使用 firadisk。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 19:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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