图书简介:
Chapter 1 Operating System Overview
1.1 Operating System Objectives and Functions
1.2 The Evolution of Operating Systems
1.3 Major Achievements
1.4 Developments Leading to Modern Operating Systems
1.5 Virtual Machines
1.6 OS Design Considerations for Multiprocessor and Multicore
1.7 Microsoft Windows Overview
1.8 Traditional UNIX Systems
1.9 Modern UNIX Systems
1.10 Linux
1.11 Linux VServer Virtual Machine Architecture
1.12 Recommended Reading and Web Sites
1.13 Key Terms, Review Questions, and Problems
Chapter 2 Process Description and Control
2.1 What Is a Process?
2.2 Process States
2.3 Process Description
2.4 Process Control
2.5 Execution of the Operating System
2.6 Security Issues
2.7 UNIX SVR4 Process Management
2.8 Summary
2.9 Recommended Reading
2.10 Key Terms, Review Questions, and Problems
Chapter 3 Threads
3.1 Processes and Threads
3.2 Types of Threads
3.3 Multicore and Multithreading
3.4 Windows 7 Thread and SMP Management
3.5 Solaris Thread and SMP Management
3.6 Linux Process and Thread Management
3.7 Mac OS X Grand Central Dispatch
3.8 Summary
3.9 Recommended Reading
3.10 Key Terms, Review Questions, and Problems
Chapter 4 Concurrency: Mutual Exclu- sion and Synchronization
4.1 Principles of Concurrency
4.2 Mutual Exclusion: Hardware Support
4.3 Semaphores
4.4 Monitors
4.5 Message Passing
4.6 Readers/Writers Problem
4.7 Summary
4.8 Recommended Reading
4.9 Key Terms, Review Questions, and Problems
Chapter 5 Concurrency: Deadlock and Starvation
5.1 Principles of Deadlock
5.2 Deadlock Prevention
5.3 Deadlock Avoidance
5.4 Deadlock Detection
5.5 An Integrated Deadlock Strategy
5.6 Dining Philosophers Problem
5.7 UNIX Concurrency Mechanisms
5.8 Linux Kernel Concurrency Mechanisms
5.9 Solaris Thread Synchronization Primitives
5.10 Windows 7 Concurrency Mechanisms
5.11 Summary
5.12 Recommended Reading
5.13 Key Terms, Review Questions, and Problems
Chapter 6 Memory Management
6.1 Memory Management Requirements
6.2 Memory Partitioning
6.3 Paging
6.4 Segmentation
6.5 Security Issues
6.6 Summary
6.7 Recommended Reading
6.8 Key Terms, Review Questions, and Problems
6A Loading and Linking
Chapter 7 Virtual Memory
7.1 Hardware and Control Structures
7.2 Operating System Software
7.3 UNIX and Solaris Memory Management
7.4 Linux Memory Management
7.5 Windows Memory Management
7.6 Summary
7.7 Recommended Reading and Web Sites
7.8 Key Terms, Review Questions, and Problems
Chapter 8 Uniprocessor Scheduling
8.1 Types of Processor Scheduling
8.2 Scheduling Algorithms
8.3 Traditional UNIX Scheduling
8.4 Summary
8.5 Recommended Reading
8.6 Key Terms, Review Questions, and Problems
Chapter 9 Multiprocessor and Real-Time Scheduling
9.1 Multiprocessor Scheduling
9.2 Real-Time Scheduling
9.3 Linux Scheduling
9.4 UNIX SVR4 Scheduling
9.5 UNIX FreeBSD Scheduling
9.6 Windows Scheduling
9.7 Linux Virtual Machine Process Scheduling
9.8 Summary
9.9 Recommended Reading
9.10 Key Terms, Review Questions, and Problems
Chapter 10 I/O Management and Disk Scheduling
10.1 I/O Devices
10.2 Organization of the I/O Function
10.3 Operating System Design Issues
10.4 I/O Buffering
10.5 Disk Scheduling
10.6 RAID
10.7 Disk Cache
10.8 UNIX SVR4 I/O
10.9 Linux I/O
10.10 Windows I/O
10.11 Summary
10.12 Recommended Reading
10.13 Key Terms, Review Questions, and Problems
Chapter 11 File Management
11.1 Overview
11.2 File Organization and Access
11.3 B-Trees
11.4 File Directories
11.5 File Sharing
11.6 Record Blocking
11.7 Secondary Storage Management
11.8 File System Security
11.9 UNIX File Management
11.10 Linux Virtual File System
11.11 Windows File System
11.12 Summary
11.13 Recommended Reading
11.14 Key Terms, Review Questions, and Problems
References
展开
PREFACE
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 characteristicsof 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 as well. 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, three operating systems have been chosen as running examples:
Windows 7: A multitasking operating system for personal computers, workstations, and servers. 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 version of Windows, known as Windows 7.
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.
INTENDED AUDIENCE
The book is intended for both an academic and a professional audience. As a textbook, it is intended as a one-semester undergraduate course in operating systems for computer science, computer engineering, and electrical engineering majors. It covers all of the core topics and most of the elective topics recommended in Computer Science Curriculum 2008 , from the Joint Task Force on Computing Curricula of the IEEE Computer Society and the ACM, for the Undergraduate Program in Computer Science. The book also covers the operating systems topics recommended in the Guidelines for Associate-Degree Curricula in Computer Science 2002 , also from the Joint Task Force on Computing Curricula of the IEEE Computer Society and the ACM. The book also serves as a basic reference volume and is suitable for self-study.
WHAT’S NEW IN THE SEVENTH EDITION
In the 3 years since the sixth 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 sixth 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. Also, a number of new “field-tested” homework problems have been added.
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 7: Windows 7 is Microsoft’s latest OS offering for PCs, workstations, and servers. The seventh edition provides details on Windows 7
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.
Multicore operating system issues: The seventh edition now includes coverage
of what has become the most prevalent new development in computer systems: the use of multiple processors on a single chip. At appropriate points
in the book, operating system issues related to the use of a multicore organization are explored.
Virtual machines: Chapter 1 now includes a section on virtual machines, which
outlines the various approaches that have been implemented commercially.
New scheduling examples: Chapter 9 now includes a discussion of the
FreeBSD scheduling algorithm, designed for use with multiprocessor and
multicore systems, and Linux VServer scheduling for a virtual machine
environment.
B-trees: This is a technique for organizing indexes into files and databases
that is commonly used in OS file systems, including those supported by Mac OS X, Windows, and several Linux file systems. B-trees are now covered
in Chapter 11.
Student study aids: Each chapter now begins with a list of learning objectives. In addition, a chapter-by-chapter set of review outlines highlights key concepts that the student should concentrate on in each chapter.
Sample syllabus: The text contains more material than can be conveniently covered in one semester. Accordingly, instructors are provided with several sample syllabi that guide the use of the text within limited time (e.g., 16 weeks or 12 weeks). These samples are based on real-world experience by professors with the sixth edition.
With each new edition, it is a struggle to maintain a reasonable page count while adding new material. In part, this objective is realized by eliminating obsolete material and tightening the narrative. For this edition, chapters and appendices that are of less general interest have been moved online, as individual PDF files. This has allowed an expansion of material without the corresponding increase in size and price.
INSTRUCTOR SUPPORT MATERIALS
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 button labeled “Book
Info and More Instructor Resources” at this book’s Companion Web site
WilliamStallings.com/OS/OS7e.html. 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.
To support instructors, the following materials are provided:
Solutions manual: Solutions to end-of-chapter Review Questions and
Problems.
Projects manual: Suggested project assignments for all of the project categories listed in the next section.
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.
Links to Web sites for other courses being taught using this book.
An Internet mailing list has been set up so that instructors using this book can exchange information, suggestions, and questions with each other and with
the author. As soon as typos or other errors are discovered, an errata list for
this book will be available at WilliamStallings.com. Sign-up information for
this Internet mailing list.
Computer science student resource list: A list of helpful links for computer
science students and professionals is provided at ComputerScienceStudent.com,
which provides documents, information, and useful links for computer science
students and professionals.
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.
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 support materials available through Pearson not only include 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.
Simulations for Students and Instructors
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 for Students and Instructors
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 2 , 4 , 5 , 6 , 7 , 8 , and 10 . For access to the animations, click on the rotating globe at this book’s Web site at WilliamStallings.com/OS/OS7e.html.
作者William Stallings拥有美国麻省理工学院计算机科学博士学位和圣母大学电子工程学士学位,现任教于澳大利亚新南威尔士大学国防学院信息技术与电子工程系。世界知名计算机学者和畅销教材作者,已经撰写了17部著作,出版了42本书籍,内容涉及计算机安全、计算机网络和计算机体系结构等方面,曾11呲荣获美国“教材和学术专著作者协会”颁发的“年度最佳计算机科学教材”奖。
展开