Page 25 - DCAP103_Principle of operating system
P. 25
Principles of Operating Systems
Notes Hybrid kernels are similar to microkernels, except that they include additional code in kernel
space so that such code can run more swiftly than it would were it in user space. These kernels
represent a compromise that was implemented by some developers before it was demonstrated
that pure microkernels can provide high performance. Hybrid kernels should not be confused
with monolithic kernels that can load modules after booting (such as Linux).
Most modern operating systems use hybrid kernels, including Microsoft Windows NT, 2000
and XP. DragonFly BSD, a recent fork (i.e., variant) of Free BSD, is the first non-Mach based
BSD operating system to employ a hybrid kernel architecture.
Exokernels are a still experimental approach to operating system design. They differ from the
other types of kernels in that their functionality is limited to the protection and multiplexing
of the raw hardware, and they provide no hardware abstractions on top of which applications
can be constructed. This separation of hardware protection from hardware management enables
application developers to determine how to make the most efficient use of the available hardware
for each specific program.
Exokernels in themselves they are extremely small. However, they are accompanied by library
operating systems, which provide application developers with the conventional functionalities
of a complete operating system. A major advantage of exokernel-based systems is that they
can incorporate multiple library operating systems, each exporting a different API (application
programming interface), such as one for Linux and one for Microsoft Windows, thus making it
possible to simultaneously run both Linux and Windows applications.
1.6.2 The Monolithic versus Micro Controversy
In the early 1990s, many computer scientists considered monolithic kernels to be obsolete, and
they predicted that microkernels would revolutionize operating system design. In fact, the
development of Linux as a monolithic kernel rather than a microkernel led to a famous flame war
(i.e., a war of words on the Internet) between Andrew Tanenbaum, the developer of the MINIX
operating system, and Linus Torvalds, who originally developed Linux based largely on MINIX.
Proponents of microkernels point out that monolithic kernels have the disadvantage that an
error in the kernel can cause the entire system to crash. However, with a microkernel, if a
kernel process crashes, it is still possible to prevent a crash of the system as a whole by merely
restarting the service that caused the error. Although this sounds sensible, it is questionable
how important it is in reality, because operating systems with monolithic kernels such as Linux
have become extremely stable and can run for years without crashing.
Another disadvantage cited for monolithic kernels is that they are not portable; that is, they
must be rewritten for each new architecture (i.e., processor type) that the operating system is
to be used on. However, in practice, this has not appeared to be a major disadvantage, and it
has not prevented Linux from being ported to numerous processors.
Monolithic kernels also appear to have the disadvantage that their source code can become
extremely large. Source code is the version of software as it is originally written(i.e., typed
into a computer) by a human in plain text (i.e., human readable alphanumeric characters) and
before it is converted by a compiler into object code that a computer’s processor can directly
read and execute.
For example, the source code for the Linux kernel version 2.4.0 is approximately 100MB and
contains nearly 3.38 million lines, and that for version 2.6.0 is 212MB and contains 5.93 million
lines. This adds to the complexity of maintaining the kernel, and it also makes it difficult for new
18 LOVELY PROFESSIONAL UNIVERSITY