操作系统:并发与分布式软件设计

操作系统:并发与分布式软件设计
作 者: Jean Bacon
出版社: 电子工业出版社
丛编项: 国外计算机科学教材系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《操作系统:并发与分布式软件设计》作者简介

内容简介

本书是一本用新的观念讲述操作系统原理和设计的高级教程。全书围绕着并发和分布式概念组织章节,避免仅仅将注意力置于传统的集中式系统,反映了分布式系统在当代已经被广泛应用的现实,从而更能为读者所接受。全书共有30章,分为四个部分,第一部分和第二部分主要阐述了操作系统核心概念和基本功能,并介绍了操作系统理论和实践的最新进展。第三部分和第四部分将操作系统和数据库,以及分布式系统的设计结合起来,对UNIX,Linux,Windows 2000/NT和JVM等典型现代操作系统进行了具体分析,并讨论了Web服务,中间件和事务处理等应用。对于操作系统安全这样一个重要课题,书中还专门安排了一章进行论述。本书的另一个特点是,所有的代码示例均结合Java语言进行,并采用Java描述面向对象的概念、并发算法和分布式程序设计等。本书适合作为研究生的操作系统课程教材,也适合程序员、软件工程师以及系统设计者作为学习和了解系统软件和操作系统的参考书。

图书目录

1 System design requirements

1.1 Inherently concurrent systems

1.2 Supporting potentially concurrent applications

1.3 Architectures for software systems

1.4 Defining a concurrent system

1.5 Systems implementation requirements

1,6 Security, protection and fault tolerance in system design

Exercises

PART I SYSTEM DESIGN: TECHNOLOGY AND

PRINCIPLES

2 System structure and dynamic execution

2.1 System structure: Conceptual views

2.2 System structure: Implementational views

2.3 The process concept

2.4 Operating system functions

2.5 Operating system invocation and protection-

2.6 Operating system structure

2.7 Object structuring within and supported by operating systems

2.8 Distributed object systems, platforms and middleware

2.9 Security and protection

2.10 Summary

Study questions and exercises

3 The hardware interface, I/O and

communications

3.1 Overview

3.2 Device interfacing

3.3 Exceptions

3.4 Multiprocessors

3.5 User-level input and output

3.6 Communications management

3.7 Communications networks, interfaces and drivers

3.8 Communications software

3.9 Communications handling within and above an

operating system

3.10 Summary

Exercises

4 Support for processes

4.1 Use of processes in systems

4.2 Processes and processors

4.3 Process state

4.4 Synchronizing with the hardware: Events and the WAIT

operation

4.5 The process data structure

4.6 Scheduling: General approaches

4.7 Scheduling for shared-memory multiprocessors

4.8 Process scheduling to meet real-time requirements

4.9 Process abstraction and implementation

4.10 Operating system structure and placement of processes

4.11 Multi-threaded process implementation

4.12 Processes in languages, runtime systems and

operating systems

4.13 Process state in language systems and operating systems

4.14 Sequential programs with system calls

4.15 Evolution of concurrency in programming languages

4.16 Implementation of processes in language systems

4.17 Thread package architectures

4.18 Java threads and exceptions

4.19 Summary

Study questions and exercises

5 Memory management

5.1 Memory management

5.2 The memory hierarchy

5.3 The address space of a process

5.4 Segmented virtual memory

5.5 Paged virtual memory

5.6 Combining segmentation and paging

5.7 Operating system data structures

5.8 An example of a memory management unit (MMU)

5.9 Memory management in system design

5.10 Summary

Exercises

6 File management

6.1 File management

6.2 An overview of filing system functions

6.3 File and directory structure

6.4 The filing system interface

6.5 The filing system implementation

6.6 Modern file system design

6.7 Network-based file servers

6.8 Integrating virtual memory and storage

6.9 Summary

Exercises

7 Fundamentals of distributed systems

7.1 Introduction

7.2 Evolution of distributed systems for the workplace

7.3 Personal computing

7.4 Model and software architecture

7.5 Special characteristics of distributed systems

7.6 Time in distributed systems

7.7 Naming

7.8 Mobile users, computers and objects

7.9 Summary

Exercises

8 Security

8.1 Scenarios and security requirements

8.2 Threats and risk analysis

8.3 Approaches to encryption

8.4 Algorithms

8.5 Protocols

8.6 Examples

8.7 Summary

Exercises

PART II CONCURRENCY CONTROL IN

MAIN MEMORY

9 System structure

9.1 Processes sharing an address space

9.2 Processes in separate address spaces

9.3 Sharing the operating system

9.4 Summary of process placement in the two models

9.5 Requirements for process interaction

9.6 Types of process interaction

9.7 A process interaction

9.8 Definition of single concurrent actions

Study questions and exercises

10 Low-level synchronization: Implementation

10.1 Process synchronization compared with event signal and wait

10.2 Mutual exclusion

10.3 Hardware support for mutual exclusion

10.4 Semaphores

10.5 Styles of use of semaphores

10.6 Implementation of semaphore operations

10.7 Summary

Study questions and exercises

11 Low-level synchronization: Algorithms

11.1 Introduction

11.2 An example of semaphores in system design: The THE system

11.3 The producer-consumer, bounded buffer Droblem

11.4 Safety and liveness properties

11.5 The multiple readers, single writer problem

11.6 Limitations of semaphores

11.7 Eventcounts and sequencers

11.8 POSIXthreads

11.9 Summary

11.10 Case study with exercises: Management of a disk block cache

12 IPC with shared memory

12.1 Critical regions in programming languages

12.2 Monitors

12.3 Synchronization at the granularity of operations

12.4 Summary

Study questions and exercises

13 IPC and system structure

13.1 Styles of inter-process communication

13.2 System structure and IPC with shared memory

13.3 System structure and IPC without shared memory

13.4 Systems where shared-memory communication is appropriate

13.5 Systems where shared-memory communication is

not appropriate

13.6 Examples from classical UNIX

13.7 Overview of inter-process communication

13.8 Duality of system structures

13.9 Naming

13.10 Summary

Study questions and exercises

14 IPC without shared memory

14.1 Introduction

14.2 Use of files for common data

14.3 UNIX pipes

14.4 Asynchronous message passing

14.5 Variations on basic message passing

14.6 Implementation of asynchronous message passing

14.7 Synchronous message passing

14.8 Message passing in programming languages

14.9 Multi-threading in clients and servers

14.10 Summary

Study questions and exercises

15 Crash resilience and persistent data

15.1 Crashes

15.2 A model of acrash

15.3 Crash resilience or failure transparency

15.4 Idempotent (repeatable) operations

15.5 Atomic operations on persistent objects

15.6 Implementation of atomic operations

15.7 Non-volatile memory

15.8 A single operation on persistent data

15.9 Database management systems' requirements on

operating systems

15.10 Summary

Study questions and exercises

16 Distributed IPC

16.1 Introduction

16.2 Special characteristics of distributed systems

16.3 Distributed IPC: Message passing

16.4 Integration of IPC with communications

16.5 Java's sockets and streams

16.6 Distributed programming paradigms

16.7 Remote procedure call (RPC)

16.8 RPC-language integration

16.9 Java's RMI: RPc in the general object model

16.10 Critique of synchronous invocation

16.11 Naming, location and binding

16.12 Summary of Part II

Study questions and exercises

PART III TRANSACTIONS

17 Composite operations

17.1 Composite operations

17.2 Composite operations in main memory

17.3 Composite operations involving main memory and

persistent memory

17.4 Concurrent execution of composite operations

17.5 Potential problems

17.6 Crashes

17.7 Summary

Study questions and exercises

18 Resource allocation and deadlock

18.1 Requirements for dynamic allocation

18.2 Deadlock

18.3 Livelock and starvation

18.4 Conditions for deadlockto exist

18.6 The dining philosophers problem

18.6 Object allocation graphs

18.7 Data structures and algorithms for deadlock detection

18.8 Deadlock avoidance

18.9 Information on releasing objects: Multiphase processes

18.10 Distributed deadlocks

18.11 Summary

Study questions and exercises

19 Transactions

19.1 Introduction

19.2 Transaction specification and programming

19.3 The definition of serializability and consistency

19.4 The ACID properties of transactions

19.6 Indicating specific orderings of transactions

19.6 A system model for transaction processing

19.7 Dependency graphs for transactions

19.8 Histories and serialization graphs

19.9 Dealing with aborts: More about the property of isolation

19.10 Summary

Study questions and exercises

20 Concurrency control

20.1 Introduction

20.2 Concurrent composite operations in main memory only

20.3 Structure of transaction management systems

20.4 Concurrency control through locking

20.5 Time-stamp ordering (TSO)

20.6 Optimistic concurrency control (OCC)

20.7 Summary

Study questions and exercises

21 Recovery

21.1 Requirements for recovery

21.2 The object model, object state and recovery

21.3 Concurrency, crashes and the properties of transactions

21.4 Logging and shadowing for crash resilience

21.5 Use of a recovery log

21.6 Idempotent undo and redo operations

21.7 Transaction states on a failure

21.8 An algorithm for recovery

21.9 Location databases for mobile objects

21.10 Summary

Exercises

22 Distributed transactions

22.1 An object model for distributed systems

22.2 Distributed transaction processing

22.3 Communication

22.4 Concurrency control:Two-phase locking (2PL)

22.5 Concurrency control: Time-stamp ordering (TSO)

22.6 Optimistic concurrency control (OCC)

22.7 Commit and abort in a distributed system

22.8 Atomic commitment: The two-phase commit (2PC) protocol

22.9 Two-phase validation for OCC

22.10 Summary

Study questions and exercises

23 Distributed computations

23.1 Introduction

23.2 Process groups

23.3 Consistency of data replicas

23.4 Ordering message delivery

23.5 Distributed, N-process mutual exclusion

23.6 Summary of Part III

Exercises

PART IV CASE STUDIES

24 Classical UNIX

24.1 Introduction

24.2 Evolution of UNIX

24.3 System structure and the UNIX kernel

24.4 File system interfaces

24.5 File system implementation

24.6 Process creation, termination and scheduling

24.7 IPC: Pipes and signals

24.8 Summary

Exercises

25 LINUX, Solaris and contemporary UNIX

25.1 Introduction

25.2 Kernel structure

25.3 SVr41PC

25.4 Sockets and file subsystem integrated IPC

25.5 Memory management

25.6 Multiprocessor scheduling

25.7 Summary

Exercises

26 Extensible systems

26.1 Mechanisms for extensibility

26.2 Compile-time specialization

26.3 Microkernel operating systems

26.4 Downloadable code

26.5 Exokernels and vertical structuring

26.6 Nested virtual machines

26.7 Extensible virtual machines

26.8 Summary

Exercises

27 Windows 2000

27.1 Introduction to Windows 2000

27.2 System structure

27.3 The object model and object manager

27.4 The kernel

27.5 Processes, threads, fibres and concurrency control

27.6 The I/O subsystem

27.7 The NTfiling system, NTFS

27.8 Networking

27.9 Summary

Exercises

2.8 The World Wide Web

28.1 A simple web-client, web-server interaction

28.2 Naming web pages

28.3 Communication using HTTP

28.4 Document representation

28.5 Executing programs at server and client

28.6 Security

28.7 Concurrency control

28.8 Scalability issues

28.9 Web-based middleware: XML and SOAP

28.10 Summary

Exercises

29 Middleware

29.1 Middleware paradigms

29.2 Java middleware

29.3 OMG and OMA

29.4 CORBA

29.50DMG

29.6 COM, DCOM and .NET

29.7 Message-oriented middleware (MOM)

29.8 Summary

Exercises

30 Transaction processing monitors and systems

30.1 Transaction processing monitors

30.2 Introduction to some electronic funds transfer (EFT) applications

30.3 International inter-bank payments: SWIFT

30.4 Authentication by PIN

30.5 The international automatic teller machine (ATM) network service

30.6 Load and traffic in TP systems

30.7 Summary and trends

Exercises

Appendix: Evolution of computer systems

A. 1 Evolution and exploitation of technology

A.2 Operating systems and distributed operating systems

A.3 Databases

A.4 Concurrency control

Bibliography

Glossary

Author index

Subject index