William Stallings:美国圣母大学电子工程学士,麻省理工学院计算机科学博士,《密码术》期刊编委。美国多家高科技公司执行总监,政府机构、计算机软硬件供应商顾问;曾为各种计算机和操作系统设计并实现TCPIP和OSI协议套件;创建并维护了计算机科学专业学生资源网站ComputerScienceStudent.com。出版图书17种,内容涉及计算机安全、计算机网络和计算机系统结构等;在《IEEE进展》《ACM计算评论》和《密码术》等杂志上发表文章多篇;先后12次获美国年度*计算机科学教科书奖和学术作者协会奖。
William Stallings:美国圣母大学电子工程学士,麻省理工学院计算机科学博士,《密码术》期刊编委。美国多家高科技公司执行总监,政府机构、计算机软硬件供应商顾问;曾为各种计算机和操作系统设计并实现TCPIP和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 ReadersWriters 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 InputOutput and Files 477
Chapter 11 IO Management and Disk Scheduling 477
11.1 IO Devices 478
11.2 Organization of the IO Function 480
11.3 Operating System Design Issues 483
11.4 IO Buffering 486
11.5 Disk Scheduling 489
11.6 RAID 496
11.7 Disk Cache 505
11.8 UNIX SVR4 IO 509
11.9 Linux IO 512
11.10 Windows IO 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 IO 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, ClientServer, and Clusters 652
16.1 ClientServer 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 TCPIP 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
內容試閱:
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 processthread management, scheduling, memory management, security, file systems, and IO.
? 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.
? IO 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 ACMIEEE 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