The concept of a microkernel is antagonistic to the concept of a single core. A single kernel, which is generally the core components of the system are all implemented in the kernel. For example, the memory manager, the process manager, the I/O Manager, and so on. It can be imagined that this design of the core components of the association between the large, that is often said that the coupling is very large, not conducive to modular design. But the advantages are also obvious, that is, fast. Communication between the components is done in kernel mode, with no switching between processes and no switching from user mode to kernel mode. A typical single-core operating system is the Linux operating system.
In contrast to a single kernel, a microkernel definition, the main components of the operating system (for example, memory manager, Process Manager, and I/O Manager) run in separate processes, have their own private address space, and on top of the component are a set of service primitives provided by the microkernel. The primitives are made up of interprocess communication, and frequent interprocess communication takes the expense of expensive CPU time. This cost, in exchange for the operating system core module coupling reduced. For example, if you want to change the algorithm of process scheduling in the process module, simply replace the process scheduling module and maintain the original interface. In a single kernel operating system, the data structure of the various modules tightly combined, reaching, that is, there is a slight change in the place, you need to make a large change.
At the beginning of the design, Windows NT was designed to be a purely micro-kernel operating system. All Windows programs rely on the 3 modules of the WIN32 core subsystem, namely Kernel32.dll, User32.dll, Gdi32.dll. Among them, User32.dll is responsible for the window message distribution processing, etc., GDI32.dll is responsible for the window graphics operation. This previous implementation was fully implemented in user mode, and after Windows NT 4.0, the core code for these two DLLs was put into kernel mode Win32k.sys, while retaining the original DLL in user mode. This makes User32.dll and Gdi32.dll small, and they are only responsible for invoking Win32k.sys in kernel mode. This improves the efficiency of drawing graphics for Windows. As a result, Windows is able to perform very well in many operating systems with graphical capabilities.
As can be seen, Windows is not a pure micro-kernel system, but it in the core of the various components, to achieve relatively small coupling, while the efficiency of the micro-core efficiency to overcome the characteristics of low.
Windows and the kernel