OSDev

для всех
Текущее время: 27 апр 2024, 16:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: куда копировать kernal
СообщениеДобавлено: 09 ноя 2013, 10:27 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
раньше загружал kernal куда попало, в первый попавшийся адрес,
но сейчас нужна нормальная работа с оперативкой
Mem Detector выдаёт несколько разделов памяти.
Код:
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009ec00 (usable)
 BIOS-e820: 000000000009ec00 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000009f931000 (usable)
 BIOS-e820: 000000009f931000 - 000000009f9cf000 (ACPI NVS)
 BIOS-e820: 000000009f9cf000 - 000000009fa42000 (usable)
 BIOS-e820: 000000009fa42000 - 000000009fa9a000 (reserved)
 BIOS-e820: 000000009fa9a000 - 000000009fad6000 (usable)
 BIOS-e820: 000000009fad6000 - 000000009fb1a000 (ACPI NVS)
 BIOS-e820: 000000009fb1a000 - 000000009fb2c000 (usable)
 BIOS-e820: 000000009fb2c000 - 000000009fb3a000 (ACPI data)
 BIOS-e820: 000000009fb3a000 - 000000009fc00000 (usable)
 BIOS-e820: 00000000ffe00000 - 00000000ffe0c000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000160000000 (usable)


а вот как в такой памяти чего делать пейджиго её склеивать что ли,
и самый первый раздел памяти это там где биосный бутт,
пробовал загружать в первый попавшийся раздел в самое начало и не получается,
как вот с этим делом бороться не понимаю

кстати то что даёт биос отличается от того что есть в VM машине
Код:
0000000000000000-000000000fffffff 00000000 Base RAM
00000000e0000000-00000000e05fffff 07220000 VRam
00000000f0000000-00000000f0000fff 00000000 PCNet
00000000f0080000-00000000f00fffff 03fd0000 PCNetShMem
00000000f0400000-00000000f07fffff 06e20000 VMMDev
00000000f0800000-00000000f0803fff 02a00000 VMMDev Heap
00000000fee00000-00000000fee00fff 00000000 APIC Memory
00000000ffff0000-00000000ffffffff 00000000 PC BIOS - 0xffffffff


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: куда копировать kernal
СообщениеДобавлено: 09 ноя 2013, 16:46 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Свободной считается память (usable), её код = 1. Куски можно склеивать страничной адресацией, или выбрать из кусков один самый крупный, но тогда будут потери если памяти >= 4ГБ.

В VM эмулируется совсем другой компьютер - виртуальный компьютер, поэтому не сравнивай.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: куда копировать kernal
СообщениеДобавлено: 09 ноя 2013, 21:53 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
scuter писал(а):
а вот как в такой памяти чего делать пейджиго её склеивать что ли
Вполне здравая мысль, если конечно речь идет об окончательном размещении ядра в памяти, а не о его загрузке первичным/вторичным загрузчиком. Если ты не планируешь раздувать файл ядра до размеров, превышающих прим. 0,5 Мб, можешь первоначально его загружать в базовую память. Этот подход хорош тем, что позволяет загружать ядро по фиксированному адресу, а также тем, что позволяет загружать ядро даже напрямую первичным загрузчиком. Впрочем, благодаря широкому распространению определенных загрузочных спецификаций/протоколов, ты можешь быть уверенным в том, что доступная расширенная память будет начинаться с адреса 0x100000 и не фрагментироваться на протяжении как минимум нескольких мегабайт. Т.е. если планируется загружать ядро исключительно вторичным загрузчиком, то можно выполнять загрузку по фиксированному адресу 0x100000.

Цитата:
и самый первый раздел памяти это там где биосный бутт,
пробовал загружать в первый попавшийся раздел в самое начало и не получается
"Самый первый раздел" замечателен тем, что память в диапазоне 0-4FFh включается в него, т.е. считается доступной, хотя мы знаем, что это не совсем так. При анализе карты памяти я отбрасываю все участки, начинающиеся ниже границы 0x100000, а размер доступной базовой памяти определяю через int 12h.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: куда копировать kernal
СообщениеДобавлено: 10 ноя 2013, 16:30 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 93
Зависит от того, в каком режиме он у тебя стартует...
Но, по любому, проще выбирать место, где гарантированно нет дырок в памяти...
2й мег вполне подходит - прямо с адреса 0x100000. Даже на не самых новых компах - самая нижняя встреченная дырка была на экзотическом HP ноуте - в районе 63го мега...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: куда копировать kernal
СообщениеДобавлено: 10 ноя 2013, 17:22 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Как по мне надо грузить вторичный загрузчик BaseMem и собирать ядро по страницам.
Собственно что и пытаюсь делать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB