Micro-kernels vs. Monolithic Kernels and Lock Free Data Structures
I’ve been reading about one of my favorite subjects lately: object oriented operating systems. It seems any operating systems research includes a discussion of micro-kernels vs. monolithic kernels. Micro kernels include the minimal functionality required to manage the processor and memory, functions such as thread management. The Linux Kernel is a monolithic kernel, including the file system and Internet Protocol stack and a host of other services in the kernel.
I’m firmly in the micro kernel camp but I think this is a reflection of my embedded systems background. If the file system, IP stack and other services are provided as user processes, it is much easier to tailor an OS kernel for your embedded system. But this flexibility comes at a price. Micro kernels have traditionally had performance problems. When the file system or the IP stack is a user process there is the additional overhead of making system calls for thread management. A file system or IP stack in a monolithic kernel has access to special kernel facilities for thread management without the context switching overhead of the user’s systems calls.
What does all this have to do with Lock Free Data Structures? Many systems calls are made to serialize access to shared data. Lock Free Data Structures use an atomic machine instruction to guarantee atomic operations on data structures. If we can use Lock Free Data Structures rather than thread services such as Mutexes then we might have the best of both OS approaches; the flexibility of the micro kernel with the performance of the monolithic kernel.
I don’t know if this will work out. I’m still researching Lock Free Data Structure and I want to implement something to play with but this is what excites me lately. I must lead a pretty dull life.








