Architecture of Windows 9x
The Windows 9x series of operating systems refers to a series of Microsoft Windows operating systems produced from 1995 to 2000. They are based on the Windows 95 kernel which is a monolithic kernel. The basic code is similar in function to MS-DOS. They are 16-/32-bit hybrids and require support from MS-DOS to operate.
Critical files
To start up or boot, Windows 95 and other Windows 9x operating systems require the following set of files:32-bit shell and command line interpreter:
- SHELL.DLL and SHELL32.DLL – Shell API
- EXPLORER.EXE – Windows shell and file manager
- COMMAND.COM – Command line shell executable
- KERNEL32.DLL and KRNL386.EXE – Windows API for Windows resources
- ADVAPI32.DLL – Functionality additional to the kernel with included functions for the Windows registry and shutdown and restart functions
- GDI32.DLL and GDI.EXE – Graphic device interface
- USER32.DLL and USER.EXE – GUI implementation
- COMMCTRL.DLL and COMCTL32.DLL – Common controls
- DDEML.DLL Dynamic Data Exchange Management Library – Provides an interface that simplifies the task of adding DDE capability to an application
- MSGSRV32.EXE – Acts as a 32-bit message server and will never appear in the Windows task list
- WIN.COM – Responsible for loading the GUI and the Windows portion of the system
- SYSTEM.DAT, USER.DAT – Contains the Windows Registry
- MSDOS.SYS – Contains some low-level boot settings and resources such as disabling double-buffering and the GUI logo
- WIN.INI and SYSTEM.INI – Configuration files from Windows 3.1 which are processed in Windows 9x also
- VMM32.VXD – Virtual machine manager and default drivers. It takes over from io.sys as kernel
- IFSHLP.SYS – Enables Windows to make direct file system calls; bypassing MS-DOS methods
- IFSMGR.VXD – 32-bit driver for the installable file system
- IOS.VXD – I/O supervisor that controls and manages all protected-mode file system and block device drivers
- MPREXE.EXE, MPRSERV.DLL and MPR.DLL – Multiple Provider Router for network authentication and user profiles
- MSPWL32.DLL – Password list management library
- IO.SYS – Executable handling all of the basic functions, such as I/O routines and also serves as kernel until vmm32.vxd takes over
- HIMEM.SYS – DOS device driver which allows DOS programs to store data in extended memory via the Extended Memory Specification
- SYSTEM.DRV, MMSOUND.DRV, COMM.DRV, VGA.DRV, MOUSE.DRV, BIGMEM.DRV, KEYBOARD.DRV – 16-bit drivers
- CP 1252.NLS, CP 437.NLS, UNICODE.NLS, LOCALE.NLS – Keyboard layouts
- RMM.PDR – Real Mode Mapper Virtual Device
Boot sequence
The Windows 9x startup process consists of 6 phases. The first two of these steps are common to any operating system booting using the traditional combination of BIOS and Master Boot Record.Phase 1 – The ROM BIOS bootstrap process
The ROM BIOS starts the execution at the physical memory address 000FFFF0h. During this phase, BIOS first executes the Power-on self-test, then checks for the existence of a boot disk on drive A. If it is not found in drive A, the ROM BIOS checks for a hard disk. If the computer has a Plug and Play BIOS, in addition, BIOS checks the RAM for I/O port addresses, interrupt lines and DMA channels for Plug and Play devices, disables found devices, creates maps of used and unused resources and re-enables devices.Phase 2 – The master boot record and boot sector
The Master boot record is loaded at address 7C00h and loads the boot sector of the Windows Disk partition. The boot sector contains the disk boot program and BIOS Parameter Block table which searches for the location of the root directory and IO.SYS file, which then loads the IO.SYS file into memory.Phase 3 – [IO.SYS] file initialisation
initialises the minimal File Allocation Table driver and loads MSDOS.SYS into memory. It then displays "Starting Windows" depending on the Boot-Delay line in the MSDOS.SYS file. It then loads the LOGO.SYS file and displays a startup image on the screen. If the DRVSPACE.INI or DBLSPACE.INI file exists, it also loads drivers for compressed disks. Windows then attempts to open the registry file SYSTEM.DAT. If that fails, it attempts to open SYSTEM.DA0. If configured in MSDOS.SYS or in the registry, double buffering is also enabled.Phase 4 – CONFIG.SYS and real mode configuration
and Windows 98 now analyse CONFIG.SYS and load MS-DOS real mode drivers. Windows Me ignores this.If the CONFIG.SYS file does not exist, the IO.SYS file loads the drivers IFSHLP.SYS, HIMEM.SYS and SETVER.EXE. Windows reserves all upper memory blocks for Windows 95 operating system use or for expanded memory.
Windows 95 and 98 execute COMMAND.COM to process AUTOEXEC.BAT. It loads terminate and stay resident programs into memory. Windows Me ignores this step, as Real Mode DOS support is disabled and TSRs being loaded can compromise system stability.
Phase 5 – Initialise drivers
IO.SYS now runs WIN.COM. WIN.COM loads the VMM32.VXD file into memory or accesses it from the hard disk. This file contains the most important drivers and the 9x kernel.The real-mode virtual device driver loader checks for duplicate virtual device drivers that exist both in the Windows\System\Vmm32 folder and the VMM32.VXD file. In a case of duplicates, the driver in the Windows\System\Vmm32 directory will be loaded.
Windows 95 to 98 now query real mode drivers calling INT 2Fh and search for drivers in registry entry HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD marked to be loaded as an external file. Vmm32 then analyzes the section of the Windows\System.ini file and loads drivers listed there. Some important drivers are loaded even if they are not listed in the Windows Registry, SYSTEM.INI or in the Windows\System\Vmm32 directory.
Once the real-mode virtual device drivers are loaded, driver initialisation on Windows 95 and 98 occurs. Vmm32 then switches the CPU from real mode to protected mode. The next step is the initialisation of protected mode drivers, executed in three phases for each device: a critical part of initialisation, device initialisation and InitComplete phase. After initialisation of the display driver, Windows switches to graphical mode.