Page 24 - DCAP103_Principle of operating system
P. 24
Unit 1: Operating System
all requests from the various hardware devices (such as disk drives and the keyboard) that Notes
compete for the kernel’s services and (4) a memory manager, which allocates the system’s
address spaces (i.e., locations in memory) among all users of the kernel’s services.
The kernel should not be confused with the BIOS (Basic Input/Output System). The BIOS is
an independent program stored in a chip on the motherboard (the main circuit board of a
computer) that is used during the booting process for such tasks as initializing the hardware
and loading the kernel into memory. Whereas the BIOS always remains in the computer and is
specific to its particular hardware, the kernel can be easily replaced or upgraded by changing or
upgrading the operating system or, in the case of Linux, by adding a newer kernel or modifying
an existing kernel.
Most kernels have been developed for a specific operating system, and there is usually only one
version available for each operating system. For example, the Microsoft Windows 2000 kernel is
the only kernel for Microsoft Windows 2000 and the Microsoft Windows 98 kernel is the only
kernel for Microsoft Windows 98. Linux is far more flexible in that there are numerous versions
of the Linux kernel, and each of these can be modified in innumerable ways by an informed user.
A few kernels have been designed with the goal of being suitable for use with any operating
system. The best known of these is the Mach kernel, which was developed at Carnegie-Mellon
University and is used in the Macintosh OS X operating system.
It is not necessary for a computer to have a kernel in order for it to be usable, the reason being
that it is not necessary for it to have an operating system. That is, it is possible to load and
run programs directly on bare metal machines (i.e., computers without any operating system
installed), although this is usually not very practical.
In fact, the first generations of computers used bare metal operation. However, it was eventually
realized that convenience and efficiency could be increased by retaining small utility programs,
such as program loaders and debuggers, in memory between applications. These programs
gradually evolved into operating system kernels.
The term kernel is frequently used in books and discussions about Linux, whereas it is used
less often when discussing some other operating systems, such as the Microsoft Windows
systems. The reasons are that the kernel is highly configurable in the case of Linux and users
are encouraged to learn about and modify it and to download and install updated versions.
With the Microsoft Windows operating systems, in contrast, there is relatively little point in
discussing kernels because they cannot be modified or replaced.
1.6.1 Categories of Kernels
Kernels can be classified into four broad categories: monolithic kernels, microkernels, hybrid
kernels and exokernels. Each has its own advocates and detractors.
Monolithic kernels, which have traditionally been used by Unix-like operating systems, contain
all the operating system core functions and the device drivers (small programs that allow the
operating system to interact with hardware devices, such as disk drives, video cards and printers).
Modern monolithic kernels, such as those of Linux and FreeBSD, both of which fall into the
category of Unix-like operating systems, feature the ability to load module at runtime, thereby
allowing easy extension of the kernel’s capabilities as required, while helping to minimize the
amount of code running in kernel space.
A microkernel usually provides only minimal services, such as defining memory address spaces,
interprocess communication (IPC) and process management. All other functions, such as hardware
management, are implemented as processes running independently of the kernel. Examples of
microkernel operating systems are AIX, BeOS, Hurd, Mach, Mac OS X, MINIX and QNX.
LOVELY PROFESSIONAL UNIVERSITY 17