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/ |