OSDev
http://osdev.su/

Переключение в текстовый режим
http://osdev.su/viewtopic.php?f=6&t=489
Страница 2 из 2

Автор:  phantom-84 [ 31 янв 2012, 16:06 ]
Заголовок сообщения:  Re: Переключение в текстовый режим

418ImATeapot писал(а):
Я, видимо, просто не умею формулировать. Извините.

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

Автор:  ZarathustrA [ 31 янв 2012, 16:15 ]
Заголовок сообщения:  Re: Переключение в текстовый режим

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

Автор:  418ImATeapot [ 31 янв 2012, 16:39 ]
Заголовок сообщения:  Re: Переключение в текстовый режим

Те, проще всего, отдельный модуль, в RM или в нереальном?

Автор:  pavia [ 31 янв 2012, 18:27 ]
Заголовок сообщения:  Re: Переключение в текстовый режим

Цитата:
Я, видимо, просто не умею формулировать. Извините.

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

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

Автор:  phantom-84 [ 31 янв 2012, 23:17 ]
Заголовок сообщения:  Re: Переключение в текстовый режим

Можно конечно и в MBR ))) Но лучше в ядре/вторичном загрузчике. Кстати как раз-таки в MBR-/первичных загрузчиках при использовании функции телетайпного вывода видеорежим устанавливать не нужно.

Автор:  ZarathustrA [ 01 фев 2012, 09:18 ]
Заголовок сообщения:  Re: Переключение в текстовый режим

pavia писал(а):
Цитата:
Я, видимо, просто не умею формулировать. Извините.

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

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


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

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/