If before Windows 95 If you used other operating systems, it’s hard not to remember the feeling of being faced with something completely new. That proposal introduced elements that we take for granted today, such as the Start menu, the taskbar or Plug and Play, and it did so at a time when starting a PC was almost a small ritual. But beneath that familiar interface a complex architecture was hidden, the result of the forced coexistence between DOS inheritances, 16-bit Windows and the first 32-bit layers. That design, as inelegant as it was effective, gave rise to unexpected behaviors that still surprise today.
Few users knew that Windows 95 hid an alternative route to the classic reboot. It was enough to hold down the Shift key during the process started from the graphical interface for the system to display the warning “Windows is restarting”, instead of following the path of a cold restart, as described by Raymond Chen. The difference was not spectacular, but it was noticeable at a time when every minute of starting counted. That small gesture activated an internal mechanism designed to avoid, whenever possible, starting from scratch.
The shortcut that did not restart completely
Behind this behavior there was a precise technical decision. Chen details that Windows 95 used a flag called EW_RESTARTWINDOWS when invoking the old ExitWindows function, still 16-bit. With that instruction, the system did not order a cold restart of the computer, but rather something more limited: close Windows and restart it. The objective was to save steps, as long as the internal situation allowed it, although this optimization depended on everything fitting correctly.
Once that alternative route was taken, the process followed a very specific sequence. The 16-bit Windows kernel was shut down first. The 32-bit virtual memory manager was then turned off and the processor returned to real mode, the most basic state of the system. At that point, control returned to win.com with a special signal asking for something very specific: restart Windows in protected mode without going through a full computer boot.
With control back on win.com, the most fragile part of the process began. The program had to simulate a clean boot of Windows, as if it had just been run from scratch, which involved, in Chen’s words, resetting the command line options and returning some global variables to their original values. Although the work was largely clerical, it was especially complex because win.com It was written in assembly. There were no abstractions or modern conveniences.
The decisive point was in memory. When win.com was executed, like any .com file, it received all available conventional memory. However, it freed up almost all memory beyond its own code so that Windows could load a large contiguous block when entering protected mode. If during the session a program reserved memory within the space that win.com had left free, the memory was fragmented. In that scenario, win.com could no longer recreate the original map it expected, and, Chen explains, it was forced to abandon the fast reset and fall into a hard reset.
When everything fell into place, the process continued without turning back. win.com jumped directly to the code responsible for booting Windows in protected mode, recreating the virtual machine manager and llifting the 32-bit layers again. From there, the graphical interface loaded as usual and the user returned to the desktop. The difference was subtle but real: Windows hadn’t had to reboot the entire system to get to that point.
This type of shortcut was only viable in a system built on cross-compatibilities. Windows 95 had to coexist with DOS software, 16-bit Windows programs and Win32 applications, and that mix forced us to accept inelegant but very practical solutions. The developers took advantage of this complexity to introduce hidden optimizations that could speed up restarts, although they could sometimes end in crashes.
The obsession with saving memory led to very imaginative solutions. Chen explains that in assembler it was common to recycle code that was no longer going to be used as if it were free memory. On win.com, the first bytes of the entry point were reused as a global variableunder the premise that this code was only executed once. Since the quick restart did not return to that initial point, the system could allow that shortcut without affecting the process.
That shortcut also showed its seams. Chen recalls that some users detected errors after performing several consecutive quick reboots, something that he was unable to consistently reproduce. Their hypothesis is that some driver wasn’t rebooting properly, leaving the system in a weird state, and that weirdness ended up taking its toll later. It’s no surprise that this type of behavior wasn’t presented as a documented feature, but it sums up the spirit of Windows 95 well: inventive, ambitious, and full of compromises.
Images | Microsoft
In WorldOfSoftware | Schrödinger’s Office: at this point it is impossible to know if Microsoft keeps it alive or if everything is AI and Copilot
