How Windows 95 Handled Background Printing
Windows 95 eliminated the frustrating system freezes associated with printing in earlier versions of Windows by introducing a modern 32-bit print spooler architecture powered by preemptive multitasking and Enhanced Metafile (EMF) spooling. Unlike Windows 3.1, which forced users to wait while an application converted a document into complex printer commands, Windows 95 offloaded the processing workload to background threads. This design allowed users to regain control of their software almost immediately while the operating system quietly rendered and delivered pages to the printer.
The Shift to Preemptive Multitasking
In Windows 3.1, cooperative multitasking required applications to voluntarily surrender CPU time. If a program was sending data to a printer, it monopolized the processor until the job finished or stalled, freezing the graphical interface.
Windows 95 introduced true 32-bit preemptive multitasking. Under this
model, the operating system's kernel scheduler controls CPU time
slicing. The print spooler (SPOOL32.EXE) ran as an
independent process with its own low-priority background threads. If a
print job required heavy processing or stalled due to a slow printer
connection, the scheduler simply deprioritized the spooler thread,
ensuring the active application's user interface thread remained fluid
and responsive.
Enhanced Metafile (EMF) Spooling
The core breakthrough in Windows 95's printing speed was the introduction of Enhanced Metafile (EMF) spooling:
- Quick Capture: When a user clicked "Print," the Windows Graphics Device Interface (GDI) did not immediately translate the document into raw, printer-specific instructions (such as PostScript or PCL). Instead, it recorded high-level GDI drawing commands directly into a compact EMF file on the hard drive.
- Immediate Return: Because recording GDI calls takes a fraction of the time required to generate full printer codes, the target application finished its print routine in seconds and returned full control to the user.
- Background Despooling: After the EMF file was created, the background print spooler took over the computationally heavy task of rendering the EMF commands into the printer's native language page by page.
Asynchronous Port Communication
Physical transmission of print data in the mid-1990s predominantly relied on standard parallel (LPT) or serial ports, which were notoriously slow and prone to hardware handshaking delays.
Windows 95 isolated hardware communication using dedicated 32-bit port monitors. These monitors sent raw data to physical ports asynchronously. If a printer's hardware buffer filled up, causing it to signal a "busy" state via the parallel cable, only the isolated background port monitor paused. The user's active application was entirely insulated from hardware latency, preventing the common "Not Responding" lockups of the 16-bit computing era.