gpt4 book ai didi

c - 内存映射显示的 RAM 多于物理可用的 RAM

转载 作者:IT王子 更新时间:2023-10-28 23:38:22 33 4
gpt4 key购买 nike

我正在开发一个小型 x86 内核。我正在访问并尝试读取 GRUB 在多重引导 header 中提供的内存映射。我有一个 Intel i3 cpu 和 4 GiB 的 RAM。在这台机器上运行时,我正在阅读以下内存映射:

 --Base Address--          --Length--      --Type--

0x0000000000000000 0x000000000009d000 0x1
0x000000000009d000 0x0000000000003000 0x2
0x00000000000e0000 0x0000000000020000 0x2
0x0000000000100000 0x00000000bb53f000 0x1
0x00000000bb63f000 0x0000000000080000 0x2
0x00000000bb6bf000 0x0000000000100000 0x4
0x00000000bb7bf000 0x0000000000040000 0x3
0x00000000bb7ff000 0x0000000000001000 0x1
0x00000000bb800000 0x0000000004800000 0x2
0x00000000e0000000 0x0000000010000000 0x2
0x00000000feb00000 0x0000000000004000 0x2
0x00000000fec00000 0x0000000000001000 0x2
0x00000000fed10000 0x0000000000004000 0x2
0x00000000fed18000 0x0000000000002000 0x2
0x00000000fed1b000 0x0000000000005000 0x2
0x00000000fee00000 0x0000000000001000 0x2
0x00000000ffe80000 0x0000000000180000 0x2
0x0000000100000000 0x0000000038000000 0x1

当我总计可用内存区域时,我得到...

0x1(可用) - 3893.8 MiB

这似乎是正确的,将最后 200ish MiB 保留给其他设备。唯一的问题是其他内存类型的总数:

0x2、0x3、0x4 - 331.5 MiB

将我的 RAM 总量设置为 4225.3 MiB 或略高于 4.1 GiB,这引出了我的问题:

  1. 为什么我只安装了 4GiB 的 RAM?

  2. 为什么内存映射的最后一个基地址是0x0000000100000000?只有 4GiB 的 RAM,32 位应该是寻址所有它所需的最大地址大小。我是不是误会了什么?

最佳答案

一些想法:

  • 地址空间!= 物理内存大小。
  • i3 支持 64 位或具有 36 位 PAE 的 32 位模式的虚拟地址空间(可选,具有内核支持)。如果您在启动的 32 位系统中实际上有 4GiB 的 RAM 可用,则必须启用 PAE。查询方式:https://serverfault.com/q/247080
  • AFAIR,这些范围可能会重叠并以任何顺序出现,因此需要对最受限制的类型或范围拆分进行排序和重新键入。
  • 最后一个基地址 0x0000000100000000 >= 2^32。这通常是这样做的,因为硬件、ROM 镜像和其他特殊范围在(全部?)PC 中分配在 2^32 以下。因此,需要 PAE 或长模式来访问从 2^32 或以上开始的主内存范围。

编辑:

查看此处了解更多详情:http://wiki.osdev.org/Detecting_Memory_%28x86%29

编辑 2:

今天,我偶然发现了一个 Sysinternals 工具,它显示了我的 EFI 系统的以下物理范围映射,没有更改任何相关设置。可以看到,所有 64GiB 主内存都映射在 0x100000000,正好在 2^32:

Sysinternals RamMap on Win 7 / ASUS EFI BIOS

关于c - 内存映射显示的 RAM 多于物理可用的 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934894/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com