The following is a list of books with substantial information about Mach (listed alphabetically by the first author's last name):
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
This chapter describes history of the Mach operating system research project and its effort to transfer the ideas imbedded in that system from the research laboratory to industry.
A. Silberschatz and P.B. Galvin
Addison-Wesley Publishing Company, 4rd Edition 1994
Chapter 20, pages 659-689 is about Mach.
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.