What is a Micro Kernel?
The basic design of QNX is a micro kernel. Win95, NT, UNIX and OS/2 all have a “monolithic” design in which the core operating system code is very large. Generally speaking, system level functions like hardware drivers must be part of the kernel to run. This is for, among other reasons, processor “supervisor” privileges are usually limited to kernel code for protection. In older UNIX systems, all kernel code must be linked into the OS before booting making testing such code time consuming, and configuration difficult. DOS and Win95 load all their drivers at boot time. Kernel resources are usually accessed by jumping into the kernel code. On Intel hardware this is best accomplished by the use of “gates”. By jumping through a gate into the kernel, supervisor priviledges are obtained. The kernel is usually not returned from until the system function is complete. This makes the kernel multi-threaded, and so all kernel code must protect non-re-entrant areas with semaphores. In addition, ker