Similar to Windows version 3.1 and Windows for Workgroups version 3.1, Windows 95 includes a core composed of three components — User, Kernel, and graphical device interface (GDI).
Each of these components includes a pair of DLLs — one 32-bit and one 16-bit — which provide services for the applications you run. Windows 95 is designed to use 32-bit code wherever it significantly improves performance without sacrificing application compatibility. Windows 95 retains existing 16-bit code where it is required to maintain compatibility or where 32-bit code would increase memory requirements without significantly improving performance. All the Windows 95 I/O subsystems (such as networking and file systems) and device drivers are 32-bit, as are all the memory management and scheduling components, including the Kernel and Virtual Memory Manager.
As shown in the following illustration, the lowest-level services provided by the Windows 95 Kernel are implemented as 32-bit code to ensure a high-performance core. Most of the remaining 16-bit code consists of hand-tuned assembly language, delivering performance that rivals some 32-bit code used by other operating systems.
Many functions provided by the GDI — which are mostly complex, CPU-intensive functions — are now rewritten as 32-bit code to improve performance. Much of the window management code in the User components— which are small, fast functions — remains 16-bit, thus retaining application compatibility.
Windows 95 also improves on the MS-DOS and Windows 3.1 environments by implementing many device drivers as 32-bit, protected-mode code. Virtual device drivers in Windows 95 assume the functionality provided by many real-mode MS-DOS – based device drivers, eliminating the need to load them in MS-DOS. This results in a minimal conventional memory footprint, improved performance, and improved reliability and stability of the system over real-mode device drivers.
The following sections describe the services provided by these core components.