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

Станислав писал(а):
Я просто спрашиваю объём и всё, то что в памяти визде дырки не знаю, кто их делает и сколько их там, вернее знаю как делают, но пока тоже не встречал и не думал как обходить, потом подумаю.
mov ax,0E801h
int 15h
mov [65086],bx
mov [65084],dx
Древняя и мегабажная функция. Дыру под 16-ым мегом она в состоянии учесть, но не более того. ACPI Spec. рекомендует ее использовать только, когда нет функции SMAP (0E820h). Кстати функции 0E801h тоже может не быть.

Автор:  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) :lol:

У меня в общем случае в требованиях ядра 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/