[freebsd] 13.0 memstick не грузится

Eugene Grosbein eugen at grosbein.net
Fri Dec 31 20:05:59 EET 2021


01.01.2022 0:28, spell at itl.ua пишет:
> 31 декабря 2021 г., 18:49, "Eugene Grosbein" <eugen at grosbein.net> написал:
> 
>> 31.12.2021 23:00, spell at itl.ua пишет:
>>
>>> 31 декабря 2021 г., 17:53, "Anton Saietskii" <vsasjason at gmail.com
>>> <vsasjason at gmail.com?to=%22Anton%20Saietskii%22%20<vsasjason at gmail.com>>> написал:
>>>
>>> *без сарказма* Я вот не помню -- а кто-то обещал, что там будет видна вся память?
>>>
>>> Мне - нет :)
>>> Но на другом ноутбуке в этом месте показывается около 2G (столько и есть)
>>>
>>> А что тогда значит это второе число? (631kB/523264kB)
>>
>> Когда загрузчик определяет, сколько памяти ему можно использовать
>> под свою работу (в частности, для malloc), он использует сервис BIOS для этого:
>>
>> https://wiki.osdev.org/Detecting_Memory_(x86)#Detecting_Upper_Memory
>>
>> Так как BIOS резервирует часть адресного пространства для различных устройств,
>> то оставшаяся доступная память может быть разбита на "сегменты" разного размера.
>>
>> Для упрощения кода загрузчик ищет непрерывный сегмент подходящего размера.
>> Обычно это сегмент, который начинается со второго мегабайта, то есть с начала
>> Extended memory в терминах MS-DOS.
>>
>> Второе число это размер найденного сегмента, в котором будет располагатся,
>> в частности, "куча" загрузчика (heap/malloc).
> 
> Агаааа, вот оно что.
> А в dmesg.boot сообщения между real memory и available memory - это этот же список
> доступных сегментов?

В основе наверняка да, но в dmesg.boot идут сообщения от ядра, а не загрузчика
и теоретически возможны некоторые расхождения, потому что BIOS может показывать
сегменты разных типов, не только доступных для использования непосредственно,
так что загрузчик/ядро могут не одинаково к ним относиться.

> Интересно, почему мой биос подробил память аж на 6 кусков (в вашем примере всего 3).

Потому что железо другое.



More information about the freebsd mailing list