The Subsystems of Windows

Windows is an operating system that allows users to interact with their computers through a graphical interface. Its ability to multitask and its compatibility with a wide range of hardware and software applications makes it one of the most popular systems in use.

First released in 1985, this system evolved over time as computer memory got bigger and processing chips got faster. The most recent version is Windows 10.

History of Windows

Windows is a collection of programs that control the operations of a computer. Developed and first produced by Microsoft in November 1985, it has evolved as computers have grown more powerful and memory has become cheaper.

The first version, Windows 1.0, introduced a graphical OS based on 16-bit MS-DOS. It featured a point-and-click interface that let users navigate panels, known as windows, on the screen, each of which could contain different tasks and programs running at the same time. It used a mouse before it was common to do so, and included a game that relied on clicking to play to get people familiar with the new input system.

The second version, Windows 2, released in December 1987, added features like the ability for windows to overlap each other and a more flexible control panel. It also improved memory management and introduced Word and Excel. Windows 2000, a business-oriented version of the operating system, and its successor, Windows XP, were the last versions to use the DOS kernel until the release of Windows Vista, which used the NT kernel instead of the Chicago kernel and suffered from hardware compatibility problems.

Subsystems

The subsystems of Windows allow the software to interact with hardware and provide functionality. They help to streamline the system and improve its efficiency, allowing users to access underlying components quickly and easily.

The POSIX environment subsystem supports applications that conform to POSIX standards. It provides a console as well as text window support, shutdown and hard error handling. It also implements a virtual DOS machine (VDM) for MS-DOS and 16-bit Windows programs.

The Linux subsystem for Windows, WSL, enables developers to run the full GNU/Linux environment including CLI tools and applications on Windows OS without having to dual boot or use a VMware. It was developed by Microsoft in partnership with Canonical, and is meant to replace cygwin. It saves system resources like memory, CPU and storage without affecting performance. This allows the developer to focus on work rather than navigating between different environments or running an extra VM. It is also lightweight, fast and easy to set up.

Kernel-Mode Drivers

Drivers are programs that run at the highest privilege level on your system. They control hardware like your graphics card or provide system security, like antivirus. They run in kernel mode, which means that they can access all resources on your machine without asking you, the user, for permission.

Because of this, they must be incredibly stable and well written. A poorly written driver could crash the entire system. To prevent this, the Windows kernel runs each program in private virtual memory spaces when it is executing.

To facilitate kernel-mode driver development, Microsoft provides a framework called the Kernel-Mode Driver Framework (KMDF). This enables developers to write drivers in C or C++ and also includes a set of utility routines like safe string libraries, direct memory access and transaction processing. KMDF also provides a common hardware abstraction layer and a device management subsystem to help drivers manage the underlying hardware. It also enables the kernel to perform power management tasks and supports zero trust approaches like high integrity attestation.

Hardware Abstraction Layer

The hardware abstraction layer (HAL) is a software subsystem that provides a common interface for programs to connect with hardware peripherals. It can be found in the OS kernel or as device drivers, and is used by many operating systems including DOS, Mac, Android, Linux and some Unix variations.

It hides differences in hardware from most of the kernel, so that the same code can be used on different computers. This makes it easier to develop, port and upgrade software applications.

Each HAL is specialised for specific hardware combinations, which is why early Windows releases came with a selection of them and why some service packs included extra ones. However, advances and standardisation have made it so that each version of Windows now has just the one HAL. This has helped to simplify the OS design and improve its performance. The HAL also allows developers to follow the SOLID principle of dependency inversion by decoupling application code from the low-level hardware implementation details.