A digest for kernel-wide design from wikipedia (including ALL the pics and some definitions)
1. Monolithic kernel (宏内核)
a: entire OS in kernel space and supervisor mode (eg, ring 0); b: a set of primitives or system calls for ALL OS services. E.g, BSD, Solaris, AIX, HP-UX, Linux, DOS, Window 9x
2. Microkernel (微内核)
a: near-minimum amount of OS – including address space management, thread management and IPC; b: device drivers, servers, protocol stacks, file systems, user interface, applications are ALL in user mode while kernel itself in supervisor mode or kernel mode; c: Microkernel servers are like daemon controlled by kernel. E.g, Mach, L4, QNX
3. Hybrid kernel (混内核)
a: kernel structure like microkernel, b: implemented like monolithic kernel, c: key OS services moved into kernel space while left (e.g, file systems) left in user space. E.g, Windows NT, BeOS, Plan 9, Inferno, NetWare
4. Nanokernel (纳内核, Picokernel)
a: much more small size from Microkernel, b: virtualization layer under OS – hypervisor, c: hardware abstraction layer at the bottom of OS.
5. Exokernel (外内核)
a: the least abstraction of hardware – left to application good for distribute OS, b: library OS as middle ware between Application and kernel, c: end-to-end for application. E.g, Nemesis, ExOS.