什么硬件设备占用了我的 4GB RAM 中的 1.4GB?

什么硬件设备占用了我的 4GB RAM 中的 1.4GB?

我在配备 4GB RAM 的联想 530 笔记本上使用 64 位 Windows 7。

但是,我的任务管理器显示 RAM 数量只有 2.6GB,资源监视器显示 1.4 GB“由硬件使用”:

资源监视器截图

显然,我想使用更多的 RAM(例如,目前无法使用 2GB RAM 启动 VirtualBox VM)。

因此我开始寻找哪个设备可能是导致我可用 RAM 如此之少的原因,以及我是否可以更新其驱动程序或禁用它......

首先,我尝试使用 64 位 Linux Live ISO (grml64) 来排除任何驱动程序问题,那里的内存情况相同(也只有 2.6GB 可用/proc/meminfo)。其他人建议msconfig可能设置了内存限制,但没有设置(如果我将内存限制设置为例如 3.5GB,可用内存会减少 0.5GB)。

接下来我尝试meminfo -r输出以下内容:

MemInfo v2.10 - Show PFN database information
C:\Users\Michi\Desktop>meminfo -r
Copyright (C) 2007-2009 Alex Ionescu
www.alex-ionescu.com

Physical Memory Range: 0000000000001000 to 000000000009D000 (156 pages, 624 KB)
Physical Memory Range: 0000000000100000 to 0000000020000000 (130816 pages, 523264 KB)
Physical Memory Range: 0000000020200000 to 0000000040004000 (130564 pages, 522256 KB)
Physical Memory Range: 0000000040005000 to 00000000871F2000 (291309 pages, 1165236 KB)
Physical Memory Range: 0000000100000000 to 000000011F600000 (128512 pages, 514048 KB)
MmHighestPhysicalPage: 1177088

因此,从 0x871F2000 到 0x100000000 的内存不可用,大约有 1.8 GB,但 4G 以上的可用内存范围只有大约 500 MB,差额大约是我“寻找”的 1.4 GB。

通常,我的期望(从旧计算机也从 DOS 时代开始)是当硬件“映射”某个内存范围时,它会将其映射到自己的(虚拟或真实)内存上,并且内存量会“出现”在内存范围的末尾(就像 4GB 以上约 500MB 的情况一样)。

设备管理器中的内存映射如下所示,0x871F 处没有任何内容...:

            [00000000000A0000 - 00000000000BFFFF]  Intel(R) HD Graphics 4000
            [00000000000A0000 - 00000000000BFFFF]  PCI bus
            [00000000DFA00000 - 00000000FEAFFFFF]  PCI bus
            [00000000E0000000 - 00000000EFFFFFFF]  Intel(R) HD Graphics 4000
            [00000000F0000000 - 00000000F03FFFFF]  Intel(R) HD Graphics 4000
            [00000000F0400000 - 00000000F0BFFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 1 - 1E10
            [00000000F0C00000 - 00000000F13FFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 3 - 1E14
            [00000000F1400000 - 00000000F1403FFF]  Realtek PCIe GBE Family Controller
            [00000000F1400000 - 00000000F14FFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 4 - 1E16
            [00000000F1404000 - 00000000F1404FFF]  Realtek PCIe GBE Family Controller
            [00000000F1500000 - 00000000F1CFFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 3 - 1E14
            [00000000F1D00000 - 00000000F1D03FFF]  1x1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter
            [00000000F1D00000 - 00000000F1DFFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 2 - 1E12
            [00000000F1E00000 - 00000000F25FFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 1 - 1E10
            [00000000F2600000 - 00000000F260FFFF]  Intel(R) USB 3.0 eXtensible-Hostcontroller
            [00000000F2610000 - 00000000F2613FFF]  High Definition Audio-Controller
            [00000000F2614000 - 00000000F26140FF]  Intel(R) 7 Series/C216 Chipset Family SMBus Host Controller - 1E22
            [00000000F2615000 - 00000000F261500F]  Intel(R) Management Engine Interface 
            [00000000F2618000 - 00000000F26187FF]  Intel(R) 7 Series Chipset Family SATA AHCI Controller
            [00000000F2619000 - 00000000F26193FF]  Intel(R) 7 Series/C216 Chipset Family USB Enhanced Host Controller - 1E26
            [00000000F261A000 - 00000000F261A3FF]  Intel(R) 7 Series/C216 Chipset Family USB Enhanced Host Controller - 1E2D
            [00000000F8000000 - 00000000FBFFFFFF]  Hauptplatinenressourcen
            [00000000FE800000 - 00000000FE80FFFF]  Hauptplatinenressourcen
            [00000000FED00000 - 00000000FED003FF]  Hochpräzisionsereigniszeitgeber
            [00000000FED10000 - 00000000FED17FFF]  Hauptplatinenressourcen
            [00000000FED18000 - 00000000FED18FFF]  Hauptplatinenressourcen
            [00000000FED19000 - 00000000FED19FFF]  Hauptplatinenressourcen
            [00000000FED1C000 - 00000000FED1FFFF]  Hauptplatinenressourcen
            [00000000FED20000 - 00000000FED3FFFF]  Hauptplatinenressourcen
            [00000000FED40000 - 00000000FED44FFF]  Trusted Platform Module 1.2
            [00000000FED45000 - 00000000FED8FFFF]  Hauptplatinenressourcen
            [00000000FED90000 - 00000000FED93FFF]  Hauptplatinenressourcen
            [00000000FEE00000 - 00000000FEEFFFFF]  Hauptplatinenressourcen
            [00000000FF000000 - 00000000FFFFFFFF]  Hauptplatinenressourcen
            [00000000FF000000 - 00000000FFFFFFFF]  Intel(R) 82802 Firmwarehub
            [00000000FFFFF000 - 00000000FFFFFFFF]  Hauptplatinenressourcen

由于 Intel HD Graphics 使用共享内存,经验证,它目前仅使用 83 MB:

高清显卡控制中心

有什么办法可以恢复我的记忆吗?

编辑:

笔记本电脑配备了这种 RAM 配置(使用了 1 组 4GB),还预装了 Windows 7。半年前我确实重新安装了 Windows 7(并使用联想更新向导安装了所有驱动程序),当时我也安装了 BIOS/固件更新,但从未查看过资源监视器,因为我根本不需要额外的 RAM,所以我无法判断当我拿到它时是否已经存在这种效果。

编辑2:

显然,@A32167 是对的。我找到了一个在 WebGL 中加载纹理的小示例,对其进行了修改,以加载 8192x8192 纹理(参见http://jsfiddle.net/q4SAS/),在 Google Chrome 中打开它,虽然“正在使用的图形内存”增加到了 918MB,但硬件保留内存并没有变化:

运行 WebGL 示例后的资源监控和控制中心

虽然这回答了我的问题,但当然仍然存在的问题是为什么联想宣传动态图形内存分配,以及是否有办法减少分配的内存......

编辑3:

不幸的是,这并不是故事的结束——请看这里: 什么硬件设备曾经占用了我的 4GB RAM 中的 1.4GB,而现在在没有任何硬件变化的情况下突然占用了 2.2GB?

答案1

上面的显卡配置界面上,1138“最大”内存是不是预订的尽管目前只使用了 83,但是对于该卡来说?

答案2

终于找到了正确答案,恢复了记忆。

详情https://superuser.com/a/762821/1724(对此问题的后续问题的回答),UEFI 实现的一个功能是在每次启动之前更新内存映射(持久存储在 UEFI 变量中),以防发生任何变化。它显然没有考虑到在启动之前,另一个 UEFI 启动条目可能已失败并且未清理使用的内存(取决于引导加载程序),导致每次 UEFI 启动失败后可用内存减少。

手动修复内存映射(存储在 UEFI 变量中MemoryTypeInformation)可以解决该问题 - 虽然 TianoCore 参考实现建议删除变量也应该有效,但我不想冒这个险。

答案3

这可能是不支持的配置吗?此帖子建议,可能重复:

为什么在 Windows 7 中我的所有额外 RAM 都被标记为“硬件保留”?

答案4

BIOS 可能已修复此问题。查找 Memory Hoisting 或 Memory Hole 设置。

它们所做的是修改内存映射,以便实际 RAM 映射到 4 GB 以上,在 RAM 映射中留下一个空位供设备使用。

这样设置的原因是,如果 RAM 超过 4 GB,32 位操作系统将无法访问它。

相关内容