OSDev

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

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 19 июл 2014, 11:33 

Зарегистрирован: 18 июл 2014, 18:13
Сообщения: 13
Значит если я не хочу в принципе после инициализации своей программы использовать биос, то и BDA мне совсем не нужен? Все необходимые обработчики прерываний будут в самой программе, к примеру блок описания оборудования будет создан в самой программе. Значит программа может работать независимо, используя обращения к своим драйверам и ей совершенно побоку что биос вообще существует?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 11:36 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
BDA необходимо сохранять в абсолютно обязательном порядке. Эти области могут использоваться кодом BIOSа для режима SMM, на что Вы никак повлиять не можете. И BDA состоит из нескольких участков -- сразу за векторами прерываний реального режима, в верхней части нижней памяти (т.е. около границы 640 Кбайт) и выше 1 Мбайта (где угодно и сколько угодно). Поэтому надо всегда спрашивать у BIOS объём имеющейся нижней памяти (он будет меньше 640 Кбайт -- как раз потому, что часть занята под данные BIOS), а также узнавать карту распределения памяти свыше 1 Мбайта.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 11:59 

Зарегистрирован: 18 июл 2014, 18:13
Сообщения: 13
короче как ни скакай, биос не обскачешь? насчет smm мне еще почитать надо, не обладаю достаточной информацией чтобы обсуждать... в общем размещение IDT с адреса 0070:0000 (ну предварительно спросив разрешения у биос) как бы является нормальной практикой и отклоняться от нее (чтобы не нажить гемороя) не рекомендуется? Адрес беру по выводу команды mem под ms-dos 6.22, там с этого адреса начинается IO SYSTEM DATA, то есть использование памяти уже операционной системой непосредственно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 16:34 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Demonikss писал(а):
Не понимаю про какое ядро идет в данном случае речь. Если про то что функции биос, так я ясно выразился что не хочу их использовать. Если про ядро любой операционной системы, то это уже зависит от реализации самого драйвера. Я говорю про низкоуровневое программирование на языке ассемблера любого кода в защищенном режиме.
Я говорил о ядре ОС защищенного режима. Вы можете унаследовать состояние индикаторов от BIOS. Например, в настройках BIOS может быть указание, включать при старте НамЛок или нет. Вы можете эту настройку унаследовать в вашем коде защищенного режима.

Естественно, в защищенном режиме при обработке NMI используется дескриптор, размещенный в IDT.

Что касается размера BDA, то я всегда использовал память, начиная с адреса 500h, под свои нужды. Проблем никогда не было. Область данных BIOS в конце базовой памяти обычно называют EBDA. Ее стартовый адрес, т.е. размер доступной базовой памяти нужно определять обязательно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 17:02 

Зарегистрирован: 18 июл 2014, 18:13
Сообщения: 13
Ну вопрос с размещением IDT я уже для себя прояснил. Теперь разбираюсь с определением доступного размера памяти. Думаю это можно будет вынести в отдельную тему так как вопрос именно по размещению IDT как мне кажется раскрыт полностью и обоснован со всех позиций.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 17:12 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
я юзаю всю память первого метра под GDT, IDT, и под прочие штуки системы. при этом я не затираю вектора прерываний RM. вот моя карта распределения памяти
Начальный адрес | Размер | Использование
0 | 600h | Таблица векторов прерываний защищенного режима + переменные BIOS
600h | GDT_SIZE | Таблица GDT
10600h | IDT_SIZE |Таблица IDT
20600h | 12 байт | Значения для регистров GDTR и IDTR
2060Ch | 1F4h | Незанятая область памяти
30600h | MAX_SERVICES_COUNT*4 | Каталог таблиц функций сервисов
30600h+ MAX_SERVICES_COUNT*4 | MAX_SERVICES_COUNT* MAX_SERVICES_FUNC*4 | Таблицы адресов функций сервисов
96000h |4 КБайт | Каталог таблиц страниц
100000h |Варьируется в зависимости от установленной памяти. Но не более 4 Мбайт | таблицы страниц виртуальной памяти
Варьируется в зависимости от установленной памяти. Но не более 5 Мбайт | Вся оставшаяся доступная память | Ядро + приложения
конечно коряво написано, но кума надо тот поймет


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 19:23 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Demonikss, была недавно тема. Плюс поиск по форуму.

Rammstein, из базовой памяти использую только первую страницу. Все прочее уже вариативно, т.к. работает через пейджинг. Зачем вам полноразмерная GDT? Да и под IDT взято явно с запасом :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 21:05 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
phantom-84, взято все по максимуму, чтобы потом небыло гемороя с добавлением дескрипторов. а вообще только из-за того, чтобы хоть чем-то ее забить, ибо жалко мне первый мегабайт отдавать "пустоте". как-то так :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 22:23 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Rammstein писал(а):
взято все по максимуму, чтобы потом небыло гемороя с добавлением дескрипторов.
В защищенном режиме максимальный размер IDT – 2 кб. Зачем вам 64 кб?

Цитата:
а вообще только из-за того, чтобы хоть чем-то ее забить, ибо жалко мне первый мегабайт отдавать "пустоте". как-то так :)
Так используйте свободную память по назначению.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июл 2014, 22:35 

Зарегистрирован: 18 июл 2014, 18:13
Сообщения: 13
phantom-84 писал(а):
Demonikss, была недавно тема. Плюс поиск по форуму.


Я хотел понять почему именно делается такое размещение. В других темах этого полностью не раскрыто. Если бы там было раскрыто полностью мне не нужно было бы создавать новую тему, прочитал бы в других. Про SMM например нигде не встречал упоминания, или плохо искал?


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

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


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

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


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

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