图书简介:
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 Processes
19.1 Probability 19-2
19.2 Random Variables 19-10
19.3 Elementary Concepts of Stochastic Processes 19-19
19.4 Recommended Reading and Web Sites 19-34
19.5 Key Terms, Review Questions, and Problems 19-35
Chapter 20 Queueing Analysis
20.1 How Queues Behave—A Simple Example 20-3
20.2 Why Queuing Analysis? 20-8
20.3 Queueing Models 20-12
20.4 Single-Server Queues 20-24
20.5 Multiserver Queues 20-28
20.6 Examples 20-30
20.7 Queues with Priorities 20-38
20.8 Networks of Queues 20-40
20.9 Other Queueing Models 20-46
20.10 Estimating Model Parameters 20-48
20.11 Recommended Reading and Web Sites 20-53
20.12 Key Terms, Review Questions, and Problems 20-54
Programming Project One Developing a Shell
Programming Project Two The HOST Dispatcher Shell
Appendix C Topics in Computer Organization C-1
Appendix D Object-Oriented Design D-1
Appendix E Amdahl’s Law E-1
Appendix F Hash Tables F-1
Appendix G Response Time G-1
Appendix H Queueing System Concepts H-1
Appendix I The Complexity of Algorithms I-1
Appendix J Disk Storage Devices J-1
Appendix K Cryptographic Algorithms K-1
Appendix L Standards Organizations L-1
Appendix M Sockets: A Programmer’s Introduction M-1
Appendix N The International Reference Alphabet N-1
Appendix O BACI: The Ben-Ari Concurrent Programming System O-1
Appendix P Procedure Control P-1
Appendix Q Ecos Q-1
Glossary
VideoNotes
Locations of VideoNotes
http://www.pearsonhighered.com/stallings
Chapter 5 Concurrency: Mutual Exclusion and Synchronization 199
5.1 Illustration of Mutual Exclusion 208
5.2 Hardware Support for Mutual Exclusion 212
5.3 A Definition of Semaphore Primitives 216
5.4 A Definition of Binary Semaphore Primitives 217
5.6 Mutual Exclusion Using Semaphores 219
5.9 An Incorrect Solution to the Infinite-Buffer Producer/Consumer Problem
Using Binary Semaphores 222
5.10 A Correct Solution to the Infinite-Buffer Producer/Consumer Problem
Using Binary Semaphores 224
5.11 A Solution to the Infinite-Buffer Producer/Consumer Problem
Using Semaphores 225
5.13 A Solution to the Bounded-Buffer Producer/Consumer Problem
Using Semaphores 226
5.14 Two Possible Implementations of Semaphores 227
5.16 A Solution to the Bounded-Buffer Producer/Consumer Problem
Using a Monitor 230
5.17 Bounded-Buffer Monitor Code for Mesa Monitor 232
5.20 Mutual Exclusion Using Messages 238
5.21 A Solution to the Bounded-Buffer Producer/Consumer Problem
Using Messages 239
5.22 A Solution to the Readers/Writers Problem Using Semaphores:
Readers Have Priority 241
5.23 A Solution to the Readers/Writers Problem Using Semaphores:
Writers Have Priority 243
5.24 A Solution to the Readers/Writers Problem Using Message Passing 244
5.25 An Application of Coroutines 248
Chapter 6 Concurrency: Deadlock and Starvation 259
6.9 Deadlock Avoidance Logic 276
6.12 A First Solution to the Dining Philosophers Problem 281
6.13 A Second Solution to the Dining Philosophers Problem 282
6.14 A Solution to the Dining Philosophers Problem Using a Monitor 283
6.18 Another Solution to the Dining Philosophers Problem Using a Monitor 307
Chapter 13 Embedded Operating Systems 571
13.6 Condition Variable Example Code 589
Chapter 18 Distributed Process Management
18.11 Token.Passing Algorithm (for Process Pi) 40
18.14 A Distributed Deadlock Detection Algorithm 50
Appednix A Topics in Concurrency A-1
A.1 Mutual Exclusion Attempts A-3
A.2 Dekker’s Algorithm A-6
A.3 Peterson’s Algorithm for Two Processes A-7
A.5 An Unfair Barbershop A-17
A.6 A Fair Barbershop A-20
展开
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 Microsoft’s 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 to tie them to real-world design choices that must be made, four operating systems have been chosen as running examples:
? Windows 8: A multitasking operating system for personal computers, workstations, servers, and mobile devices. This operating system incorporates many of the latest developments in operating system technology. In addition, Windows is one of the first important commercial operating systems to rely heavily on object-oriented design principles. This book covers the technology used in the most recent versions of Windows, known as Windows 8.
? Android: Android tailored for embedded devices, especially mobile phones. Focusing on the unique requirements of the embedded environment, the book provides details of Android internals.
? UNIX: A multiuser operating system, originally intended for minicomputers, but implemented on a wide range of machines from powerful microcomputers to supercomputers. Several flavors of UNIX are included as examples. FreeBSD is a widely used system that incorporates many state-of-the-art features. Solaris is a widely used commercial version of UNIX.
? Linux: An open-source version of UNIX that is now widely used. These systems were chosen because of their relevance and representativeness.
The discussion of the example systems is distributed throughout the text rather than assembled as a single chapter or appendix. Thus, during the discussion of concurrency, the concurrency mechanisms of each example system are described, and the motivation for the individual design choices is discussed. With this approach, the design concepts discussed in a given chapter are immediately reinforced with realworld examples. For convenience all of the material for each of the example systems is also available as an online document. Support of Acm/Ieee Computer Science Curricula 2013
The book is intended for both an academic and a professional audience. As a textbook, it is intended as a one-semester or two-semester undergraduate course in operating systems for computer science, computer engineering, and electrical engineering majors. This edition is designed to support the recommendations of the current (February 2013) draft version of the ACM/IEEE Computer Science Curricula 2013 (CS2013). The CS2013 curriculum recommendation includes Operating Systems (OSs) as one of the Knowledge Areas in the Computer Science Body of Knowledge. CS2013 divides all course work into three categories: Core-Tier 1 (all topics should be included in the curriculum), Core-Tier-2 (all or almost all topics should be included), and Elective (desirable to provide breadth and depth). In the OS area, CS2013 includes two Tier 1 topics, four Tier 2 topics, and 6 Elective topics, each of which has a number of subtopics. This text covers all of the topics and subtopics listed by CS2013 in these three categories.
Table P.1 shows the support for the OS Knowledge Area provided in this textbook.
A detailed list of subtopics for each topic is available as the file CS2013-OS.pdf at box.com/OS8e. Plan of the Text
The book is divided into five parts (see Chapter 0 for an overview):
? Background
? Processes
? Memory
? Scheduling
? Advanced topics (embedded OSs, virtual machines, OS security, and distributed systems)
The book includes a number of pedagogic features, including the use of animations and video notes and numerous figures and tables to clarify the discussion.
Each chapter includes a list of key words, review questions, homework problems, and suggestions for further reading. The book also includes an extensive glossary, a list of frequently used acronyms, and a bibliography. In addition, a test bank is available to instructors.
Table P.1 Coverage of CS2013 Operating Systems (OSs) Knowledge Area
Topic Coverage in Book
Overview of Operating Systems (Tier 1) Chapter 2: Operating System Overview
Operating System Principles (Tier 1) Chapter 1: Computer System Overview
Chapter 2: Operating System Overview
Concurrency (Tier 2) Chapter 5: Mutual Exclusion and Synchronization
Chapter 6: Deadlock and Starvation
Appendix A: Topics in Concurrency
Chapter 18: Distributed Process Management
Scheduling and Dispatch (Tier 2) Chapter 9: Uniprocessor Scheduling
Chapter 10: Multiprocessor and Real-Time
Scheduling
Memory Management (Tier 2) Chapter 7: Memory Management
Chapter 8: Virtual Memory
Security and Protection (Tier 2) Chapter 15: Operating System Security
Virtual Machines (Elective) Chapter 14: Virtual Machines
Device Management (Elective) Chapter 11: I/O Management and Disk Scheduling
File System (Elective) Chapter 12: File Management
Real Time and Embedded Systems (Elective) Chapter 10: Multiprocessor and Real-Time
Scheduling
Chapter 13: Embedded Operating Systems
Material on Android throughout the text
Fault Tolerance (Elective) Section 2.5: Fault Tolerance
System Performance Evaluation (Elective) Performance issues related to memory management, scheduling, and other areas addressed throughout the text Instructor Support Materials
The major goal of this text is to make it as effective a teaching tool for this fundamental yet evolving subject as possible. This goal is reflected both in the structure of the book and in the supporting material. The text is accompanied by the following supplementary material to aid the instructor:
? Solutions manual: Solutions to end-of-chapter Review Questions and Problems.
? Projects manual: Suggested project assignments for all of the project categories listed in this Preface.
? PowerPoint slides: A set of slides covering all chapters, suitable for use in lecturing.
? PDF files: Reproductions of all figures and tables from the book.
? Test bank: A chapter-by-chapter set of questions with a separate file of answers.
? VideoNotes on concurrency: Professors perennially cite concurrency as perhaps the most difficult concept in the field of operating systems for students to grasp. The edition is accompanied by a number of VideoNotes lectures discussing the various concurrency algorithms defined in the book.
? Sample syllabuses: The text contains more material than can be conveniently covered in one semester. Accordingly, instructors are provided with several sample syllabuses that guide the use of the text within limited time. These samples are based on real-world experience by professors with the seventh edition.
All of these support materials are available at the Instructor Resource Center (IRC) for this textbook, which can be reached through the publisher’s Web site www.pearsonhighered.com/stallings or by clicking on the link labeled Pearson Resources for Instructors at this book’s Companion Web site at WilliamStallings.
com/OperatingSystems. To gain access to the IRC, please contact your local Pearson sales representative via pearsonhighered.com/educator/replocator/requestSalesRep. page or call Pearson Faculty Services at 1-800-526-0485.
The Companion Web site, at WilliamStallings.com/OperatingSystems (click on Instructor Resources link), includes the following:
? Links to Web sites for other courses being taught using this book.
? Sign-up information for an Internet mailing list for instructors using this book to exchange information, suggestions, and questions with each other and with the author.
Projects and Other Student Exercises
For many instructors, an important component of an OS course is a project or set of projects by which the student gets hands-on experience to reinforce concepts from the text. This book provides an unparalleled degree of support for including a projects component in the course. In the online portion of the text, two major programming projects are defined. In addition, the instructor’s support materials available through Prentice Hall not only includes guidance on how to assign and structure the various projects but also includes a set of user’s manuals for various project types plus specific assignments, all written especially for this book. Instructors can assign work in the following areas:
? OS/161 projects: Described below.
? Simulation projects: Described below.
? Programming projects: Described below.
? Research projects: A series of research assignments that instruct the student to research a particular topic on the Internet and write a report.
? Reading/report assignments: A list of papers that can be assigned for reading and writing a report, plus suggested assignment wording.
? Writing assignments: A list of writing assignments to facilitate learning the material.
? Discussion topics: These topics can be used in a classroom, chat room, or message board environment to explore certain areas in greater depth and to foster student collaboration.
In addition, information is provided on a software package known as BACI that serves as a framework for studying concurrency mechanisms.
This diverse set of projects and other student exercises enables the instructor to use the book as one component in a rich and varied learning experience and to tailor a course plan to meet the specific needs of the instructor and students. See Appendix B in this book for details.
OS/161
This edition provides support for an active learning component based on OS/161.
OS/161 is an educational operating system that is becoming increasingly recognized as the preferred teaching platform for OS internals. It aims to strike a balance between giving students experience in working on a real operating system and potentially overwhelming students with the complexity that exists in a fully-fledged operating system, such as Linux. Compared to most deployed operating systems, OS/161 is quite small (approximately 20,000 lines of code and comments), and therefore it is much easier to develop an understanding of the entire code base.
The IRC includes:
1. A packaged set of html files that the instructor can upload to a course server for student access.
2. A getting-started manual to be handed out to students to help them begin using OS/161.
3. A set of exercises using OS/161, to be handed out to students.
4. Model solutions to each exercise for the instructor’s use.
5. All of this will be cross-referenced with appropriate sections in the book, so that the student can read the textbook material and then do the corresponding OS/161 project. Simulations
The IRC provides support for assigning projects based on a set of seven simulations that cover key areas of OS design. The student can use a set of simulation packages to analyze OS design features. The simulators are all written in Java and can be run either locally as a Java application or online through a browser. The IRC includes specific assignments to give to students, telling them specifically what they are to do and what results are expected.
Animations
This edition also incorporates animations. Animations provide a powerful tool for understanding the complex mechanisms of a modern OS. A total of 53 animations are used to illustrate key functions and algorithms in OS design. The animations are used for Chapters 3, 5, 6, 7, 8, 9, and 11. The animations are available at the Premium Web site for this book.
Programming Projects
This edition provides support for programming projects. Two major programming projects, one to build a shell, or command line interpreter, and one to build a process dispatcher are described in the online portion of this textbook. The IRC provides further information and step-by-step exercises for developing the programs. As an alternative, the instructor can assign a more extensive series of projects that cover many of the principles in the book. The student is provided with detailed instructions for doing each of the projects. In addition, there is a set of homework problems, which involve questions related to each project for the student to answer.
Finally, the project manual provided at the IRC includes a series of programming projects that cover a broad range of topics and that can be implemented in any suitable language on any platform. Online Documents, ANIMATIONS, AND Videonotes for Students
For this new edition, a substantial amount of original supporting material for students has been made available online, at two Web locations. The Companion Web site, at WilliamStallings.com/ OperatingSystems (click on Student Resources link), includes a list of relevant links organized by chapter and an errata sheet for the book.
Purchasing this textbook new also grants the reader six months of access to the Premium Content site, which includes the following materials:
? Online chapters: To limit the size and cost of the book, two chapters of the book, covering security, are provided in PDF format. The chapters are listed in this book’s table of contents.
? Online appendices: There are numerous interesting topics that support material found in the text but whose inclusion is not warranted in the printed text. A total of 18 online appendices cover these topics for the interested student. The appendices are listed in this book’s table of contents.
? Homework problems and solutions: To aid the student in understanding the material, a separate set of homework problems with solutions is available.
? Animations: Animations provide a powerful tool for understanding the complex mechanisms of a modern OS. A total of 53 animations are used to illustrate key functions and algorithms in OS design. The animations are used for Chapters 3, 5, 6, 7, 8, 9, and 11.
? Videonotes: VideoNotes are step-by-step video tutorials specifically designed to enhance the programming concepts presented in this textbook. The book is accompanied by a number of VideoNotes lectures discussing the various concurrency algorithms defined in the book.
To access the Premium Content site, click on the Premium Content link at the Companion Web site or at pearsonhighered.com/stallings and enter the student access code found on the card in the front of the book.
Acknowledgments
Through its multiple editions, this book has benefited from review by hundreds of instructors and professionals, who gave generously of their time and expertise. Here I acknowledge those whose help contributed to this latest edition. The following instructors reviewed all or a large part of the manuscript: Bernard Ku (Austin Community College, Northridge), Hemant Pendharker (Worcester State University), Nancy Birkenheuer (Regis University, Denver), Greg Ozbirn (University of Texas, Dallas). Thanks also to the people who provided detailed reviews of the example systems. Reviews of the Android material were provided by Kristopher Micinski, Ron Munitz, Atte Peltomaki, Durgadoss Ramanathan, Manish Shakya, Samuel Simon, Wei Wang, and Chen Yang. The Linux reviewers were Tigran Aivazian, Kaiwan Billimoria, Peter Huewe, Manmohan Manoharan, Rami Rosen, Neha Naik, and Hualing Yu. The Windows material was reviewed by Francisco Cotrina, Sam Haidar, Christopher Kuleci, Benny Olsson, and Dave Probert. Nick Garnett of eCosCentric, for the review of the material on eCos, and Philip Levis, one of the developers of TinyOS, for the review of the material on TinyOS. Andrew Peterson of the University of Toronto prepared the OS/161 supplements for the IRC. James Craig Burley authored and recorded the VideoNotes. Adam Critchley (University of Texas at San Antonio) developed the simulation exercises. Matt Sparks (University of Illinois at Urbana-Champaign) adapted a set of programming problems for use with this textbook. Lawrie Brown of the Australian Defence Force Academy produced the material on buffer overflow attacks. Ching-Kuang Shene (Michigan Tech University) provided the examples used in the section on race conditions and reviewed the section. Tracy Camp and Keith Hellman, both at the Colorado School of Mines, developed a new set of homework problems. In addition, Fernando Ariel Gont contributed a number of homework problems; he also provided detailed reviews of all of the chapters.
I would also like to thank Bill Bynum (College of William and Mary) and Tracy Camp (Colorado School of Mines) for contributing Appendix O; Steve Taylor (Worcester Polytechnic Institute) for contributing the programming projects and reading/report assignments in the instructor’s manual; and Professor Tan N. Nguyen (George Mason University) for contributing the research projects in the instruction manual. Ian G. Graham (Griffith University) contributed the two programming projects in the textbook. Oskars Rieksts (Kutztown University) generously allowed me to make use of his lecture notes, quizzes, and projects.
Finally, I thank the many people responsible for the publication of this book, all of whom did their usual excellent job. This includes the staff at Pearson, particularly my editor Tracy Johnson, her assistant Jenah Blitz-Stoehr, program manager Carole Snyder, and project manager Bob Engelhardt. I also thank Shiny Rajesh and the production staff at Integra for another excellent and rapid job. Thanks also to the marketing and sales staffs at Pearson, without whose efforts this book would not be in front of you.
展开