Information Technology Reference
In-Depth Information
system call interface, we can ooad some of the work of the operating system
to user programs, such as to a shell or to a print server.
In the rest of this chapter, we ask how should we organize the remaining parts
of the operating system? There are many dependencies among the modules
inside the operating system, and there is often quite frequent interaction between
these modules:
Many parts of the operating system depend on synchronization primitives
for coordinating access to shared data structures with the kernel.
The virtual memory system depends on low level hardware support for
address translation, support that is specific to a particular processor ar-
chitecture.
Both the file system and the virtual memory system share a common pool
of blocks of physical memory. They also both depend on the disk device
driver.
The file system can depend on the network protocol stack if the disk is
physically located on a different machine.
This has led operating system designers to wrestle with a fundamental trade-
off: by centralizing functionality in the kernel, performance is improved and it
makes it easier to arrange tight integration between kernel modules. However,
the resulting systems are less flexible, less easy to change, and less adaptive
to user or application needs. We discuss these tradeoffs by describing several
options for the operating system architecture.
3.5.1
Monolithic kernels
Almost all widely used commercial operating systems, such as Windows, Ma-
cOS, and Linux, take a similar approach to the architecture of the kernel |
a monolithic design. As shown in Figure 3.13, with a monolithic kernel , most
Denition: monolithic
kernel
of the operating system functionality runs inside the operating system kernel.
In truth, the term is a bit of a misnomer, because even in so-called monolithic
systems, there are often large segments of what users consider the operating sys-
tem that runs outside the kernel, either as utilities like the shell, or in system
libraries, such as libraries to manage the user interface.
Internal to a monolithic kernel, the operating system designer is free to
develop whatever interfaces between modules that make sense, and so there
is quite a bit of variation from operating system to operating system in those
internal structures. However, two common themes emerge across systems: to
improve portability, almost all modern operating systems have both a hardware
abstraction layer and dynamically loaded device drivers.
 
Search WWH ::




Custom Search