6

В отличие от Windows XP, которая редко давала мне синий экран, я помню, что когда я использовал Windows 98, он часто получался с синим экраном.

Что-то не так с Windows 98, что делает его особенно нестабильным?

5 ответов5

7

Основной причиной возникновения BSOD является исключение, которое было устранено в драйвере, который система не может восстановить. Основная причина, по которой все изменилось, заключается в том, что новая система драйверов (WDM) гораздо более стабильна, чем старая система (VxD), при обработке крайних случаев. Теперь вы просто получите сообщение об ошибке в журнале событий вместо BSOD при ошибке в драйвере, который не является достаточно плохим для сбоя системы.

Другим фактором является то, что Microsoft выделила разработчикам гораздо больше ресурсов для создания лучшего кода.

Третий фактор (который напомнил мне billc.cn, и это может быть более распространенным, чем проблема с драйверами). Начиная с Windows XP, гораздо сложнее получить доступ к оперативной памяти другой работающей программы. Довольно часто обычные плохо написанные программы могут просто выключаться и перезаписывать все, что они хотят, в области памяти какой-либо другой программы, и если эта другая программа является ключевой частью окон ... BSOD.

Между этими тремя вещами именно поэтому BSOD встречаются гораздо реже.

конечно, если вы действительно пропустите BSOD, установите CrashOnCtrlScroll в 1, удерживайте правую клавишу Ctrl и дважды нажмите Scroll Lock. (сохранить все открытые программы перед попыткой)

5
  • Иногда это просто особый стиль сообщения о нефатальных ошибках. На самом деле вы можете оправиться от такого типа синего экрана, нажав Enter.
  • Windows 98 не имеет никакой полезной защиты памяти и контроля доступа, поэтому процесс может легко повредить память других процессов. Нет простого способа восстановить повреждение ядра или системного процесса, поэтому он может показать только BSoD и перезагрузиться. Начиная с Windows NT, была реализована строгая защита памяти, поэтому она реже синевала (возможно только из-за ошибок пространства ядра).
  • В Windows сохранена совместимость с DOS, поэтому вы можете использовать разные странные вещи, например, 16-битные драйверы. У них может быть так много хаков, что они просто BSoD, ожидающие своего появления.
  • Windows 98 содержит много глючного кода в целом.
2

Еще одна вещь, которая вызывает BSoD, - это алгоритм планирования. Если вы не знаете, что такое планировщик, он является частью ядра, которая решает, какое приложение будет запущено в многозадачной системе. Основная цель планировщика - иметь возможность запускать каждое приложение, находящееся в состоянии "процесса", и предотвращать вечное хранение этих процессов системными ресурсами. Каждому процессу нужны системные ресурсы, такие как память, процессор или ввод-вывод, и они должны освобождать эти ресурсы после их использования. Если процесс ожидает ресурс, который удерживается другим процессом, этот процесс ожидания не может продолжать выполняться и голодает до этого ресурса. Предположим, у нас есть два запущенных процесса, p1 и p2, и два системных ресурса, r1 и r2, и p1 содержит r1, p2 содержит r2. Если процесс p2 входит в состояние ожидания для ресурса r1, а процесс p1 входит в состояние ожидания для ресурса r2, то эта система блокирует себя, и эти процессы p1 и p2 не могут выйти из состояния ожидания и не могут продолжать работу. Это состояние называется "тупик". Полностью заблокированная система может быть восстановлена только перезагрузкой.

Алгоритм планирования Win98 не может избежать взаимоблокировок по желанию. Таким образом, BSoD чаще встречаются в win98, чем в winXP, который имеет более продвинутый, более мощный планировщик и менеджер ресурсов.

2

Основные моменты уже упоминались: в Windows XP есть новая подсистема драйверов, а в Windows XP гораздо более строгая защита памяти.

Третий важный момент , который не был упомянут: начиная с Windows XP, Microsoft требовала, чтобы все оборудование + драйверы проходили определенный уровень тестирования совместимости (WHQL), чтобы иметь наклейку "Совместимо с Windows" . Это обеспечивает определенный уровень гарантии качества, который раньше не существовал.

1

Windows XP (технически Windows NT 5.1) основана на совершенно другой архитектуре по сравнению с Windows 98 (технически Windows 4.1). Я не помню, чтобы вообще было много BSOD на Windows NT 4.0. Ядро и архитектура NT спроектированы и написаны таким образом, что программные ошибки, приводящие к выходу из строя всей операционной системы (проявляющейся как BSOD), встречаются гораздо реже, чем в старой /"обычной" серии Windows. Помните, что путь обновления продукта был изменен с DOS + Windows 3.11 до Windows 95 до Windows 98 или с Windows NT 3.x до Windows NT 4.0 до Windows 2000 (NT 5.0) до Windows XP (NT 5.1).

Я помню, когда я установил NT 4.0 Workstation, одна вещь, которая была специально отмечена, заключалась в том, что вы не можете установить ее поверх любой версии простой Windows (в отличие от Windows NT). Это , вероятно , можно было бы возможным , если Microsoft положил много усилий в него, но два так очень разные , что (1) он, скорее всего , не будет действительно значимым, и (2) не было бы никакого способа гарантировать стабильную результат, в зависимости от операционной системы и / или приложения. Таким образом, они, вероятно, решили даже не пытаться и вместо этого тратить это время на работу над другими функциями, которые были более значимыми на целевом рынке (который полностью отличался от серии Windows 9x). Я полагаю, что то же самое с Windows 2000, но с тех пор, как я обновлял NT 4.0, для меня это не проблема.

В качестве примечания, одно существенное изменение, сделанное между NT 3.51 и NT 4.0, привело к переводу графических драйверов в кольцо 0 (режим ядра) из кольца 3 (режим пользователя). Предположительно, это было сделано из соображений производительности, но имело огромный недостаток: неожиданно плохо написанный графический драйвер мог намного проще вывести систему из строя с помощью BSOD. Я думаю, но я не уверен, что одна вещь, которую они изменили в Vista (NT 6.0), вернула эти драйверы в кольцо 3 - на этот раз по соображениям стабильности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .