I totally forgot you could do this, but back in the Windows 9x days, you could hold down shift while clicking restart, and it would perform a sort-of “soft” restart without going through a complete reboot cycle. What’s going on here?
The behavior you’re seeing is the result of passing the
EW_RESTARTWINDOWSflag to the old 16-bitExitWindowsfunction.What happens is that the 16-bit Windows kernel shuts down, and then the 32-bit virtual memory manager shuts down, and the CPU is put back into real mode, and control returns to win.com with a special signal that means “Can you start protected mode Windows again for me?”
The code in win.com prints the “Please wait while Windows restarts…” message, and then tries to get the system back into the same state that it was in back when win.com had been freshly-launched.
↫ Raymond Chen
There’s a whole lot more involved behind the curtains, of course, and if conditions aren’t right, the system will still perform a full reboot cycle. Chen further notes that because WIN.COM was written in assembly, getting back to that “freshly-launched” state wasn’t always easy to achieve.
I only vaguely remember you could hold down shift and get a faster “reboot”, but I don’t remember ever really using it. I’ve been digging around in my memories since I saw this story yesterday, and I just can’t think of a scenario where I would’ve realised in time that I could do this.

Once upon a time i was working for a communication firm. We then were contracted to make the audiovisual portion of a prestigious gala. This was in the days of macromedia director and the person who coded the presentation absolutely trashed the memory over time when idling for some reason. Since we failed to test real world conditions (6h total runtine), to avoid crashes we had to reboot the backup, put it where the master is, switch the video input to the backup, reboot the main… i wish i knew about that back then… all that for hours and hours… I hated my colleague so much that day.
On a similar note, the “kexec” command will load and run a new kernel without the need for a reboot cycle. I use this a lot in my own kernel development and it speeds things up a lot compared to the BIOS.
Many computers mitigate slow loading times by putting computers to “sleep” instead, which bypasses the boot environment and the OS boot process too. But there’s no reason cold booting shouldn’t be more responsive, it’s just very poorly optimized. Given the specs of modern hardware it seems like things should be a lot faster than they are.