Неиспользуемое адресное пространство памяти 32 бита

Я запускаю Linux на своем Mac mini Core 2 Duo. Интересно то, что EFI для этой машины 32-битная, а ОС 64-битная. Из-за 32-битного EFI у меня есть только 4 ГБ адресного пространства. Часть этого пространства является вводом-выводом с отображением памяти, но после поиска (sudo cat)/proc/iomem, Я обнаружил довольно большие участки пространства, которые, кажется, не отображаются на карте. Например:

00000000-00000fff : Reserved
00001000-0009fbff : System RAM
0009fc00-0009ffff : Reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c7fff : Video ROM
000e0000-000fffff : Reserved
  000f0000-000fffff : System ROM
00100000-be0c4fff : System RAM
  afe00000-b0c00eb0 : Kernel code
  b0c00eb1-b165817f : Kernel data
  b1927000-b1dfffff : Kernel bss
be0c5000-be2c5fff : ACPI Non-volatile Storage
be2c6000-beebdfff : ACPI Tables
beebe000-beeeefff : ACPI Non-volatile Storage
beeef000-beefffff : ACPI Tables
bef00000-bfffffff : Reserved
  bf000000-bffc0000 : Graphics Stolen Memory
c0000000-febfffff : PCI Bus 0000:00
  c0000000-cfffffff : 0000:00:02.0
  d0000000-d00fffff : PCI Bus 0000:03
    d0000000-d0000fff : 0000:03:03.0
      d0000000-d0000fff : firewire_ohci
  d0100000-d01fffff : PCI Bus 0000:02
    d0100000-d010ffff : 0000:02:00.0
      d0100000-d010ffff : ath5k
  d0200000-d02fffff : PCI Bus 0000:01
    d0200000-d0203fff : 0000:01:00.0
      d0200000-d0203fff : sky2
    d0220000-d023ffff : 0000:01:00.0
  d0300000-d0300fff : Intel Flush Page
  d0380000-d03fffff : 0000:00:02.0
  d0400000-d043ffff : 0000:00:02.0
  d0440000-d0443fff : 0000:00:1b.0
    d0440000-d0443fff : ICH HD audio
  d0444000-d0444fff : 0000:00:07.0
  d0445000-d04453ff : 0000:00:1f.2
  d0445400-d04457ff : 0000:00:1d.7
    d0445400-d04457ff : ehci_hcd
  d0500000-d06fffff : PCI Bus 0000:01
  d0700000-d08fffff : PCI Bus 0000:02
  e0000000-efffffff : PCI MMCONFIG 0000 [bus 00-ff]
    e0000000-efffffff : Reserved
      e0000000-efffffff : pnp 00:00
fec00000-fec00fff : Reserved
  fec00000-fec003ff : IOAPIC 0
fed00000-fed003ff : HPET 0
  fed00000-fed003ff : pnp 00:01
fed14000-fed19fff : Reserved
  fed14000-fed17fff : pnp 00:00
  fed18000-fed18fff : pnp 00:00
  fed19000-fed19fff : pnp 00:00
fed1c000-fed1ffff : Reserved
  fed1c000-fed1ffff : pnp 00:00
    fed1f410-fed1f414 : iTCO_wdt.1.auto
fed20000-fed8ffff : pnp 00:00
fee00000-fee00fff : Local APIC
  fee00000-fee00fff : Reserved
ff000000-ffffffff : INT0800:00
  ffe00000-ffffffff : Reserved

Системная оперативная память имеет адресное пространство 2,969 ГБ (00100000-be0c4fff), это то, сколько оперативной памяти распознает мой компьютер. Одно из мест, на которое я обращаю внимание, — это после последней шины PCI (d08fffff), где, похоже, ничего нет из (d0900000-dfffffff), что составляет 247 МБ адресного пространства.

Почему здесь ничего нет? Если что-то есть, почему я этого не вижу?

Возможно, стоит упомянуть, что у меня установлены две карты памяти объемом 2 ГБ, и обе распознаются, но эта система никогда не могла видеть больше 2,9 ГБ, потому что остальная часть адресного пространства используется (по крайней мере, я так думал).

1 ответ
1

Он по-прежнему выделяется шине PCI, даже если не назначен конкретному порту или устройству.

Ваш вывод представляет собой дерево, в котором каждый отступ является подразделением в этом дереве. Перед адресом запроса стоит строка

c0000000-febfffff : PCI Bus 0000:00

Какой твой d0900000-dfffffff адрес попадает в. Это означает, что весь диапазон адресов блокируется и выделяется для шины PCI и всех ее подустройств.

Вы можете считать это указателем «Зарезервировано для будущего использования», если хотите, но именно этот адрес заблокировал этот диапазон.

  • Ах, спасибо !! Конечно, в этом есть смысл. Возникает вопрос: есть ли способ редактировать адресное пространство шины PCI? Аппаратное обеспечение на этой машине никогда не изменится, поэтому, если бы это было возможно, могу ли я теоретически немного уменьшить адресное пространство, чтобы выделить дополнительное пространство для ОЗУ?

    — FlashStopFall

    2 часа назад

  • @FlashStopFall как пользователь не может сделать это самостоятельно. Это то, что определяет сборщик системы, и это зависит от того, как настроено оборудование, позволяет ли оно переназначать адресное пространство и действительно ли его использует прошивка системы, и все это, по сути, встроено в конструкцию системы и настройку за пределами доступа пользователей. . Я действительно помню некоторые системы в конце 32-битной эры, которые позволяли переназначение адресного пространства, что позволяло некоторым системам больше использовать область за пределами 3 ГБ, но поддержка была в лучшем случае неоднородной. 64-битная версия делала это практически бессмысленным.

    — Мокубай

    1 час назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *