Chapter
25 Linux,
Solaris and contemporary UNIX
Objectives
To show the key developments in contemporary UNIX
systems when compared with the basic Seventh Edition
Points to emphasise
- The overall structure of the
system retains a monolithic kernel which exports services through a
system-call interface.
Additions such as Loadable Kernel Modules (Section 25.2) provide
more flexibility over how the kernel is constructed, but the model of interaction
remains the same.
- Adding support for
multi-processor machines and multi-threaded processes has wide-ranging
impacts on how the kernel is implemented and how concurrency is
controlled. A modern UNIX
kernel should be assessed both as a substrate over which concurrent
programs are deployed and as a substantial example of one in itself.
- The successful
‘sockets’ interface (from BSD UNIX) highlights the issues that
arise when trying to use a common API for file access, network access and
IPC.
Possible difficulties
UNIX-derived systems are still under active
development, most publicly in the case of the open-source Linux kernel. In assessing new features added to such
systems it is important to remain critical of whether they present good long-term
design decisions.
Teaching hints
- Many of the facilities
covered in the chapter can form the basis of practical programming
work. For example, students
could compare the relative performance of the server designs sketched in
Section 25.4 when interacting with clients over TCP network connections. Each design has its merits for
particular workloads or in terms of ease of programming.
- The IPC APIs from System V
and from BSD take very different approaches to tackling similar
problems. Explore the
advantages and disadvantages of each.
A library-based project could examine the original discussions at
the time of their design.