Distributed Systems: Concepts and Design
To reinforce the notion of a distributed system as a collection of resources managed by kernels and servers, and to identify the infrastructure requirements necessary for supporting the middleware layer. To understand the requirement for, and alternative architectures of, multi-threaded processes. To identify invocation mechanisms and appreciate their importance and costs. To compare microkernels and monolithic kernels. To prepare the ground for discussion of services and distributed shared memory described later in the book.
There is not always a clear distinction between the operating system and the applications that utilize it. Mechanisms for protection are key to understanding the essential differences. The material in this chapter deals with an infrastructure for process management, memory management and invocation, on which further functionality can be based.
Threads are actually familiar `processes' from operating systems courses, which usually consider processes that can share memory. Threads are not a fundamentally new concept, but they are important for building efficient client-server systems.
Invocation is more than just communication. Operating systems have to provide more than just RPC. The cost of local invocations is significant. Communication is the key to heterogeneous interworking.
Large, sparse address spaces and copy-on-write memory sharing are needed in all modern operating systems, and are not connected with distribution per se.
The relative advantages and disadvantages of microkernels and monolithic kernels should be given lively and critical discussion, including discussion of which features covered in the chapter, such as multi-threading, can and should be bolted on to conventional monolithic kernels. Microkernels have yet to be proven in large-scale commercial use.
The material in this chapter does not address real-time computing, which is an important area. Chapter 15 considers real-time processing of multimedia data.
This chapter assumes a reasonable grasp of first courses in computer architecture and operating systems.
Students seem to be able to appreciate the need for threads in servers, but examples of multi-threaded applications such as web browsers will help them appreciate the need for threads in clients.
The material requires illustration wherever possible with practical problems in server design. Chapters 8 and 9 will reinforce the issues for file and name services.
Review the material on software structure in Section 2.2.
Link the material to currently available operating systems, for example Linux and Microsoft's Windows NT.
One or more of the case studies of Mach in Chapter 18 and Chorus, Amoeba and Clouds in the supplementary material at www.cdk3.net/oss can be used for illustration. Study of the other research kernels mentioned in the chapter (L4, SPIN, Exokernel) is encouraged.
It may help the students' motivation to point out that many of the techniques described in this chapter are relevant to the design and implementation of web servers and application servers in daily use on the Internet. Study of the architecture of highly scalable services such as search engines is encouraged.