This is certainly the most complete presentation of how to program
applications using Mach features. It explains the basic Mach
abstractions of tasks, threads, ports, messages and memory objects
and gives examples of why and how to use them. There are
introductory chapters for tasks/threads, interprocess communication
(IPC) and virutal memory. Following this are chapters on advanced
features of IPC such as server processes might need, the Mach
Interface Generator which is used to simplify the writing of IPC
interfaces, and external memory management. There is also a chapter
each for C-threads and OSF/1 P-threads, and the Mach exception
handling facility.

There are frequent short code examples as well as a complete
client/server example of an external memory manager.

The code is all compatible with Mach 2.5, but references are made to
where there are differences with Mach 3.0. Even if your goal is to
program for a Mach 3.0 system, this book is a good place to start
since the basic concepts have not changed significantly. Once the
basic ideas are understood, the Mach 3.0 reference manuals can be
used to update your knowledge of the details.

This is a textbook intended to provide knowledge of the principles
and practice of distributed system design. The principles of
interprocess communication, remote procedure calls, distributed file
and name servers, and distributed operating systems with the emphasis on
micro-kernels are covered along with other more sophistcated
features to support distributed systems. Many of these ideas are
illustrated by examples from the Mach operating system.

There is a final chapter where Mach, Chorus, Amoba and Clouds are examined
in more detail and the different design decisions are compared.
Section 18.2, pages 547-566 gives a clear explanation of the central
features of the Mach 3.0 micro-kernel.

This is a subsection of a chapter surveying seven experimental
distributed operating systems. It defines the basic Mach
abstractions and goals. It emphasizes the software architecture
both at the high level of the system tasks running on tightly coupled
multi-processor platforms or a network of loosely coupled
machines and at the implementation level of describing the
various kernel modules and data structures. Specific primitives
are specified and an outline of a client/server shared
memory server is given.

The book is of practical character and describes the author's experience
while developing load distribution on top of the Mach microkernel.

Load distribution is a very important concept for distributed
systems in order to achieve better performance, resource
utilization and response times. Providing efficient mechanisms
for the transparent support of load distribution has proven to
be an extremely difficult undertaking. As a matter of fact,
there is no commercially available system which provides
transparent load distribution right now. The monograph by D.
Milojicic presents a novel load distribution scheme based on
modern microkernel architectures. The remarkable results of D.
Milojicic's approach show evidence for his hypothesis that load
distribution is feasible even under strong efficiency constraints
if built upon microkernel architectures. Based on a complete
implementation using the NORMA-version of Mach, D. Milojicic
shows that substantial performance improvements of his load
distribution scheme on top of Mach result from the dramatic
reduction of state information to be managed in course of a
task migration.

For readers not familiar with the topic, the monograph gives
a good survey of the load distribution problem and puts existing
approaches into perspective.

Abstract from the forward by Prof. Juergen Nehmer, University of Kaiserslautern

Gives a brief introduction to Mach, its history and design
goals. Covers the basic concepts of Mach, its similarities and
differences from Unix. Discusses the NetMessage Server and
how it extends IPC trasparently across machines. Covers
virtual memory managment and external memory managers and
sharing of memory between tasks. There is a brief mention
of implementation details and how they compare with BSD-Unix.

This chapter gives a general introduction to the Mach 3.0
micro-kernel and compares it to the Amobea operating system.
Implementation of task and thread creation and scheduling are covered in
some depth as is memory management and interprocess communication.
External memory management is explained and there is a brief description
of the Network Message Server and the Unix server.

This book covers the concepts and programming interfaces of the Mach
kernel. It addresses both the novice and the more advanced reader.
The first part reviews the reader's knowledge of operating systems,
and introduces the basic Mach abstractions of VM objects, threads,
tasks, etc...

The second part presents an in-depth description of the following
topics: Mach IPC, the MiG, Cthreads, the Mach VM system, the
External Memory Management Interface (EMMI). An application example
gives this section on Mach programming final polish. An outlook in
the last chapter presents the differences between the 2.5 version of
Mach and the Micro-Kernel based 3.0 version, together with the
description of the Unix-Emulation.