During the real-mode boot process, devices use only static configurations; no dynamic resource allocation or arbitration is provided. When a user adds a new device to the system, no software attempts to enable the device until the protect mode Configuration Manager has been able to set up the device successfully. One possible exception to this is that a Plug and Play BIOS may enable plug & play devices which are required for booting the system.
The boot process goes through four phases:
1. BIOS in control (Phase 0)
2. MS-DOS compatibility driver and TSR loading (Phase 1)
3. VMM32.VXD real-mode initialization (Phase 2)
4. Operating system in Control in protected mode (Phase 3)
There are two types of BIOS: non-Plug and Play BIOS and Plug and Play BIOS.
Computers that are not Plug and Play enabled behave as always. Plug and Play ISA cards that have option ROMs should power up with the option ROM enabled only if the ROM is actually required for proper functionality, for example a Plug and Play SCSI card which needs to boot from one of the attached hard drives. If the ROM is enabled and the device is active when Windows 95 protect mode initialization begins, that Plug and Play device will be treated as unmovable for purposes of resource allocation. This is because real mode drivers may have been loaded for the device in Phase 1 which would be unable to handle a shift in resource allocation. The phase 0 boot process for an old ROM acts exactly as it always has.
Plug and Play enabled BIOSs will access non-volatile RAM to determine which Plug and Play ISA cards should be enabled and where their option ROMs should be mapped, and what I/O, DMA, and other assignments to give to the card. The BIOS will then program the Plug and Play cards prior to the power-on self test (POST). All cards that do not have a configuration stored in the BIOS will be disabled completely, eliminating the chance of a conflict.
The Plug and Play BIOS will also configure all devices on the motherboard. Some devices may have been disabled or assigned to different I/O, IRQ, or other resources by Configuration Manager.
There is no automated device enumeration at this phase of the boot process. The hardware profile for docking purposes is computed. Drivers that need to be loaded must be explicitly specified in CONFIG.SYS or AUTOEXEC.BAT.
The following list gives the process for real-mode initialization:
The final step before initializing the protected-mode Configuration Manager is to load static VxDs. For compatibility reasons, the real-mode loader will first load devices specified in SYSTEM.INI. This is the first phase of configuration management in which automated device enumeration takes place, and access to the registry is available, but there is still no automated resource assignment.
Based on the type of bus hardware detected by the real-mode Configuration Manager driver, the system loads the appropriate enumerator VxD. For example, the ISA enumerator will be loaded during this phase if an ISA bus exists on the system. If the machine has a Plug and Play BIOS, the BIOS enumerator loads. In all cases, the root enumerator loads during this phase.
Once VMM32.VXD has initialized, the full-featured protected-mode Configuration Manager is initialized. Configuration Manager imports device identifier information from the real-mode loader.
Drivers are loaded and initialized at this phase in exactly the same manner as with dynamic enumeration and device loading. Enumerators create device nodes, Configuration Manager calls the appropriate device loader, and the process continues.
This section describes the boot process for an ideal configuration: a computer with a new BIOS and new Plug and Play cards, but no non-Plug and Play hardware or real-mode device drivers.
The BIOS configures all motherboard devices. Next it executes the ISA Plug and Play isolation algorithm and assigns configurations to all devices required for booting. It then checks the expansion card ROMs during the power-on self test and boot loads the operating system (phase 1).
CONFIG.SYS and AUTOEXEC.BAT are processed in the standard manner.
The system loads VxDs specified in SYSTEM.INI. The real mode loader loads the PnPBIOS enumerator if appropriate, as determined by detection at Windows 95 install time. If there is no PnPBIOS in the machine, the appropriate bus drivers are loaded based on what was detected at install time. In PnPBIOS machines, the BIOS is responsible for telling the operating system which busses are on the machine, which in turn drives the decision as to which bus drivers need to be loaded. The ISA enumerator, for example, is now loaded and enumerates all ISA devices, which, in turn, could have static VxDs that enumerate their children, and so on. Once all static VxDs have loaded, the system enters phase 3 of the boot process.
Some VxDs are loaded during phase 2 of configuration management, but they initialize in protected mode during phase 3. Devices such as VPICD and VDMAD are passed a handle to the device node that caused them to load.
Resource arbitrators need to register with Configuration Manager during Sys_Critical_Init so that devices that register later in the boot process can allocate these resources.
Enumerators, such as the ISA bus enumerator, may add new device nodes to the in-memory devnode tree. Some of these nodes may also have children.
When all devices have been enumerated, all conflicts have been resolved, and all devices have been initialized, the system is ready to be used. The devnode tree will contain a complete description of every device connected to the machine as well as the resource requirements of those devices.