1. Introduction to Distributed Systems
1.1 What Is an Operating System?
1.2 What Is a Distributed System?
1.2.1 Popular Network Topologies and Features
1.2.2 ISO/OSI Reference Model
1.2.3 Distributed Computing Models
1.2.4 Distributed versus Centralized Solutions
1.2.5 Network vs. Distributed Operating Systems
1.3 What Is a Real-Time System?
1.3.1 Real-time Event Characteristics
1.3.2 Network Characteristics Affecting Distributed Real-Time Applications
1.4 What Is a Parallel System?
1.4.1 Parallel Architectures
1.4.2 Parallel Software Paradigms
1.5 Sample Distributed Application
1.6 Summary
1.7 References for Further Study
Exercises
2. The Kernel
2.1 Kernel Types
2.2 Processes and Threads
2.2.1 Introduction to Multi-threaded Processes
2.2.2 Multi-threaded Process Paradigms
2.2.3 Multi-threaded support
2.3 Process Management
2.3.1 Types of Processes
2.3.2 Load Distribution & Process Migration
2.4 Process Scheduling
2.4.1 Identifying Processes for Scheduling
2.4.2 Scheduler Organization
2.5 Summary
2.6 References for Further Study
Exercises
3. Interprocess Communication
3.1 Selection Factors
3.2 Message Passing
3.2.1 Blocking Primitives
3.2.2 Non-blocking Primitives
3.2.3 Process Address
3.3 Pipes
3.3.1 Unnamed Pipes
3.3.2 Named Pipes
3.4 Sockets
3.4.1 UNIX Sockets
3.4.2 JAVA Support for Sockets
3.5 Remote Procedure Calls
3.5.1 Parameter Type
3.5.2 Data Type Support
3.5.3 Parameter Marshalling
3.5.4 RPC Binding
3.5.5 PC Authentication
3.5.6 RPC Call Semantics
3.5.7 SUN's ONC RPC
3.6 Summary
3.7 References for Further Study
Exercises
4. Memory Management
4.1 Review of Centralized Memory Management
4.1.1 Virtual Memory
4.1.2 Pages and Segments
4.1.3 Page Replacement Algorithms
4.2 Simple Memory Model
4.3 Shared Memory Model
4.3.1 Shared Memory Performance
4.3.2 DSM Performance Issues
4.4 Distributed Shared Memory
4.4.1 Methods for Distributing Shared Data
4.4.2 DSM Performance Issues
4.5 Memory Migration
4.6 Summary
4.7 References for Further Study
Exercises
5. Concurrency Control
5.1 Mutual Exclusion & Critical Regions
5.2 Semaphores
5.2.1 Semaphore Weakness
5.2.2 Semaphore Evaluation
5.3 Monitors
5.3.1 Condition Variables
5.3.2 Monitor Evaluation
5.4 Locks
5.4.1 Taking Turns
5.4.2 Atomic Operations and Hardware Support
5.5 Software Lock Control
5.5.1 Centralized Lock Manager
5.5.2 Distributed Lock Manager
5.6 Token-Passing Mutual Exclusion
5.7 Deadlocks
5.7.1 Prevent Deadlocks
5.7.2 Avoid Deadlocks
5.7.3 Ignore Deadlocks
5.7.4 Detect Deadlocks
5.8 Summary
5.9 References for Further Study
Exercises
6. Object-Based Operating Systems
6.1 Introduction to Objects
6.1.1 Object Definitions
6.1.2 Evaluation of Objects
6.2 The Clouds Object Approach
6.2.1 Clouds' Objects
6.2.2 Clouds Threads
6.2.3 Clouds' Memory Storage
6.3 Chorus V3 and COOL v2
6.3.1 The Base Layer: COOL Memory Management
6.3.2 The Generic Runtime System Layer: COOL Objects
6.3.3 The Language-Specific Runtime System Layer
6.4 Amoeba
6.4.1 Identification and Protection of Amoeba Objects
6.4.2 Amoeba Object Communication
6.5 Distributed Component Object Model (DCOM)
6.5.1 Monikers
6.5.2 Remote Method Calls
6.5.3 Garbage Collection
6.5.5 DCOM Security Policies
6.6 CORBATM Overview
6.6.1 CORBA's ORB
6.6.2 CORBA Object Adapters
6.6.3 CORBA Messaging
6.6.4 CORBA Compliance
6.6.5 CORBA to COM Mapping
6.7 Summary
6.8 References for Further Study
Exercises
7. Distributed Process Management
7.1 Distributed Scheduling algorithm Choices
7.1.1 Level of Scheduling
7.1.2 Load Distribution Goals
7.1.3 Scheduling Efficiency Goals
7.1.4 Processor Binding Time
7.2 Scheduling Algorithm Approaches
7.2.1 Usage Points
7.2.2 Graph Theory
7.2.3 Probes
7.2.4 Scheduling Queues
7.2.5 Stochastic Learning
7.3 Coordinator Elections
7.4 Orphan Processes
7.4.1 Orphan Clean Up
7.4.2 Child Process Allowance
7.4.3 Process Version Numbers
7.5 Summary
7.6 References for further Study
Exercises
8. Distributed File Systems
8.1 Distributed Name Service
8.1.1 File Types
8.1.2 Location Transparency
8.1.3 Global Naming & Name Transparency
8.2 Distributed File Service
8.2.1 File Variations
8.2.2 File Modification Notification
8.2.3 File Service Implementations
8.2.4 File Replication
8.3 Distributed Directory Service
8.3.1 Directory Structures
8.3.2 Directory Management
8.3.3 Directory Operations
8.4 NFS TM
8.4.1 NFS File Service
8.4.2 NFS Directory Service
8.4.3 NFS Name Service
8.5 X.500
8.5.1 X.500 File and Name Service: The Information Model
8.5.2 X.500's Directory Service: The Directory Model
8.6 Summary
8.7 References for Further Study
Exercises
9. Transaction Management & Consistency Models
9.1 Transaction Management Motivation
9.1.1 The Lost Update
9.1.2 Retrieval Disparity
9.2 ACID Properties of a Transaction
9.3 Consistency Models
9.3.1 Strict Consistency Model
9.3.2 Sequential Consistency Model
9.3.3 Casual Consistency Model
9.3.4 PRAM Consistency Model
9.3.5 Processor Consistency Model
9.3.6 Weak Consistency Model
9.3.7 Release Consistency Model
9.3.8 Lazy Release Consistency
9.3.9 Entry Consistency Model
9.4 Two-Phase Commit Protocol
9.4.1 Prepare to Commit Phase
9.4.2 Commit Phase
9.5 Nested Transactions
9.6 Implementation Issues for Transactions
9.6.1 Premature Reads & Writes
9.6.2 The Domino Effect of aborts
9.6.3 Ensuring Recoverability
9.7 Summary
9.8 References for Further Study
Exercises
10. Distributed Synchronization
10.1 Introduction to Global Time
10.2 Physical Clocks
10.2.1 Obtaining an Accurate Physical Time
10.2.2 Synchronizing Physical Time
10.2.3 Centralized Physical Time Services
10.2.4 Distributed Physical Time Services
10.3 Network Time Protocol (NTP)
10.3.1 NTP Architecture
10.3.2 NTP Design Goals
10.3.3 NTP Synchronization Modes
10.3.4 Simple Network Time Protocol(SNTP)
10.4 Logical Clocks
10.4.1 Happen-Before Relationship
10.4.2 Logical Ordering
10.4.3 Total Ordering with Logical Clocks
10.5 Summary
10.6 References for Further Study
Exercises
11. Distributed Security
11.1 Cryptography & Digital Signatures
11.1.1 Symmetric Encryption
11.1.2 Asymmetric Encryption
11.2 Authentication
11.2.1 Certificate Lists
11.2.2 Centralized Certificate Distribution Center
11.3 Access Control(Firewalls)
11.3.1 Packet Filtering Gateways
11.3.2 Proxy Services
11.3.3 Firewall Architectures
11.4 Summary
11.5 References for Further Study
Exercises
12. CASE STUDY: Windows 2000TM
12.1 Overview: Windows 2000 Design
12.2 Kernel Mode Overview
12.2.1 Kernel Objects
12.2.2 Hardware Abstraction Layer(HAL)
12.2.3 Device Drivers
12.2.4 The Executive
12.3 Plug and Play
12.4 NT Files System in Windows 2000(NTFS)
12.4.1 Access Control Lists(ACLs)
12.4.2 Reparse Points
12.4.3 Storage Management
12.5 Active Directory
12.5.1 NameSpace
12.5.2 Change Journal for Replication and Scalability
12.5.3 Microsoft Index Server and HTTP Support
12.6 Microsoft Management Console(MMC)
12.7 Cluster Service
12.7.1 Cluster Service Overview
12.7.2 Cluster Abstractions
12.7.3 Cluster Service Architectures
12.7.4 Cluster Service Deployment to Applications
12.8 Windows 2000 Security
12.8.1 Security Configuration Editor
12.8.2 Encrypting file System
12.8.3 Microsoft Security Support Provider Interface
12.9 HYDRA-A Thin Client
12.10 Summary
12.11 References for Further Study
Exercises
Appendix A. Surgical Scheduling Program
List of Acronyms
Glossary of Terms
Bibliography
Index