pavia писал(а):
Цитата:
Я, видимо, просто не умею формулировать. Извините.
Допустим, произошёл БСОД, или просто ОСь уже загрузилась, а драйвера - нет (как в данном случае). Видеорежим неизвестен. Необходимо вывести на экран сообщение не переключаясь в RM.
такого быть не должно. В MBR включаем известный видео режим.
Данные выводятся на экран через 0b800h. До тех пор пока не будет загружен видео драйвер. Далее вывод идёт через него.
В случае смерти видео драйвера. Производим его повторный запуск. Если не помогает то и выводить не стоит.
А, то что winXP умирает с БСОД, это говнокод в ядре. Которую решили подпоркой в виде БСОД. БСОД должен появляться только при аппаратной аварии железа.
1) Я с вами частично согласен. Но дать гарантий отсутствия BSOD-а в разрабатываемой вами или кем бы то еще ОСи не сможет дать даже Б..г, посмотрите на код любого микроядра и вы увидите там функцию с именем panic() или kernelpanik().
2) Ядро не может полагаться на внешние модули для разрешения своих внутренних проблем. Ошибка в ядре компрометирует всю систему в целом.
3) Что делать со случаем, когда узер поставил говнодрайвер для видео, который падает на старте? Бесконечно перезапускать его показывая юзеру вместо монитора стетоскоп постоянно выставляемых/сменяемых видеорежимов?
4) BSOD-ы появляются в ОСях со времен их появления. В микроядре они становятся более редкими, но никуда не уходят. И даже если мы получим идеальное ядро, которое не может сгенерировать ошибку ядра программно, в случае аварии на железе, мы должны сообщить пользователю, что мы потухли не потому что чел, писавший ОС - козел, а потому что, узер - козел и пытается нас запускать на говеном железе дающем сбои.