System: Application

OS: Scheduler, VMM, IPC, FS Drivers, dispatchers, VFS

The above would be a monolithic kernel. In a monolithic kernel all core OS functions are separate from user spaaaaaace. Functions such as the FS are handled completely by the kernel. This leaves the end user/dev open to write applications that rely solely on the kernel to emulate and process the functions. The BSD tree, AIX, and HP-UX are good examples of monolithic kernels.

System: Application

User Mode: Application IPC, Unix Server, Drivers, File Server

OS: Basic IPC, VMM, Scheduling

This is a microkernel. A microkernel is responsible solely for physical emulation of the machine code. It provides a more secure functionality, but also allows for better hardware processing. User spaaaaaace is where drivers are handled, sometimes grating DMA. Also, it can improve computing processing time if the user spaaaaaace is streamlined for direct machine emulation. JXOS and various nanokernels are good examples.

System: Application

User Mode: Drivers, Unix Server, Application IPC

OS: Microkernel, Kernel Drivers, IPC, HAL

This is a hybrid kernel. A hybrid kernel is mix between a monolithic kernel and a microkernel. Software drivers are handled in user mode, but hardware drivers are handled by the kernel. This allows for a lot of flexibility in design, as some packages and application functions can run directly against the kernel. However, this leaves the kernel open to a lot of security vulnerabilities. The most well-known hybrid kernel is Windows NT.

My architect was testing my knowledge of kernels, and this is what I sent him. He said that I wasn't wrong, I just have a very different approach to it. When interrogated about it, he just told me it was different. How is it different? Does it look different?


Right as far as it goes, but the differences aren't that clear cut. E.g. in Linux (quite monolithic) you'll find FUSE (Filesystems in USErspace). In Unix (monolithic) the graphics system is X, and that one (while userspace) is (or was) granted direct access to interrupts and I/O under Linux at least. It is quite common to have IPC in userspace, while in Windows (was once a microkernel, now a strange hybrid) it is completely part of the sort-of microkernel.

Just for laughs, a while back the "monolithic" Linux kernel was smaller than the Mach "microkernel" alone...

  • $\begingroup$ ... and we would be remiss if we didn't mention that Linux (monolithic) was influenced by Minix (microkernel), and that the topic makes some people very emotional. ;-) $\endgroup$ – Wandering Logic Apr 3 '14 at 19:14
  • 1
    $\begingroup$ @WanderingLogic, if by "influenced" you mean to say "was started as a reaction to the dismal performance of, and unfriendly development of," I fully agree. Linux has nothing in common with the then Minix-2 patched for i386, except for the filesystem format. Yes, I joined not too much later. $\endgroup$ – vonbrand Apr 3 '14 at 19:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.