Does Windows have a Microkernel or Monolithic kernel?
Like most Unix systems, Windows is a monolithic operating system. Why? Because the kernel mode protected memory space is shared by the operating system and device driver code.
Is Windows a microkernel-based OS?
- No – not using the academic definition (OS components and drivers run in their own private address spaces, layered on a primitive microkernel)
- All kernel components live in a common shared address space
- Therefore no protection between OS and drivers
Why not pure microkernel?
- Performance – separate address spaces would mean context switching to call basic OS services
- Most other commercial OSs (Unix, Linux, VMS etc.) have the same design
But it does have some attributes of a microkernel OS
- OS personalities running in user space as separate processes
- Kernel-mode components don’t reach into one another’s data structures
- Use formal interfaces to pass parameters and access and/or modify data structures
Therefore the term “modified microkernel”
Further reading at TechNet on the Windows NT 3.51 kernel reveals more relevant information:
A microkernel, on the other hand, is the name given to the core portion of a modern, modular operating system. Microkernel operating systems are based on two fundamental principles. The most basic principle is one of modularity, encapsulation, and data hiding. In this aspect of the design, there is one and only one portion of the operating system that has system-wide responsibility for a particular function.
All other parts of the operating system (as well as applications, naturally) access that function through a well-defined interface. There is no duplication of function and no “back doors” to critical data structures; all access to system data structures is through software interfaces. This approach makes it possible to upgrade or replace entire modules within the system without disturbing the remainder.
A secondary principal of the microkernel design, related to the first but focused more on the implementation strategy, is that large portions of the operating system which traditionally run entirely in the kernel or privileged mode of the microprocessor can now be executed in user or application mode, with only the microkernel itself, along with a relatively small amount of hardware device-specific code, executing in kernel mode.
Operating systems that follow both of these principles are often called pure microkernel systems. Operating systems that follow the first principle only strict modularity and strong encapsulation but not the second, are sometimes called modified microkernel or macrokernel operating systems.