Kernel is a software that makes communication / mediator between computer applications and hardware, which provides services such as memory management system for processes that are running, settings files, input-output to and from a device and many more functions the other added. The bottom line is the kernel is a link (between software and hardware).
Another definition says kernel is the core part of an operating system, in other words he is the heart of the operating system. The kernel controls the basic working of the operating system and are closely related to hardware, such as memory management (memory management), process management (process management) including job scheduling and context switching, management Input Output (I / O) including system files and drivers I / O devices as well as some other basic functions such as access control. Due to limited access to the hardware, while there is more than one program to be served at the same time, the kernel is also responsible for managing when and how long a program can use one part of the hardware. It is called as multiplexing.
As the heart of the operating system kernel provides a format to suit your needs. Before we choose the kernel we should be able to determine in advance, about how the kernel format in accordance with the requirements. There is a kernel Systems Modular and Monolithic, for example if often mutually hardware, the kernel is a modular system would be more suitable than the builtin system kernel (monolithic). Both of these systems have advantages and disadvantages of each.
As the Linux kernel has a modular design. At boot time, only a minimal resident kernel is loaded into memory. This in because only the required modules in the course and want the user to be processed, a kernel module can be dynamically loaded into memory.
Then in a specific period in the switch module does not want the module can be removed from memory. Dynamic loading mechanism is called kmod. In other words, the module will not be loaded if the module is not desired and will be used if needed. One of the advantages of a modular kernel, camel-replace hardware becomes easier, because living a pulled-probe module, or if there is no living mem-build only one module. The disadvantage is the relatively vulnerable terhadapat security problems, because the script kiddies usually insert a module into the kernel (in the hope that its process is not known by the system admin is concerned)
Buildin kernel (Monolithic)
With a monolithic kernel is better in terms of security, a builtin kernel (monolithic) would be relatively safe. But in terms of ease, if we add or replace a hardware, it should automatically recompile the kernel so However, the scheme is more appropriate kernel how, it can be clarified as needed and implementation of the system used. If you want to make a monolithic kernel is modular, it can be done by a monolithic kernel, after the manner specified in the monolithic kernel configuration and compilation, it can be taken, the parts which are to be separated to be used as modules.
serve a variety of application programs to access the computer hardware securely.
Due to limited access to the hardware, while there is more than one program to be served at the same time, the kernel is also responsible for managing when and how long a program can use one part of the hardware. It is called as multiplexing.
help support the execution of applications and features hardware abstraction.
Furthermore, the architects developed the operating system kernel operating system, which in turn is divided into four sections which are different designs, as follows:
1. monolithic kernel
Monolithic kernel integrate many functions in the kernel and provides a hardware abstraction layer fully to the hardware under the operating system.
Microkernel provides few of the hardware abstraction and use applications that run on it-which is called the server to perform some other functionality.
3 Kernel hybrid
Hybrid kernel is a modified microkernel design approach. In a hybrid kernel, there are some additional code in the kernel space to enhance its performance.
Exokernel provides hardware abstraction to a minimum, so that the program can access the hardware directly. In exokernel design approaches, libraries that are owned by the operating system can perform abstraction abstraction similar to that performed in the monolithic kernel design