Book description
Modern software systems rely on the concepts of concurrency,
modularity and distribution, both within the design of the
operating system and those systems that it supports. Underlying
this book is the premise that distributed systems are now
commonplace and a reader is more likely to be using one than a
centralized time-sharing system. This modern approach therefore
avoids the focus on centralized systems, instead placing the
operating system within its context and providing an overview of
system components and their relationships.The book is divided into
four parts:
System Design, covering the basic operating system functions and
describing the abstraction and implementation of a system as a
community of (possibly distributed) concurrent processes.
Distributed systems are introduced and a chapter on system security
is included.
Concurrency Control in Main Memory, focusing on concurrency control
in operating systems and application-level systems and exploring
inter-process communication (IPC) in the context of (distributed)
system design.
Transactions, demonstrating the general applicability of concurrent
composite operations.
Case Studies, considering different systems in the light of the
perspective developed in the book: Classical UNIX; Linux, Solaris
and Contemporary Unix; Extensible Systems; Windows 2000; Web
Programming; Middleware; and Transaction Processing Systems.The
Java language has been used throughout to illustrate
object-oriented concepts, concurrent algorithms and distributed
programming and the book includes a chapter on system security. The
case studies, covering a full suite of professional operating
systems, enable the course to be taught as a blend of theory and
practice, so that on completion of the course a student is able to
adapt and build real operating systems that function within a
distributed environment.
Table of contents
- Copyright
- International Computer Science Series
- Preface
- System design requirements
-
System design: Technology and principles
-
System structure and dynamic execution
- System structure: Conceptual views
- System structure: Implementational views
- The process concept
- Operating system functions
- Operating system invocation and protection
- Operating system structure
- Object structuring within and supported by operating systems
- Distributed object systems, platforms and middleware
- Security and protection
- Summary
- The hardware interface, I/O and communications
-
Support for processes
- Terminology
- Use of processes in systems
- Processes and processors
- Process state
- Synchronizing with the hardware: Events and the WAIT operation
- The process data structure
- Scheduling: General approaches
- Scheduling for shared-memory multiprocessors
- Process scheduling to meet real-time requirements
- Process abstraction and implementation
- Operating system structure and placement of processes
- Multi-threaded process implementation
- Processes in languages, runtime systems and operating systems
- Process state in language systems and operating systems
- Sequential programs with system calls
- Evolution of concurrency in programming languages
- Implementation of processes in language systems
- Thread package architectures
- Java threads and exceptions
- Summary
- Memory management
- File management
- Fundamentals of distributed systems
- Security
-
System structure and dynamic execution
-
Concurrency control in main memory
- System structure
- Low-level synchronization: Implementation
-
Low-level synchronization: Algorithms
- Introduction
- An example of semaphores in system design: The THE system
- The producer–consumer, bounded buffer problem
- Safety and liveness properties
- The multiple readers, single writer problem
- Limitations of semaphores
- Eventcounts and sequencers
- POSIX threads
- Summary
- Case study with exercises: Management of a disk block cache
- IPC with shared memory
-
IPC and system structure
- Styles of inter-process communication
- System structure and IPC with shared memory
- System structure and IPC without shared memory
- Systems where shared-memory communication is appropriate
- Systems where shared-memory communication is not appropriate
- Examples from classical UNIX
- Overview of inter-process communication
- Duality of system structures
- Naming
- Summary
- IPC without shared memory
-
Crash resilience and persistent data
- Crashes
- A model of a crash
- Crash resilience or failure transparency
- Idempotent (repeatable) operations
- Atomic operations on persistent objects
- Implementation of atomic operations
- Non-volatile memory
- A single operation on persistent data
- Database management systems' requirements on operating systems
- Summary
-
Distributed IPC
- Introduction
- Special characteristics of distributed systems
- Distributed IPC: Message passing
- Integration of IPC with communications
- Java's sockets and streams
- Distributed programming paradigms
- Remote procedure call (RPC)
- RPC–language integration
- Java's RMI: RPC in the general object model
- Critique of synchronous invocation
- Naming, location and binding
- Summary of Part II
-
Transactions
- Composite operations
-
Resource allocation and deadlock
- Requirements for dynamic allocation
- Deadlock
- Livelock and starvation
- Conditions for deadlock to exist
- The dining philosophers problem
- Object allocation graphs
- Data structures and algorithms for deadlock detection
- Deadlock avoidance
- Information on releasing objects: Multiphase processes
- Distributed deadlocks
- Summary
-
Transactions
- Introduction
- Transaction specification and programming
- The definition of serializability and consistency
- The ACID properties of transactions
- Indicating specific orderings of transactions
- A system model for transaction processing
- Dependency graphs for transactions
- Histories and serialization graphs
- Dealing with aborts: More about the property of isolation
- Summary
- Concurrency control
-
Recovery
- Requirements for recovery
- The object model, object state and recovery
- Concurrency, crashes and the properties of transactions
- Logging and shadowing for crash resilience
- Use of a recovery log
- Idempotent undo and redo operations
- Transaction states on a failure
- An algorithm for recovery
- Location databases for mobile objects
- Summary
-
Distributed transactions
- An object model for distributed systems
- Distributed transaction processing
- Communication
- Concurrency control: Two-phase locking (2PL)
- Concurrency control: Time-stamp ordering (TSO)
- Optimistic concurrency control (OCC)
- Commit and abort in a distributed system
- Atomic commitment: The two-phase commit (2PC) protocol
- Two-phase validation for OCC
- Summary
- Distributed computations
- Case Studies
- Bibliography
- Glossary
Product information
- Title: Operating Systems: Concurrent and Distributed Software Design
- Author(s):
- Release date: March 2003
- Publisher(s): Pearson Business
- ISBN: 0321117891
You might also like
book
Operating System Design, 2nd Edition
Avoiding the typical black box approach found in other operating system textbooks, this bestselling book explains …
book
Unix™ Systems Programming: Communication, Concurrency, and Threads
UNIX Systems Programming: Communication, Concurrency, and Threads by Kay A. Robbins and Steven Robbins UNIX processes, …
book
Principles of Concurrent and Distributed Programming, Second Edition
The latest edition of a classic text on concurrency and distributed programming – from a winner …
book
Linux System Programming, 2nd Edition
Write software that draws directly on services offered by the Linux kernel and core system libraries. …