OSDev http://osdev.su/ |
|
Переключение в текстовый режим http://osdev.su/viewtopic.php?f=6&t=489 |
Страница 2 из 2 |
Автор: | phantom-84 [ 31 янв 2012, 16:06 ] |
Заголовок сообщения: | Re: Переключение в текстовый режим |
418ImATeapot писал(а): Я, видимо, просто не умею формулировать. Извините. Извините, но так не делают. Если у тебя нет видеодрайвера и ты даже не удосужился на начальном этапе выставить какой-нибудь "известный" видеорежим (хотя бы при помощи BIOS), то что-либо выводить на экран ты не имеешь права. Сначала установка режима (или полномасштабный детект видеоаппаратуры и установленного режима), потом вывод.
Допустим, произошёл БСОД, или просто ОСь уже загрузилась, а драйвера - нет (как в данном случае). Видеорежим неизвестен. Необходимо вывести на экран сообщение не переключаясь в RM. |
Автор: | 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/ |