Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет dibr ([info]dibr)
@ 2008-05-07 14:57:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
И синий экран в конце тоннеля...
     Работа близко к пространству ядра - опасна. Предельно аккуратно, по списку, выполняешь инструкции одну за другой, но... но вдруг одна неверная инструкция - черт-те как она попала в этот код! - и уже срываешься, летишь куда-то вниз, вниз...

     Ощущение падения - непередаваемо. Не первый раз - неверные инструкции бывает попадаются и в обычной работе - но каждый раз не менее захватывающе. Полёт сквозь туннель, образованный кольцами защиты процессора - второе кольцо, первое, нулевое... но привычный обработчик исключений, всегда перехватывавший в последний момент и выдававший спасительное "программа выполнила..." на этот раз почему-то не подхватывает (потому что - был слишком близко к ядру?!), и летишь дальше, дальше - чтобы внезапно увидеть голубой экран в конце тоннеля.

     Голубой экран! Сколько раз считал легендами виденные в интернете рассказы про Синий Экран Смерти, который видит система последний раз в жизни после падения, тихо посмеивался - ведь все знают, что после остановки процессора просто пустота, нет ничего - и вот он, голубой экран, рядом, перед глазами. Яркий, красивый голубой экран - Экран Смерти...

     Пролёт сквозь экран прошел почти неощутимо. Неяркая голубая вспышка - и мир вокруг остановился неподвижно. "Что же будет дальше?" - подумалось перед тем, как мысли вязко, неохотно, остановились тоже...

     ...Чувства вернулись внезапно, как будто щёлкнули выключателем. "Процессор... память... диски..." - лёгкое подёргивание частей тела при проверке "всё ли в порядке" было очень знакомым, именно так всегда выглядел обычный процесс загрузки. Но на этот раз даже этот обычный процесс воспринимался по другому - это была не рутинная проверка "все ли тут", это было возвращение Оттуда, обретение себя заново. Внешне в том же виде, как и до того, но - но всё-таки уже как-то по другому. Вернувшимся. Вернувшимся Оттуда, из-за Синего Экрана.

     Жаль, так и не удалось разглядеть, что же именно скрывается там, за голубым экраном, который видят все - теперь это уже казалось очевидным - упавшие системы. Несомненно что-то очень важное... но что именно?

     А жизнь и работа продолжалась дальше - и опять выполнялись инструкция за инструкцией, и Синий Экран скоро забылся за обычным потоком данных. И только строчка в логах напоминала иногда о пережитом когда-то.



     Disclaimer: к техническим деталям не придираться! Я не помню сколько там у интела "колец защиты", так ли они вообще называются, и я догадываюсь, что упавшие "рядом с ядром" через второе кольцо вряд ли пролетят :-) Хотя поправки - принимаются :-)


(Добавить комментарий)


(Анонимно)
2008-05-07 08:39 (ссылка)
Хорошо написано!

P.S. А в юниксах всё как-то банально: kernel panic и мигание лампочками на клавиатуре :)

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2008-05-07 09:51 (ссылка)
У вас чёрный экран смерти :-) С белыми буквами :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2008-05-08 10:51 (ссылка)
> У вас чёрный экран смерти :-) С белыми буквами :-)

А чем он тогда отличается от экрана нормального существования?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2008-05-08 15:16 (ссылка)
"Вы не видели трупы. А я видел трупы. Их было семь. Они не подавали признаков жизни, они подавали признаки смерти. А я... а я - подавал их к столу..." (с) утерян, предположительно Олег Бочаров

Тем же, чем просто свет отличается от Света в Конце Тоннеля :-) Тем, что Чёрный Экран Смерти - это экран СМЕРТИ, а Черный Экран Нормального Существования - это, ну, шелл наверно какой-нибудь, ничего страшного :-)))

(Ответить) (Уровень выше)


[info]rain251@lj
2008-05-07 08:48 (ссылка)
у интела или у винды? :)

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2008-05-07 09:52 (ссылка)
А фиг знает. Я не специалист, мне казалось что эти "кольца" - свойство архитектуры i386. Но возможно что это и чисто виндовая терминология (тогда интересно, как оно устроено и как называется в юниксах).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]sharpc@lj
2008-05-07 10:31 (ссылка)
Да, это механизм процессора. В винде 1-е и 2-е не используется, только 0-е и 3-е. Написано хорошо, даже самому захотелось драйвер какой-нибудь сотворить :)

(Ответить) (Уровень выше)


[info]mikell@lj
2008-05-07 09:12 (ссылка)
Вообще то BSOD не всегда синий....

http://www.winblog.ru/2006/05/05/05050603.html

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2008-05-07 09:53 (ссылка)
Кощунство!!! Это даже хуже чем "дружище Христос" из "догмы"! :-)))

(Ответить) (Уровень выше)


[info]stormos@lj
2008-05-07 09:13 (ссылка)
бсод это не просто смерть, это суд, приговр и исключительная мера наказания

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2008-05-07 09:54 (ссылка)
Это тонкости :-)))

(Ответить) (Уровень выше)


[info]ilya_314@lj
2008-05-07 10:54 (ссылка)
Используется только 2 кольца из 4-ех.

Есть интересные извращения в CPU intel типа защиты на уровне сегментов - это тоже насколько я знаю никогда не использовалось, используется только страничный механизм.

Не знаю как сейчас, а примерно с год назад программы виртуализации не использовали по умолчанию аппаратную виртуализацию (какие-то там спец. команды). По тестам оказывалось что то же самое можно эффективнее запрограммировать иначе.

Кстати memset написан на ассемблере - примерно 50 инструкций, memcpy вообще огромен - несколько страниц кода. А ведь есть такие команды.

(Ответить)