Я запускаю 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 ответ
Он по-прежнему выделяется шине PCI, даже если не назначен конкретному порту или устройству.
Ваш вывод представляет собой дерево, в котором каждый отступ является подразделением в этом дереве. Перед адресом запроса стоит строка
c0000000-febfffff : PCI Bus 0000:00
Какой твой d0900000-dfffffff
адрес попадает в. Это означает, что весь диапазон адресов блокируется и выделяется для шины PCI и всех ее подустройств.
Вы можете считать это указателем «Зарезервировано для будущего использования», если хотите, но именно этот адрес заблокировал этот диапазон.
Ах, спасибо !! Конечно, в этом есть смысл. Возникает вопрос: есть ли способ редактировать адресное пространство шины PCI? Аппаратное обеспечение на этой машине никогда не изменится, поэтому, если бы это было возможно, могу ли я теоретически немного уменьшить адресное пространство, чтобы выделить дополнительное пространство для ОЗУ?
— FlashStopFall
2 часа назад
@FlashStopFall как пользователь не может сделать это самостоятельно. Это то, что определяет сборщик системы, и это зависит от того, как настроено оборудование, позволяет ли оно переназначать адресное пространство и действительно ли его использует прошивка системы, и все это, по сути, встроено в конструкцию системы и настройку за пределами доступа пользователей. . Я действительно помню некоторые системы в конце 32-битной эры, которые позволяли переназначение адресного пространства, что позволяло некоторым системам больше использовать область за пределами 3 ГБ, но поддержка была в лучшем случае неоднородной. 64-битная версия делала это практически бессмысленным.
— Мокубай♦
1 час назад