本書既是關于操作系統概念、結構和機制的教材,目的是盡可能清楚和全面地展示現代操作系統的本質和特點;也是講解操作系統的經典教材,不僅系統地講述了操作系統的基本概念、原理和方法,而且以當代*流行的操作系統Windows 8、UNIX、Android、Linux為例,展現了當代操作系統的本質和特點。全書共分背景知識、進程、內存、調度、輸入/輸出和文件、嵌入式系統六部分,內容包括計算機系統概述、操作系統概述、進程描述和控制、線程、并發性:互斥和同步、并發:死鎖和饑餓、內存管理、虛擬內存、單處理器調度、多處理器和實時調度、I/O管理和磁盤調度、文件管理、嵌入式操作系統、虛擬機、計算機安全技術、分布式處理、客戶/服務器和集群等。此外,本書配套網站提供了及時、生動的材料。
?Windows 8:詳細介紹了Windows 8內核的各種關鍵技術。
?Android操作系統:詳細介紹了Android移動平臺的限制和運行環境。
?嵌入式Linux:詳細介紹了嵌入式Linux的關鍵要素。
?虛擬機:新增了虛擬機操作系統設計問題的一章。
?多核設計問題:增加了關于操作系統設計問題的討論。
?I/O標準化:更新了相應的接口內容。
?存儲硬件:更新了存儲硬件部分,包含了固態硬盤驅動器。
?容錯:新增了介紹容錯機制的一節。
Preface
Since the seventh edition of this book was
published, the field has seen continued innovations and improvements. In this
new edition, I try to capture these changes while maintaining a broad and
comprehensive coverage of the entire field. To begin the process of revision,
the seventh edition of this book was extensively reviewed by a number of
professors who teach the subject and by professionals working in the field. The
result is that, in many places, the narrative has been clarified and tightened,
and illustrations have been improved.
Beyond these refinements to improve
pedagogy and user friendliness, the technical content of the book has been
updated throughout, to reflect the ongoing changes in this exciting field, and
the instructor and student support has been expanded. The most noteworthy
changes are as follows:
? Windows 8: Windows 8 is Microsofts
latest OS offering for PCs, workstations, and servers, which includes a number
of changes to the internal architecture.
The new edition provides details on Windows
8 internals in all of the key technology areas covered in this book, including
process/thread management, scheduling, memory management, security, file
systems, and I/O.
? Android operating system: Android is the
fastest growing mobile platform. The real-world constraints and operating
environment of mobile devices are quite different from traditional desktop or
server computers. It is important for students to learn this new environment.
? Embedded Linux: The use of a minimal
version of Linux for embedded systems has grown in popularity. This new edition
provides an overview of the key elements of the embedded Linux approach.
? Virtual machines: Server virtualization
and other forms of virtual machines are becoming increasingly widespread. A new
chapter deals with the operating system design issues for virtual machines.
? Multicore design issues: The dominant
computer architecture is now multicore. This raises new OS design issues that
are addressed in this new edition.
? I/O standards: The book has been updated
to reflect the latest developments, including Thunderbolt.
? Storage hardware: The discussion of
storage hardware has been updated and now includes discussion of solid-state
drives.
? Fault tolerance: The ACM/IEEE Computer
Science Curricula 2013 lists fault tolerance as one of the core topics for an
OS course. A new section provides an overview of fault tolerance. Objectives
This book is about the concepts, structure,
and mechanisms of operating systems. Its purpose is to present, as clearly and
completely as possible, the nature and characteristics of modern-day operating
systems.
This task is challenging for several
reasons. First, there is a tremendous range and variety of computer systems for
which operating systems are designed. These include embedded systems, smart
phones, single-user workstations and personal computers, medium-sized shared
systems, large mainframe and supercomputers, and specialized machines such as
real-time systems. The variety is not just in the capacity and speed of
machines, but in applications and system support requirements.
Second, the rapid pace of change that has
always characterized computer systems continues with no letup. A number of key
areas in operating system design are of recent origin, and research into these
and other new areas continues.
In spite of this variety and pace of
change, certain fundamental concepts apply consistently throughout. To be sure,
the application of these concepts depends on the current state of technology
and the particular application requirements. The intent of this book is to
provide a thorough discussion of the fundamentals of operating system design
and to relate these to contemporary design issues and to current directions in
the development of operating systems. Example Systems
This text is intended to acquaint the
reader with the design principles and implementation issues of contemporary
operating systems. Accordingly, a purely conceptual or theoretical treatment
would be inadequate. To illustrate the concepts and
William Stallings:美國圣母大學電子工程學士,麻省理工學院計算機科學博士,《密碼術》期刊編委。美國多家高科技公司執行總監,政府機構、計算機軟/硬件供應商顧問;曾為各種計算機和操作系統設計并實現TCP/IP和OSI協議套件;創建并維護了計算機科學專業學生資源網站ComputerScienceStudent.com。出版圖書17種,內容涉及計算機安全、計算機網絡和計算機系統結構等;在《IEEE進展》《ACM計算評論》和《密碼術》等雜志上發表文章多篇;先后12次獲美國年度*計算機科學教科書獎和學術作者協會獎。
Online Resources
VideoNotes
Preface
About the Author
Chapter 0 Guide for Readers and Instructors 1
0.1 Outline of this Book 2
0.2 Example Systems 2
0.3 A Roadmap for Readers and Instructors 3
0.4 Internet and Web Resources 4
Part 1 Background 7
Chapter 1 Computer System Overview 7
1.1 Basic Elements 8
1.2 Evolution of the Microprocessor 10
1.3 Instruction Execution 10
1.4 Interrupts 13
1.5 The Memory Hierarchy 24
1.6 Cache Memory 27
1.7 Direct Memory Access 31
1.8 Multiprocessor and Multicore Organization 32
1.9 Recommended Reading 36
1.10 Key Terms, Review Questions, and Problems 36
1A Performance Characteristics of Two-Level Memories 39
Chapter 2 Operating System Overview 46
2.1 Operating System Objectives and Functions 47
2.2 The Evolution of Operating Systems 52
2.3 Major Achievements 61
2.4 Developments Leading to Modern Operating Systems 70
2.5 Fault Tolerance 73
2.6 OS Design Considerations for Multiprocessor and Multicore 76
2.7 Microsoft Windows Overview 79
2.8 Traditional UNIX Systems 86
2.9 Modern UNIX Systems 89
2.10 Linux 91
2.11 Android 96
2.12 Recommended Reading and Animations 102
2.13 Key Terms, Review Questions, and Problems 103
Part 2 Processes 105
Chapter 3 Process Description and Control 105
3.1 What Is a Process? 107
3.2 Process States 109
3.3 Process Description 124
3.4 Process Control 133
3.5 Execution of the Operating System 139
3.6 UNIX SVR4 Process Management 142
3.7 Summary 147
3.8 Recommended Reading and Animations 147
3.9 Key Terms, Review Questions, and Problems 148
Chapter 4 Threads 152
4.1 Processes and Threads 153
4.2 Types of Threads 159
4.3 Multicore and Multithreading 166
4.4 Windows 8 Process and Thread Management 171
4.5 Solaris Thread and SMP Management 178
4.6 Linux Process and Thread Management 182
4.7 Android Process and Thread Management 186
4.8 Mac OS X Grand Central Dispatch 190
4.9 Summary 193
4.10 Recommended Reading 193
4.11 Key Terms, Review Questions, and Problems 194
Chapter 5 Concurrency: Mutual Exclusion and Synchronization 199
5.1 Principles of Concurrency 202
5.2 Mutual Exclusion: Hardware Support 210
5.3 Semaphores 214
5.4 Monitors 227
5.5 Message Passing 233
5.6 Readers/Writers Problem 240
5.7 Summary 244
5.8 Recommended Reading and Animations 245
5.9 Key Terms, Review Questions, and Problems 246
Chapter 6 Concurrency: Deadlock and Starvation 259
6.1 Principles of Deadlock 260
6.2 Deadlock Prevention 269
6.3 Deadlock Avoidance 271
6.4 Deadlock Detection 277
6.5 An Integrated Deadlock Strategy 279
6.6 Dining Philosophers Problem 280
6.7 UNIX Concurrency Mechanisms 282
6.8 Linux Kernel Concurrency Mechanisms 286
6.9 Solaris Thread Synchronization Primitives 293
6.10 Windows 7 Concurrency Mechanisms 295
6.11 Android Interprocess Communication 299
6.12 Summary 300
6.13 Recommended Reading and Animations 301
6.14 Key Terms, Review Questions, and Problems 302
Part 3 Memory 309
Chapter 7 Memory Management 309
7.1 Memory Management Requirements 310
7.2 Memory Partitioning 314
7.3 Paging 325
7.4 Segmentation 328
7.5 Summary 330
7.6 Recommended Reading and Animations 330
7.7 Key Terms, Review Questions, and Problems 330
7A Loading and Linking 333
Chapter 8 Virtual Memory 340
8.1 Hardware and Control Structures 341
8.2 Operating System Software 358
8.3 UNIX and Solaris Memory Management 377
8.4 Linux Memory Management 383
8.5 Windows Memory Management 386
8.6 Android Memory Management 389
8.7 Summary 389
8.8 Recommended Reading and Animations 390
8.9 Key Terms, Review Questions, and Problems 391
Part 4 Scheduling 397
Chapter 9 Uniprocessor Scheduling 397
9.1 Types of Processor Scheduling 398
9.2 Scheduling Algorithms 402
9.3 Traditional UNIX Scheduling 424
9.4 Summary 426
9.5 Recommended Reading and Animations 427
9.6 Key Terms, Review Questions, and Problems 428
Chapter 10 Multiprocessor, Multicore, and Real-Time Scheduling 432
10.1 Multiprocessor and Multicore Scheduling 433
10.2 Real-Time Scheduling 446
10.3 Linux Scheduling 461
10.4 UNIX SVR4 Scheduling 465
10.5 UNIX FreeBSD Scheduling 466
10.6 Windows Scheduling 470
10.7 Summary 472
10.8 Recommended Reading 473
10.9 Key Terms, Review Questions, and Problems 473
Part 5 Input/Output and Files 477
Chapter 11 I/O Management and Disk Scheduling 477
11.1 I/O Devices 478
11.2 Organization of the I/O Function 480
11.3 Operating System Design Issues 483
11.4 I/O Buffering 486
11.5 Disk Scheduling 489
11.6 RAID 496
11.7 Disk Cache 505
11.8 UNIX SVR4 I/O 509
11.9 Linux I/O 512
11.10 Windows I/O 515
11.11 Summary 517
11.12 Recommended Reading and Animations 518
11.13 Key Terms, Review Questions, and Problems 519
Chapter 12 File Management 522
12.1 Overview 523
12.2 File Organization and Access 529
12.3 B-Trees 533
12.4 File Directories 536
12.5 File Sharing 541
12.6 Record Blocking 542
12.7 Secondary Storage Management 544
12.8 UNIX File Management 552
12.9 Linux Virtual File System 557
12.10 Windows File System 561
12.11 Android File Management 566
12.12 Summary 567
12.13 Recommended Reading 568
12.14 Key Terms, Review Questions, and Problems 568
Part 6 Embedded Systems 571
Chapter 13 Embedded Operating Systems 571
13.1 Embedded Systems 572
13.2 Characteristics of Embedded Operating Systems 573
13.3 Embedded Linux 576
13.4 TinyOS 577
13.5 Recommended Reading 587
13.6 Key Terms, Review Questions, and Problems 587
Chapter 14 Virtual Machines 590
14.1 Approaches to Virtualization 593
14.2 Processor Issues 596
14.3 Memory Management 598
14.4 I/O Management 600
14.5 VMware ESXi 602
14.6 Microsoft Hyper-V and Xen Variants 604
14.7 Java VM 606
14.8 Linux VServer Virtual Machine Architecture 606
14.9 Android Virtual Machine 609
14.10 Summary 611
14.11 Recommended Reading 612
14.12 Key Terms, Review Questions, and Problems 613
Chapter 15 Operating System Security 614
15.1 Intruders and Malicious Software 615
15.2 Buffer Overflow 619
15.3 Access Control 627
15.4 UNIX Access Control 635
15.5 Operating Systems Hardening 638
15.6 Security Maintenance 642
15.7 Windows Security 643
15.8 Summary 648
15.9 Recommended Reading 649
15.10 Key Terms, Review Questions, and Problems 649
Chapter 16 Distributed Processing, Client/Server, and Clusters 652
16.1 Client/Server Computing 653
16.2 Distributed Message Passing 664
16.3 Remote Procedure Calls 667
16.4 Clusters 671
16.5 Windows Cluster Server 676
16.6 Beowulf and Linux Clusters 678
16.7 Summary 680
16.8 Recommended Reading 681
16.9 Key Terms, Review Questions, and Problems 682
Appendices
Appendix A Topics in Concurrency A-1
Appendix B Programming and Operating System Projects B-1
References 685
Credits 699
Online Chapters and Appendices1
Chapter 17 Network Protocols
17.1 The Need for a Protocol Architecture 17-4
17.2 The TCP/IP Protocol Architecture 17-9
17.3 Sockets 17-19
17.4 Linux Networking 17-26
17.5 Summary 17-29
17.6 Recommended Reading and Web Sites 17-30
17.7 Key Terms, Review Questions, and Problems 17-31
17A The Trivial File Transfer Protocol 17-42
Chapter 18 Distributed Process Management
18.1 Process Migration 18-2
18.2 Distributed Global States 18-14
18.3 Distributed Mutual Exclusion 18-22
18.4 Distributed Deadlock 18-41
18.5 Summary 18-59
18.6 Recommended Reading 18-60
18.7 Key Terms, Review Questions, and Problems 18-61
Chapter 19 Overview of Probability and Stochastic P