
Инженер Microsoft Рэймонд Чен объяснил, что происходит при перезагрузке Windows 95 с зажатой клавишей Shift. Этот трюк, известный с давних пор, позволяет системе отобразить сообщение «Windows перезагружается» вместо полной перезагрузки.
Как работает ‘быстрая перезагрузка’
По словам Чена, это поведение является результатом передачи флага EW_RESTARTWINDOWS старой 16-битной функции ExitWindows. Происходит следующее:
- 16-битное ядро Windows завершает работу
- затем завершает работу 32-битный менеджер виртуальной памяти
- процессор возвращается в реальный режим
- управление возвращается к win.com со специальным сигналом, означающим “Можно ли снова запустить Windows в защищенном режиме?”
Роль win.com в ‘быстрой перезагрузке’
Win.com — исполняемый файл, загружающий Windows серий 3.x и ранее, и позднее в 9x. В Windows 3.x и более ранних этот файл должен запускаться либо вручную из командной строки DOS, либо его можно активировать командой в AUTOEXEC.
Код в win.com выводит сообщение «Пожалуйста, подождите, пока Windows перезагрузится…», а затем пытается вернуть систему в то же состояние, в котором она находилась при первом запуске win.com.
Проблемы с реализацией ‘быстрой перезагрузки’
Одной из задач является сброс всех параметров командной строки, переданных win.com. Это громоздкая задача, потому что win.com написан на языке ассемблера, и некоторые глобальные переменные необходимо вернуть к исходным значениям.
Кроме того, при выделении памяти в том пространстве, которое win.com освободил для Windows в защищённом режиме, та, которая предназначена для обработки соглашений, будет фрагментирована, и попытка вернуть систему в то же состояние, в котором она была при первом запуске win.com не увенчается успехом.
Заключение
В остальном же win.com возвращается к коду, который запускает Windows в защищённом режиме, воссоздаёт диспетчер виртуальных машин, затем запускается графический пользовательский интерфейс, и пользователь видит, что ОС перезагрузилась.
По словам Чена, в случае с win.com исходный код повторно использовал первые байты точки входа в качестве глобальной переменной, поскольку точка входа выполняется только один раз.
Дополнительные детали
- Ранее Чен рассказал, почему WinHelp в Windows 3.0 называли «онлайн-справкой», хотя она работала офлайн.
- По его словам, термин «онлайн» сперва означал «доступный на компьютере в данный момент».
Этот секрет «быстрой перезагрузки» Windows 95 приоткрывает завесу над тем, как работали старые системы и как инженеры Microsoft реализовывали подобные функции.






