OSDev

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

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




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

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
418ImATeapot писал(а):
Я, видимо, просто не умею формулировать. Извините.

Допустим, произошёл БСОД, или просто ОСь уже загрузилась, а драйвера - нет (как в данном случае). Видеорежим неизвестен. Необходимо вывести на экран сообщение не переключаясь в RM.
Извините, но так не делают. Если у тебя нет видеодрайвера и ты даже не удосужился на начальном этапе выставить какой-нибудь "известный" видеорежим (хотя бы при помощи BIOS), то что-либо выводить на экран ты не имеешь права. Сначала установка режима (или полномасштабный детект видеоаппаратуры и установленного режима), потом вывод.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переключение в текстовый режим
СообщениеДобавлено: 31 янв 2012, 16:15 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Если я правильно помню, то Винда, в случае BSOD-а делает хитрый трюк. Она уходит назад в реальный режим и дергает прерывания BIOS-а. Можешь посмотреть/покопать в этом направлении. Преимущество подхода состоит как раз в том, что абсолютно безразлично из какого режима ты будешь уходить в этот трюк, и что делали различные видеодрайверы до этого. Вошел в BIOS, сделал сброс видеосистемы - лицезреешь родной тестовый видеорежим. Вот в нем BSOD потом и рисуется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переключение в текстовый режим
СообщениеДобавлено: 31 янв 2012, 16:39 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Те, проще всего, отдельный модуль, в RM или в нереальном?

_________________
Found a CPU. LAPIC ID: 00


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

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Я, видимо, просто не умею формулировать. Извините.

Допустим, произошёл БСОД, или просто ОСь уже загрузилась, а драйвера - нет (как в данном случае). Видеорежим неизвестен. Необходимо вывести на экран сообщение не переключаясь в RM.

такого быть не должно. В MBR включаем известный видео режим.
Данные выводятся на экран через 0b800h. До тех пор пока не будет загружен видео драйвер. Далее вывод идёт через него.
В случае смерти видео драйвера. Производим его повторный запуск. Если не помогает то и выводить не стоит.
А, то что winXP умирает с БСОД, это говнокод в ядре. Которую решили подпоркой в виде БСОД. БСОД должен появляться только при аппаратной аварии железа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переключение в текстовый режим
СообщениеДобавлено: 31 янв 2012, 23:17 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Можно конечно и в MBR ))) Но лучше в ядре/вторичном загрузчике. Кстати как раз-таки в MBR-/первичных загрузчиках при использовании функции телетайпного вывода видеорежим устанавливать не нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переключение в текстовый режим
СообщениеДобавлено: 01 фев 2012, 09:18 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
pavia писал(а):
Цитата:
Я, видимо, просто не умею формулировать. Извините.

Допустим, произошёл БСОД, или просто ОСь уже загрузилась, а драйвера - нет (как в данном случае). Видеорежим неизвестен. Необходимо вывести на экран сообщение не переключаясь в RM.

такого быть не должно. В MBR включаем известный видео режим.
Данные выводятся на экран через 0b800h. До тех пор пока не будет загружен видео драйвер. Далее вывод идёт через него.
В случае смерти видео драйвера. Производим его повторный запуск. Если не помогает то и выводить не стоит.
А, то что winXP умирает с БСОД, это говнокод в ядре. Которую решили подпоркой в виде БСОД. БСОД должен появляться только при аппаратной аварии железа.


1) Я с вами частично согласен. Но дать гарантий отсутствия BSOD-а в разрабатываемой вами или кем бы то еще ОСи не сможет дать даже Б..г, посмотрите на код любого микроядра и вы увидите там функцию с именем panic() или kernelpanik().
2) Ядро не может полагаться на внешние модули для разрешения своих внутренних проблем. Ошибка в ядре компрометирует всю систему в целом.
3) Что делать со случаем, когда узер поставил говнодрайвер для видео, который падает на старте? Бесконечно перезапускать его показывая юзеру вместо монитора стетоскоп постоянно выставляемых/сменяемых видеорежимов?
4) BSOD-ы появляются в ОСях со времен их появления. В микроядре они становятся более редкими, но никуда не уходят. И даже если мы получим идеальное ядро, которое не может сгенерировать ошибку ядра программно, в случае аварии на железе, мы должны сообщить пользователю, что мы потухли не потому что чел, писавший ОС - козел, а потому что, узер - козел и пытается нас запускать на говеном железе дающем сбои.


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

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


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

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


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

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