OSDev http://osdev.su/ |
|
оперативная память RAM http://osdev.su/viewtopic.php?f=6&t=570 |
Страница 5 из 7 |
Автор: | Станислав [ 03 июн 2012, 10:12 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Я просто спрашиваю объём и всё, то что в памяти визде дырки не знаю, кто их делает и сколько их там, вернее знаю как делают, но пока тоже не встречал и не думал как обходить, потом подумаю. mov ax,0E801h int 15h mov [65086],bx mov [65084],dx |
Автор: | grindars [ 03 июн 2012, 10:19 ] |
Заголовок сообщения: | Re: оперативная память RAM |
"Дырки" - это диапазоны адресов, где BIOS решил разместить регистры устройств (встроенных в мать и PCI). Вот, например, карта памяти с моего рабочего ПК: Код: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009c000 (usable) [ 0.000000] BIOS-e820: 000000000009c000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000ce5ff000 (usable) [ 0.000000] BIOS-e820: 00000000ce5ff000 - 00000000ce713000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000ce713000 - 00000000ce71c000 (ACPI data) [ 0.000000] BIOS-e820: 00000000ce71c000 - 00000000ceaa5000 (reserved) [ 0.000000] BIOS-e820: 00000000ceaa5000 - 00000000ceab6000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000ceab6000 - 00000000cead8000 (reserved) [ 0.000000] BIOS-e820: 00000000cead8000 - 00000000ceada000 (usable) [ 0.000000] BIOS-e820: 00000000ceada000 - 00000000ceb27000 (reserved) [ 0.000000] BIOS-e820: 00000000ceb27000 - 00000000ceb31000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000ceb31000 - 00000000ceb65000 (reserved) [ 0.000000] BIOS-e820: 00000000ceb65000 - 00000000ced68000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000ced68000 - 00000000cf000000 (usable) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000730000000 (usable) Это - результат работы функции E820 прерывания 15. Все, что не помечено здесь как usable, использовать системе нельзя. Дыры в 16 метре тут нет, но перед 4 гигабайтовой границей их полно. |
Автор: | Станислав [ 03 июн 2012, 10:29 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Да, эту таблицу нужно использовать обязательно в своём менеджере памяти. Кстати ACPI случайно не этим способом находится. |
Автор: | phantom-84 [ 03 июн 2012, 10:30 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Станислав писал(а): Я просто спрашиваю объём и всё, то что в памяти визде дырки не знаю, кто их делает и сколько их там, вернее знаю как делают, но пока тоже не встречал и не думал как обходить, потом подумаю. Древняя и мегабажная функция. Дыру под 16-ым мегом она в состоянии учесть, но не более того. ACPI Spec. рекомендует ее использовать только, когда нет функции SMAP (0E820h). Кстати функции 0E801h тоже может не быть.
mov ax,0E801h int 15h mov [65086],bx mov [65084],dx |
Автор: | phantom-84 [ 03 июн 2012, 10:37 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Станислав писал(а): Кстати ACPI случайно не этим способом находится. ??? Для детекта таблиц существует вполне определенный способ, который описан в спецификации.
|
Автор: | grindars [ 03 июн 2012, 10:38 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Станислав писал(а): Да, эту таблицу нужно использовать обязательно в своём менеджере памяти. Кстати ACPI случайно не этим способом находится. Нет, ACPI находится побайтовым поиском RSDP сначала в EBDA, а потом в области кода биоса. Процесс описан в спецификации. phantom-84 писал(а): ACPI Spec. рекомендует ее использовать только, когда нет функции SMAP (0E820h). Кстати функции 0E801h тоже может не быть. У меня только 64 бита, мне проще: нет функции SMAP - загрузчик выходит с ошибкой |
Автор: | phantom-84 [ 03 июн 2012, 10:47 ] |
Заголовок сообщения: | Re: оперативная память RAM |
grindars писал(а): У меня только 64 бита, мне проще: нет функции SMAP - загрузчик выходит с ошибкой Типа более древние функции, чем SMAP, и 64-разрядные процы - вещи несовместные? В принципе 64-разрядную систему можно раскрутить и на той памяти, которую возвращает 0E801h.
|
Автор: | grindars [ 03 июн 2012, 10:49 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Я не встречал ни одной машины, где не было бы E820, но был бы 64-битный проц. Найдете такую - сделаю |
Автор: | phantom-84 [ 03 июн 2012, 10:53 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Ща спаяю на коленке (читай, перепрошью BIOS) У меня в общем случае в требованиях ядра 486+ (ядра, заточенные под более современные процы, в расчет не беру). |
Автор: | Yoda [ 04 июн 2012, 11:27 ] |
Заголовок сообщения: | Re: оперативная память RAM |
Т.к. у меня ядро дуальное - 32/64, а детектирование памяти вообще работает в реальном режиме, то у меня полный разбор памяти, не только SMAP. Теоретически, моё ядро поддерживает системы, начиная с 386. |
Страница 5 из 7 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |