Рэймонд Чен раскрыл секрет ‘быстрой перезагрузки’ Windows 95

Рэймонд Чен раскрыл секрет 'быстрой перезагрузки' Windows 95
Рэймонд Чен раскрыл секрет ‘быстрой перезагрузки’ Windows 95 (image source)

Инженер 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 не увенчается успехом.

Conclusion

В остальном же win.com возвращается к коду, который запускает Windows в защищённом режиме, воссоздаёт диспетчер виртуальных машин, затем запускается графический пользовательский интерфейс, и пользователь видит, что ОС перезагрузилась.

По словам Чена, в случае с win.com исходный код повторно использовал первые байты точки входа в качестве глобальной переменной, поскольку точка входа выполняется только один раз.

Дополнительные детали

  • Ранее Чен рассказал, почему WinHelp в Windows 3.0 называли «онлайн-справкой», хотя она работала офлайн.
  • По его словам, термин «онлайн» сперва означал «доступный на компьютере в данный момент».

Этот секрет «быстрой перезагрузки» Windows 95 приоткрывает завесу над тем, как работали старые системы и как инженеры Microsoft реализовывали подобные функции.

News Express Team
News Express Team

News Express' team of experienced editors and journalists delivers timely and reliable reporting on Russian politics, economics, technology and world affairs from a unique regional perspective. Stay informed with our dedicated journalists.

en_USEN