OSDev

для всех
Текущее время: 01 май 2024, 07:39

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 06 июл 2010, 18:30 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Цитата:
BIOS использует cs, ds и es. Они должны быть строго 16-битными, поэтому продолжай использовать регистры fs и gs.

И что? В реальном режиме процессор НЕ трогает лимиты сегментов. Меняется только база. Соответственно если я загружу в DS сегмент с базой 0 и лимитом 4 ГБ, а потом перейду в реальный режим и помещу в него 0x1000, то я получу сегмент с базой 0x10000 и лимитом по-прежнему 4 ГБ. BIOS, поскольку наивно предполагает, что все сегменты 16-битные не будет использовать расширенные регистры для доступа к данным через них, а только 16-битные. Соответственно обратиться к данным выше 64 КБ не сможет.Так что использовать можно любые сегментые регистры кроме CS. А BIOS как уже сказали выше использует SMM и никакие нереальные режимы ему не нужны.

Кстати, а почему бы не обращаться к USB и проверять пароль, брелок и пр. уже после выбора ОС? Тогда то, что отвалится клавиатура будет уже всё равно, поскольку сразу же стартует ОС и берёт контроль над USB в свои руки. Не думаю, что список ОС настолько секретная информация, чтобы для её просмотра требовался пароль.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 06 июл 2010, 20:18 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
KIV, насчёт ds и es согласен. Я посмотрел исходники DOS драйвера XMS himem.sys, там тоже используются ds и es.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 10:03 

Зарегистрирован: 02 июл 2010, 14:30
Сообщения: 6
phantom-84, а каким образом у тебя клавиатура в PM работает, если в PM даже обработчики прерываний уже совсем не те, которые находятся с 0 по 0x400, а те, которые описаны в IDT? Или ты с ней не по прерываниям работаешь? Хотя, в принципе, не важно, контроллер-то всё равно ресетить.
В нереальном режиме можно и на C без особых проблем писать. Просто придётся поразбираться чуть. Всё-таки, под тем же DOSом писали не только на ассемблере, и всё работало ;)

KIV, а каким образом мы это сделаем? Полезем в загрузчик той же винды? Рискованно слишком, можно и наворотить чего. Системы-то разные...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 11:59 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Цитата:
а каким образом мы это сделаем? Полезем в загрузчик той же винды? Рискованно слишком, можно и наворотить чего. Системы-то разные...

Я имел ввиду, что загрузчик уже знает список операционных систем. Он показывает меню. Пользователь выбирает ОС. А потом у него просят пароль, белок или что там надо. Если не подходит ключ/пароль, то сообщаем об ошибке ребутимся, а если подходит, то загружаем по адресу 0x7C00 уже загрузчик той же винды и передаём ему управление. Начальному загрузчику ОС не нужна (если там не будет предложен выбор ещё ОС) поддержка клавиатуры и он спокойно загрузит ядро, перейдёт в PM, а дальше уже и сама ОС сможет разобраться с USB без BIOS.
Цитата:
а каким образом у тебя клавиатура в PM работает, если в PM даже обработчики прерываний уже совсем не те, которые находятся с 0 по 0x400, а те, которые описаны в IDT? Или ты с ней не по прерываниям работаешь?

USB мышь и клава могут работать в как бы сказать режиме совместимости. У процессора есть специальный режим - SMM (System Managment Mode). Он переходит в него только по сигналу внешних усройств. Например, USB, который имеет опцию вызова кода SMM при сообщениях от USB клавиатуры и мыши. Код SMM хранится в памяти недоступной без дополнительных действий и соответственно не будет разрушен без вашем особенного желания. А этот код SMM пользуюсь возможностью контроллера 8042 помещает в его буфер код клавиши и вызывает IRQ0. Для ОС это выглядит абсолютно прозрачно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 15:52 

Зарегистрирован: 02 июл 2010, 14:30
Сообщения: 6
Допустим, даже можно попробовать обойти загрузчик. Но что делать с виндовым ntldr, который может предложить выбрать режим загрузки системы? Там мы уже врядли что-то сделаем.

А SMM есть пока ещё далеко не везде. Во многих системах обработкой USB Legacy занимается именно BIOS, который, если у него забрать управление и сбросить контроллер, не будет уже делать повторную инициализацию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 15:57 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
SMM есть везде, начиная с процессора 80386SL. Только вот перехватить его далеко не везде можно, да и не нужно: программы этого режима (являющиеся частью БИОС) тесно завязаны на особенности аппаратуры материнки, и некорректным вмешательством запросто можно что-нибудь пожечь нафиг (например, не переключить вовремя фазы питания и т.п.).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 18:40 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Хрен писал(а):
phantom-84, а каким образом у тебя клавиатура в PM работает, если в PM даже обработчики прерываний уже совсем не те, которые находятся с 0 по 0x400, а те, которые описаны в IDT? Или ты с ней не по прерываниям работаешь? Хотя, в принципе, не важно, контроллер-то всё равно ресетить.
Уже ответили.
Хрен писал(а):
В нереальном режиме можно и на C без особых проблем писать. Просто придётся поразбираться чуть. Всё-таки, под тем же DOSом писали не только на ассемблере, и всё работало ;)
Не все современные компиляторы могут генерировать 16-разрядный код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 18:51 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Хрен писал(а):
Допустим, даже можно попробовать обойти загрузчик. Но что делать с виндовым ntldr, который может предложить выбрать режим загрузки системы? Там мы уже врядли что-то сделаем.
В режиме администратора всегда можно перенастроить или даже переписать загрузчик. Здесь уже следует использовать защиту на уровне ОС. А реализовать выбор загружаемой ОС ты можешь либо в рамках твоей программы, либо использовать сторонний софт, который не позволял бы пользователю изменить конфигурацию из загрузочного меню.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 07 июл 2010, 20:52 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Видимо, после работы с ключём, придётся установить свой RM обработчик прерываний клавиатуры вместо стандартного BIOS, и возможно заменить ещё пару основных клавиатурных функций BIOS. Переделать драйвер клавиатуры из PM в RM наверно будет не сложно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОС для нереального режима
СообщениеДобавлено: 08 июл 2010, 09:29 

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


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

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


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

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


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

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