无忧启动论坛

标题: 内存大小的问题 [打印本页]

作者: mdyblog    时间: 2014-2-20 10:06
标题: 内存大小的问题
G4D0.46a2014.0116 .

内存大小的问题
read 0x8298
返回的内存大小问题。
在一台8G内存的机器上
返回0x7Fx00
中间x忘了,好像是C。
这样 只有 511M

怎么得到内存实际大小?

作者: mdyblog    时间: 2014-2-20 10:11
哦!  还有个  0x82C0
回去试试。
作者: 不点    时间: 2014-2-20 11:23
在0x8298处的4字节整数,表示的是从 1M 开始的连续内存量,以 KB 为单位。

注意,BIOS 把内存搞成碎片,是不连续的。这里的内存量,只是从 1M 开始的最大连续内存块的大小。这个大小不可能超过 4G,因为在 4G 以内一定存在 ROM 空间(通常应该位于 4G 的顶部),这些会破坏连续性。在最理想的情况下,一个良好的 BIOS 可能会把扩展内存分为三部分,一部分是从 1M 开始的连续内存,接下来的第二部分就是 ROM 空间和其他各种不让用户使用的空间,直到 4G 这个界线处,而 4G 以上就是第三部分。然而,BIOS 一般都不会安排好内存的布局,有的甚至还故意制造内存碎块。所以,这个最理想的情况是难以达到的。然而在 4G 以上,通常是连续内存,因为很难有一个合理的理由去在 4G 以上制造不连续内存。不连续的内存主要是在 4G 以内才有的。

如果你有 4G 的 RAM,那么,通常有一部分 RAM 会被 BIOS 安排在 4G 以上的地址处,大约 700M 左右。具体究竟有多少内存被安排在 4G 以上,也是不确定的,不同的 BIOS,其处理方法也是不同的。

在 0x82C0 处,用 8 个字节来表示一个整数,它就是从 4G 开始的最大连续内存块的大小,单位也是 KB。

所以,如果你有 4G 的 RAM,那么在 0x82C0 处的值就是大于 0 的,即,它不会是 0。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3