Plug-and-Play (PnP), also known as Plug and Pray from its early days, is a design philosophy for an industry standard way of configuring devices in computer architecture. PnP can theoretically handle changes in the machine's hardware architecture without user intervention. In a true PnP environment, the system is supposed to detect new hardware and dynamically load the drivers without restarting the computer.

PnP requires additional hardware support from the motherboard. The BIOS, the OS and the PnP hardware must work together.

  • BIOS
    The BIOS must support the following:
    1. System Board Device Configuration
      The BIOS must configure system board devices during the boot process.
    2. Configuration Information
      The BIOS must maintain the configuration information before relaying it to the operating system.
    3. Notification
      BIOS must be capable of notifying the OS of changes to the architecture after the OS is running.

  • Operating System
    The OS must support the following:
    1. BIOS Information Processing
      The OS must communicate with the BIOS and maintain the received list of PnP data.
    2. Device Drivers
      The OS must load device drivers and unload them as needed.
    3. Backwards Compatability
      The OS must be able to configure and use legacy devices.

  • Hardware Support
    The system hardware must support the following:

    1. Self-identification and Specification
      Devices must be able to identify themselves and specify their required resources. Devices must also identify their capabilities.
    2. Dynamic Configuration
      A Plug and Play device can theoretically be added to the system at any time. The hardware must support changes to the architecture on the fly.

    The PnP system includes the following components:

    1. Registry Database
      During the startup process, all hardware devices are identified, including each bus. This information is read from the HKEY_LOCAL_MACHINE key and the devices themselves. This information is stored under the registry's HKEY_DYN_DATA key.

    2. Bus Enumerators
      The device drivers for all of the busses on the system are part of the PnP components. Busses include the motherboard/BIOS, ISA, PCI and SCSI. The Bus Enumerator assigns each bus a unique identification code, then collects the device configuration from the registry and the devices. The Bus Enumerator also passes on the resources for each bus as received from the Configuration Manager.

    3. Configuration Manager
      The Configuration Manager is responsible for coordinating the flow of information during the device configuration. It informs each device when they can perform an action during configuration.

    4. Resource Arbitrator
      The Resource Arbitrator gathers the information from the Bus Enumerators and assigns IRQs, DMA channels, Base I/O ports and memory allocation to each device. The Resource Arbitrator assigns resources to legacy devices first because they are not dynamically configurable.

    When a machine is turned on, the following steps are performed:

    1. The Configuration Manager tells the Bus Enumerators to place all bus devices into configuration mode.

    2. The Bus Enumerators gather information from the Registry file and the devices.

    3. The Configuration Manager passes the information to the Resource Arbitrator.

    4. The Resource Arbitrator assigns the configuration information to each device and passes this information to the Bus Enumerators.

    5. The Bus Enumerators pass the configuration informatio to each device.

    6. The Configuration Manager signals the system that it is ready to start.

    7. The Bus Enumerators signal all devices to activate with their new settings.
    The system completes the start up procedure and you are ready to use Windows.

  • Log in or register to write something here or to contact authors.