| • Science | • People | • Locations | • Timeline |
An operating system kernel is not strictly needed to run a computer. Programs can be directly loaded and executed on the "bare metal" machine, provided that the authors of those programs are willing to do without any hardware abstraction or operating system support. This was the normal operating method of many early computers, which were reset and reloaded between the running of different programs. Eventually, small ancillary programs such as program loaders and debuggers were typically left in-core between runs, or loaded from read-only memory. As these were developed, they formed the basis of what became early operating system kernels.
There are four broad categories of kernels :
The monolithic approach defines a high-level virtual interface over the hardware, with a set of primitives or system calls to implement operating system services such as process management, concurrency, and memory managementMemory management is the act of managing computer memory. In its simpler forms this involves providing ways to allocate portions of memory to programs at their request and free it back to the system for reuse when no longer needed. Virtual memory systems in several modulesA module is a software entity that groups a set of (typically cohesive) subprograms and data structures. Modules promote encapsulation (i. information hiding) through a separation between the interface and the implementation. The module interface expresse that run in supervisor modeIn computer terms, supervisor mode is a hardware-mediated flag which can be changed by code running in system-level software. System-level tasks or threads will have this flag set while they are running, whereas user-space applications will not. This flag.
Even if every module servicing these operations is separate from the whole, the code integration is very tight and difficult to do correctly, and, as all the modules run in the same address space, a bug in one of them can bring down the whole system. However, when the implementation is complete and trustworthy, the tight internal integration of components allows the low-level features of the underlying system to be effectively exploited, making a good monolithic kernel highly efficient. Proponents of the monolithic kernel approach make the case that if code is not correct, it does not belong in a kernel, and if it is, there is little advantage in the microkernel approach.
More modern monolithic kernels such as LinuxLinux mascot Tux created by Larry Ewing. In computing, the Linux kernel is a free Unix-like operating system kernel created by Linus Torvalds in 1991 and subsequently improved with the assistance of developers around the world. It was originally developed and the FreeBSD kernel can load executable modules at runtime, allowing easy extension of the kernel's capabilities as required, while helping to keep the amount of code running in kernelspace to a minimum.
Examples of monolithic kernels: