Publication Date: 2010-Sep-08
The IP.com Prior Art Database
Kernels form the centre of operating systems- the single most important computer program in a computer system. Although each kernel is different, a number of kernel design styles have emerged with most kernels belonging either to the microkernel or monolithic kernel designs. A self-adapting microkernel (SAM) is disclosed. This is a new kernel architecture which has self-adapting facilities designed to have advantages of both monolithic and microkernel designs without any disadvantages of either. By being able to adapt itself, the SAM is able to change its behaviour and produce a computing environment which benefits user programs. In addition to this, the SAM provides a highly flexible operating system kernel which has the potential to suit a wide variety of computer systems ranging from high-performance systems to embedded systems.
The problem of kernel design has a huge impact on any software product especially operating systems as to the performance and abilities of that product. Currently, there are three approaches to operating system kernel design: monolithic, microkernel and hybrid.
Monolithic kernels rely on the operating system kernel being a whole and complete entity during system initialisation and runtime, resulting in a fast and powerful system. However, upgrading of kernel is not possible without complete replacement - a full system shutdown is required in order for the new kernel to be updated. In addition, monolithic kernels are large in terms of their size and therefore the resources which they consume.
The Linux kernel is a monolithic kernel which employs the use of modules in order to try and reduce the footprint of the basic Linux kernel. Kernel modules are then loaded and attached during runtime to the monolithic kernel, providing the kernel with additional functionality. However, the Linux kernel still remains by design a complex, monolithic kernel system and there exist many features which cannot be included in a kernel module but must be included in the 'base' kernel.
Microkernels, are almost the opposite of monolithic kernels. They are designed to provide very little functionality with a small footprint and as a result are easy to maintain and resource efficient. Microkernels are incapable of providing a 'complete kernel' for an operating system on their own and rely on a number of 'servers' to provide specific functionality, such as device management, networking, security etc. The microkernel itself then is used by the operating system to pass messages from a user program to various servers which provide the user program with such services. Also, a microkernel based operating system does not need a complete restart to upgrade parts of the operating system because, for example, only the network server would need to be stopped to upgrade it, not the whole kernel. This advantage is also found with a modular kernel such as Linux. The problem with microkernels is that they are considered slower than monolithic kernels because they are constantly needing to pass messages.
Hybrid kernels such as the Windows NT kernel, can be considered as an attempt in order to gain the performance of a monolithic kernel but yet retain the design principles of a microkernel by having some features such as networking as part of the kernel and other parts of the kernel running in 'userspace' as if they were running as microkernel servers. The problem with the hybrid kernel approach is that it requires a larger kernel than that of a microkernel, resulting in a system with a larger footprint and is more complex to maintain but with some speed gains of a monolithic kernel and at the same time, the simplicity of a monolithic kernel is lost in a hybrid kernel as it requires the additional microkernel interfaces and message passing systems...