OSDev

для всех
Текущее время: 29 апр 2024, 02:46

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




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:12 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Я просто спрашиваю объём и всё, то что в памяти визде дырки не знаю, кто их делает и сколько их там, вернее знаю как делают, но пока тоже не встречал и не думал как обходить, потом подумаю.
mov ax,0E801h
int 15h
mov [65086],bx
mov [65084],dx


Последний раз редактировалось Станислав 03 июн 2012, 10:25, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:19 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
"Дырки" - это диапазоны адресов, где 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 гигабайтовой границей их полно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:29 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Да, эту таблицу нужно использовать обязательно в своём менеджере памяти.
Кстати ACPI случайно не этим способом находится.


Последний раз редактировалось Станислав 03 июн 2012, 10:32, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:30 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:37 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Станислав писал(а):
Кстати ACPI случайно не этим способом находится.
??? Для детекта таблиц существует вполне определенный способ, который описан в спецификации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:38 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Станислав писал(а):
Да, эту таблицу нужно использовать обязательно в своём менеджере памяти.
Кстати ACPI случайно не этим способом находится.


Нет, ACPI находится побайтовым поиском RSDP сначала в EBDA, а потом в области кода биоса. Процесс описан в спецификации.

phantom-84 писал(а):
ACPI Spec. рекомендует ее использовать только, когда нет функции SMAP (0E820h). Кстати функции 0E801h тоже может не быть.


У меня только 64 бита, мне проще: нет функции SMAP - загрузчик выходит с ошибкой :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:47 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
grindars писал(а):
У меня только 64 бита, мне проще: нет функции SMAP - загрузчик выходит с ошибкой :)
Типа более древние функции, чем SMAP, и 64-разрядные процы - вещи несовместные? В принципе 64-разрядную систему можно раскрутить и на той памяти, которую возвращает 0E801h.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:49 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Я не встречал ни одной машины, где не было бы E820, но был бы 64-битный проц. Найдете такую - сделаю :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 03 июн 2012, 10:53 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Ща спаяю на коленке (читай, перепрошью BIOS) :lol:

У меня в общем случае в требованиях ядра 486+ (ядра, заточенные под более современные процы, в расчет не беру).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оперативная память RAM
СообщениеДобавлено: 04 июн 2012, 11:27 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Т.к. у меня ядро дуальное - 32/64, а детектирование памяти вообще работает в реальном режиме, то у меня полный разбор памяти, не только SMAP. Теоретически, моё ядро поддерживает системы, начиная с 386.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

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


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

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


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

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