About
In computing, the Kernel 1) is the central component of most computer operating systems; it is a bridge between:
- the applications
- and the actual data processing done at the hardware level.
The kernel in the application stack.
where:
The main task of a kernel is to allow the execution of applications and support them with features such as hardware abstractions.
To run an application, a kernel typically:
- sets up an address space for the application,
- loads the file containing the application's code into memory (perhaps via demand paging),
- sets up a stack for the program and branches to a given location inside the program, thus starting its execution.
Book ! http://tldp.org/LDP/tlk/
Kernel Resources Management
The kernel's primary purpose is to manage the computer's resources and allow other programs to run and use these resources. Typically, the resources consist of:
- The Central Processing Unit (CPU, the processor) - Process management
This is the most central part of a computer system, responsible for running or executing programs on it. The kernel takes responsibility for deciding at any time which of the many running programs should be allocated to the processor or processors (each of which can usually run only one program at a time)
- The computer's memory - Memory Management
Memory is used to store both program instructions and data. Typically, both need to be present in memory in order for a program to execute. Often multiple programs will want access to memory, frequently demanding more memory than the computer has available. The kernel is responsible for deciding which memory each process can use, and determining what to do when not enough is available.
- Any Input/Output (I/O) devices present in the computer, such as keyboard, mouse, disk drives, printers, displays, etc. - Device management
The kernel allocates requests from applications to perform I/O to an appropriate device (or subsection of a device, in the case of files on a disk or windows on a display) and provides convenient methods for using the device (typically abstracted to the point where the application does not need to know implementation details of the device).