Post on 06-May-2015
Embed Size (px)
- 1.Kernel (computing) By M.HARRY JOSEPH
2. What is meant by kernel? In computing, the kernel is the central component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level. The kernel's responsibilities include managing the system's resources (the communication between hardware and software components). Usually as a basic component of an operating system, a kernel can provide the lowest-level abstraction layer for the resources (especially processors and I/O devices) that application software must control to perform its function. It typically makes these facilities available to application processes through inter-process communication mechanisms and system calls. 3. Operating system tasks are done differently by different kernels, depending on their design and implementation. While monolithic kernels execute all the operating system code in the same address space to increase the performance of the system, microkernels run most of the operating system services in user space as servers, aiming to improve maintainability and modularity of the operating system. A range of possibilities exists between these two extremes. 4. A kernel connects the application software to the hardware of a computer. 5. A typical vision of a computer architecture as a series of abstraction layers: hardware, firmware, assembler, kernel, operating system and applications 6. On the definition of "kernel" While it is today mostly called the kernel, originally the same part of the operating system was also called the nucleus or core, and was conceived as containing only the essential support features of the operating system. However the term core has also been used to refer to the primary memory of a computer system, because some early computers used a form of memory called core memory. 7. Features of kernel A kernel will usually provide features for low-level schedulingof processes (dispatching), inter-process communication, process synchronization, context switching, manipulation of process control blocks, interrupt handling, process creation and destruction, and process suspension and resumption 8. Kernel basic facilities 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 CPU, the processor. 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) 9. Kernel basic facilities (Conti-) 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. 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). 10. monolithic kernels execute all of their code in the same address space (kernel space) microkernels try to run most of their services in user space, aiming to improve maintainability and modularity of the codebase. Most kernels do not fit exactly into one of these categories, but are rather found in between these two designs. These are called hybrid kernels. More exotic designs such as nanokernels and exokernels are available, but are seldom used for production systems. The Xen hypervisor, for example, is an exokernel. 11. monolithic kernel In a monolithic kernel, all OS services run along with the main kernel thread, thus also residing in the same memory area. This approach provides rich and powerful hardware access. Some developers, such as UNIX developer Ken Thompson, maintain that it is "easier to implement a monolithic kernelthan microkernels. The main disadvantages of monolithic kernels are the dependencies between system components a bug in a device driver might crash the entire system and the fact that large kernels can become very difficult to maintain. 12. What is meant by microkernel? In the microkernel approach, the kernel itself only provides basic functionality that allows the execution of servers, separate programs that assume former kernel functions, such as device drivers, GUI servers, etc. 13. The microkernel approaches: consists of defining a simple abstraction over the hardware, with a set of primitives or system calls to implement minimal OS services such as memory management, multitasking, and inter-process communication. Other services, including those normally provided by the kernel, such as networking, are implemented in user-space programs, referred to as servers. Microkernels are easier to maintain than monolithic kernels, but the large number of system calls and context switches might slow down the system because they typically generate more overhead than plain function calls. A microkernel allows the implementation of the remaining part of the operating system as a normal application program written in a high-level language, and the use of different operating systems on top of the same unchanged kernel. It is also possible to dynamically switch among operating systems and to have more than one active simultaneously. 14. Hybrid kernels This approach combines the speed and simpler design of a monolithic kernel with the modularity and execution safety of a microkernel. are a compromise between the monolithic and microkernel designs. This implies running some services (such as the network stack or the filesystem) in kernel space to reduce the performance overhead of a traditional microkernel, but still running kernel code (such as device drivers) as servers in user space. 15. Nanokernels delegates virtually all services including even the most basic ones like interrupt controllers or the timer to device drivers to make the kernel memory requirement even smaller than a traditional microkernel 16. exokernel An exokernel is a type of kernel that does not abstract hardware into theoretical models. Instead it allocates physical hardware resources, such as processor time, memory pages, and disk blocks, to different programs. A program running on an exokernel can link to a library operating system that uses the exokernel to simulate the abstractions of a well-known OS, or it can develop application-specific abstractions for better performance. 17. Mac OS X is based on Darwin, which uses a Hybrid Kernel called XNU, which was created combining the 4.3BSD kernel and the Mach kernel. 18. Four popular categories or kinds of Kernels namely Monolithic kernels, Microkernels, Hybrid kernels and Exokernels. 19. Monolithic kernels are part of Unix-like operating systems like Linux ,FreeBSD etc. These types of kernels consist of the core functions of the operating system and the device drivers with the ability to load modules at runtime. 20. Microkernels are part of the operating systems like AIX, BeOS, Hurd, Mach, Mac OS X, MINIX, QNX. Etc. These types of kernels normally provide only the minimal services such as defining memory address spaces, Inter-process communication (IPC) and the process management. The other functions such as running the hardware processes are not handled directly by microkernels. 21. Hybrid kernels are part of the operating systems such as Microsoft Windows NT, 2000 and XP. DragonFly BSD etc. These types of kernels are extensions of microkernels with some properties of monolithic kernels. Unlike monolithic kernels, these types of kernels are unable to load modules at runtime on their own. 22. Exokernels are evolving and still under experimental stage in development of an operating system that could incorporate multiple library operating systems and are intended to simultaneously run multiple operating systems of different kinds like Linux and Microsoft Windows together using appropriate Application Programming Interface (API).