DescriptionIn this book/ you will learn about all three kinds of interaction. In all three cases/ interesting software techniques are needed in order to bring the computations into contact/ yet keep them suffciently at arm's length that they don't compromise each other's reliability. The exciting challenge/ then/ is supporting controlled interaction. This includes support for computations that share a single computer and interact with one another/ as your email and word processing programs do. It also includes support for data storage and network communication. This book describes how all these kinds of support are provided both by operating systems and by additional software layered on top of operating systems/ which is known as middleware. Chapter 1 provides an overview of the text as a whole/ explaining what an operating system is/ what middleware is/ and what sorts of support these systems provide for controlled interaction. The next nine chapters work through the varieties of controlled interac- tion that are exemplified by the scenario at the beginning of the preface: in- teraction between concurrent computations on the same system (as between your email program and your word processor)/ interaction across time (as between your word processor before your trip and your word processor after your trip)/ and interaction across space (as between your email program and your service provider's email server). The first of these three topics is controlled interaction between computa- tions operating at one time on a particular computer. Before such interaction can make sense/ you need to understand how it is that a single computer can be running more than one program/ such as an email program in one window and a word processing program in another. Therefore/ Chapter 2 explains the fundamental mechanism for dividing a computer's attention between concurrent computations/ known as threads. Chapter 3 continues with the related topic of scheduling. That is/ if the computer is dividing its time between computations/ it needs to decide which ones to work on at any moment. With concurrent computations explained/ Chapter 4 introduces con- trolled interactions between them by explaining synchronization/ which is control over the threads' relative timing. For example/ this chapter explains how/ when your email program sends a document to your word processor/ the word processor can be constrained to read the document only after the email program writes it. One particularly important form of synchroniza- tion/ atomic transactions/ is the topic of Chapter 5. Atomic transactions are groups of operations that take place as an indivisible unit; they are most commonly supported by middleware/ though they are also playing an increasing role in operating systems. Other than synchronization/ the main way that operating systems con- trol the interaction between computations is by controlling their access to memory. Chapter 6 explains how this is achieved using the technique known as virtual memory. That chapter also explains the many other objectives this same technique can serve. Virtual memory serves as the foundation for Chapter 7's topic/ which is processes. A process is the fundamental unit of computation for protected access/ just as a thread is the fundamental unit of computation for concurrency. A process is a group of threads that share a protection environment; in particular/ they share the same access to virtual memory. The next three chapters move outside the limitations of a single com- puter operating in a single session. First/ consider the document stored before a trip and available again after it. Chapter 8 explains persistent storage mechanisms/ focusing particularly on the file storage that operat- ing systems provide. Second/ consider the interaction between your email program and your service provider's email server. Chapter 9 provides an overview of networking/ including the services that operating systems make available to programs such as the email client and server. Chapter 10 ex- tends this discussion into the more sophisticated forms of support provided by communication middleware/ such as messaging systems/ RMI/ and web services. Finally/ Chapter 11 focuses on security. Because security is a pervasive issue/ the preceding ten chapters all provide some information on it as well. Specifically/ the final section of each chapter points out ways in which se- curity relates to that chapter's particular topic. However/ even with that coverage distributed throughout the book/ a chapter specifically on security is needed/ primarily to elevate it out of technical particulars and talk about general principles and the human and organizational context surrounding the computer technology. The best way to use these chapters is in consecutive order. However/ Chapter 5 can be omitted with only minor harm to Chapters 8 and 10/ and Chapter 9 can be omitted if students are already suffciently familiar with networking.