OSDev
http://osdev.su/

куда копировать kernal
http://osdev.su/viewtopic.php?f=6&t=818
Страница 1 из 1

Автор:  scuter [ 09 ноя 2013, 10:27 ]
Заголовок сообщения:  куда копировать kernal

раньше загружал 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

Автор:  Himik [ 09 ноя 2013, 16:46 ]
Заголовок сообщения:  Re: куда копировать kernal

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

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

Автор:  phantom-84 [ 09 ноя 2013, 21:53 ]
Заголовок сообщения:  Re: куда копировать kernal

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

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

Автор:  dixie [ 10 ноя 2013, 16:30 ]
Заголовок сообщения:  Re: куда копировать kernal

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

Автор:  pavia [ 10 ноя 2013, 17:22 ]
Заголовок сообщения:  Re: куда копировать kernal

Как по мне надо грузить вторичный загрузчик BaseMem и собирать ядро по страницам.
Собственно что и пытаюсь делать.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/