Чому Windows 95 перезапускався швидше, якщо затиснути Shift: пояснив ветеран Microsoft
Чому Windows 95 перезапускався швидше, якщо затиснути Shift: пояснив ветеран Microsoft

Чому Windows 95 перезапускався швидше, якщо затиснути Shift: пояснив ветеран Microsoft

У Windows 95 існував маловідомий трюк: якщо під час перезапуску затиснути клавішу Shift, система не виконувала повний холодний ребут. Натомість користувач бачив повідомлення про перезапуск Windows і значно швидше повертався до робочого столу.

Як працював «швидкий перезапуск» у Windows 95?

У результаті система не виконувала повне перезавантаження комп’ютера. Спочатку завершував роботу 16-бітний ядровий компонент Windows, після нього зупинявся 32-бітний менеджер віртуальної пам’яті. Процесор повертали в реальний режим, а керування знову передавалося програмі win.com з сигналом, який означав прохання повторно запустити Windows у захищеному режимі.

win.com показував повідомлення Please wait while Windows restarts і намагався відновити систему в тому самому стані, у якому вона була під час початкового запуску. Для цього програмі доводилося скидати параметри командного рядка й повертати глобальні змінні до початкових значень. Процес був складним, зокрема тому, що win.com був написаний мовою асемблера.

Як пише PCgamer, окремою проблемою була пам’ять. Файли формату .com під час запуску отримували всю доступну конвенційну пам’ять. win.com звільняв усе, що виходило за межі власного коду, щоб Windows у захищеному режимі мав один великий безперервний блок пам’яті. Якщо інші програми встигали зайняти цю область, пам’ять ставала фрагментованою, і відновлення початкового стану ставало неможливим. У такому випадку система відмовлялася від швидкого перезапуску й переходила до повного ребуту.

Якщо ж пам’ять залишалася у потрібному вигляді, win.com переходив безпосередньо до коду запуску Windows у захищеному режимі. Менеджер віртуальних машин створювався заново, запускалася графічна оболонка, і користувач бачив, що Windows просто перезапустився без повного вимкнення комп’ютера.

Чому цей механізм був настільки крихким?

У ті роки розробники часто використовували нестандартні оптимізації заради економії пам’яті. Одним із поширених прийомів було повторне використання коду, який більше не викликався, як області для зберігання змінних. У win.com перші байти точки входу програми застосовувалися як глобальна змінна, оскільки код точки входу виконувався лише один раз. Для режиму швидкого перезапуску це не створювало проблем, адже виконання не поверталося до самого початку програми.

Втім, швидкий перезапуск мав недоліки. Деякі користувачі помічали, що повторне використання цього режиму могло призводити до збою. Сам Реймонд Чен не зміг стабільно відтворити цю проблему, але припускає, що окремі драйвери не повністю скидали свій стан. Після кількох перезапусків накопичувалися помилки, які проявлялися вже під час завершення роботи системи.

Источник материала
loader