Intended for use in a one- or two-semester undergraduate course in operating systems for computer science, computer engineering, and electrical engineering majors
Operating Systems: Internals and Design Principles provides a comprehensive and unified introduction to operating systems topics. Stallings emphasizes both design issues and fundamental principles in contemporary systems and gives readers a solid understanding of the key structures and mechanisms of operating systems. He discusses design trade-offs and the practical decisions affecting design, performance and security. The book illustrates and reinforces design concepts and ties them to real-world design choices through the use of case studies in Linux, UNIX, Android, and Windows 8.
Teaching and Learning Experience
This program presents a better teaching and learning experience–for you and your students. It will help:
- Illustrate Concepts with Running Case Studies: To illustrate the concepts and to tie them to real-world design choices that must be made, four operating systems serve as running examples.
- Easily Integrate Projects in your Course: This book provides an unparalleled degree of support for including a projects component in the course.
- Keep Your Course Current with Updated Technical Content: This edition covers the latest trends and developments in operating systems.
- Provide Extensive Support Material to Instructors and Students: Student and instructor resources are available to expand on the topics presented in the text.
Illustrate Concepts with Running Case Studies
- Running case studies, focused on how specific operating systems implement specific concepts, are embedded throughout the text rather than assembled as a single chapter or appendix.
- Design concepts discussed in a given chapter are immediately reinforced with real-world examples.
- For convenience, all of the material for each of the example systems is also available online.
- To illustrate the concepts and to tie them to real-world design choices that must be made, four operating systems serve as running examples:
- NEW! 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.
- NEW! Android: Android is 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.
Easily Integrate Projects in your Course
This book provides an unparalleled degree of support for including a projects component in the course. The Instructors Resource Center (IRC) 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: 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:
- A packaged set of html files that the instructor can upload to a course server for student access
- A getting-started manual to be handed out to students to help them begin using OS/161
- A set of exercises using OS/161, to be handed out to students
- Model solutions to each exercise for the instructor's use
- All of this material is 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.
- Simulation Projects: 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 assignments to give to students, telling them specifically what they are to do and what results are expected.
- Kernel projects: The IRC includes complete instructor support for two different sets of Linux kernel programming projects, as well as a set of kernel programming projects for Android.
- NEW! Linux kernel projects: The seventh edition included instructor support for kernel programming projects, both independent of any specific OS and projects that used Linux kernel concepts. In addition to continuing to provide these project assignments, this new edition provides complete instructor support for two different sets of Linux kernel programming projects. The sets are independent of one another and the two sets are of varying degrees of complexity and length, allowing the instructor to choose the depth and amount of student effort to be devoted to learning OS concepts by doing Linux kernel projects.
- NEW! Android kernel projects: Complete instructor support is provided for teaching core OS concepts by assigning kernel development projects using Android.
- Programming projects: Two major programming projects, one to build a shell (or command line interpreter) and one to build a process dispatcher, are included. The text describes the projects, and step-by-step exercises are included at the Instructors Resource Center. The exercises can be uploaded to the instructor’s Web site.
- 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.
Keep Your Course Current with Updated Technical Content
- NEW! 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.
- NEW! 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.
- NEW! Multicore design issues: The dominant computer architecture is now multicore. This raises new OS design issues that are addressed in this new edition.
- NEW! I/O standards: The book has been updated to reflect the latest developments, including Thunderbolt.
- NEW! Storage hardware: The discussion of storage hardware has been updated and now includes discussion of solid-state drives.
- NEW! 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.
Provide Extensive Support Material to Instructors and Students
The major goal of this text is to make it as effective a teaching tool for this fundamental yet evolving subject as possible.
- Instructor Resource Center (IRC): Access the following resources on the publisher’s Web site www.pearsonhighered.com/stallings:
- Solutions manual: Solutions to end-of-chapter Review Questions and Problems.
- Projects manual: Suggested programming projects that cover a broad range of topics and that can be implemented in any suitable language on any platform.
- 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.
- Companion Web site: Access the following resources on the Companion Web site, at www.WilliamStallings.com/OperatingSystems (click on Instructor Resources link):
- 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.
Student Support Materials
For this new edition, a substantial amount of original supporting material for students has been made available online, at two Web locations.
- Companion Web site: A list of relevant links organized by chapter and an errata sheet for the book is located at www.WilliamStallings.com/OperatingSystems (click on Student Resources link).
- Premium Content site: Purchasing this textbook new also grants the reader six months of access to the Premium Content site. Click on the Premium Content link at the Companion Web site or at www.pearsonhighered.com/stallings and enter the student access code found on the card in the front of the book to access the following:
- Online chapters: To limit the size and cost of the book, two chapters of the book, covering security, are provided in PDF format.
- 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.
- 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.
New to This Edition
- 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.
Easily Integrate Projects in your Course
- Android kernel projects: Complete instructor support is provided for teaching core OS concepts by assigning kernel development projects using Android.
- Linux kernel projects: The seventh edition included instructor support for kernel programming projects, both independent of any specific OS and projects that used Linux kernel concepts. In addition to continuing to provide these project assignments, this new edition provides complete instructor support for two different sets of Linux kernel programming projects. The sets are independent of one another and the two sets are of varying degrees of complexity and length, allowing the instructor to choose the depth and amount of student effort to be devoted to learning OS concepts by doing Linux kernel projects.
Keep Your Course Current with Updated Technical Content
- 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.
Table of Contents
Chapter 0 Guide for Readers and Instructors
0.1 Outline of the Book
0.2 A Roadmap for Readers and Instructors
0.3 Internet and Web Resources
PART ONE BACKGROUND
Chapter 1 Computer System Overview
1.1 Basic Elements
1.2 Evolution of the Microprocessor
1.3 Instruction Execution
1.5 The Memory Hierarchy
1.6 Cache Memory
1.7 Direct Memory Access
1.8 Multiprocessor and Multicore Organization
1.9 Recommended Reading and Web Sites
1.10 Key Terms, Review Questions, and Problems
Appendix 1A Performance Characteristics of Two-Level Memory
Chapter 2 Operating System Overview
2.1 Operating System Objectives and Functions
2.2 The Evolution of Operating Systems
2.3 Major Achievements
2.4 Developments Leading to Modern Operating Systems
2.5 Virtual Machines
2.6 OS Design Considerations for Multiprocessor and Multicore
2.7 Microsoft Windows Overview
2.8 Traditional UNIX Systems
2.9 Modern UNIX Systems
2.12 Recommended Reading and Web Sites
2.13 Key Terms, Review Questions, and Problems
PART TWO PROCESSES
|Chapter 3 Process Description and Control|
3.1 What Is a Process?
3.2 Process States
3.3 Process Description
3.4 Process Control
3.5 Execution of the Operating System
3.6 UNIX SVR4 Process Management
3.8 Recommended Reading and Animations
3.9 Key Terms, Review Questions, and ProblemsChapter 4 Threads
4.1 Processes and Threads
4.2 Types of Threads
4.3 Multicore and Multithreading
4.4 Windows 8 Process and Thread Management
4.5 Solaris Thread and SMP Management
4.6 Linux Process and Thread Management
4.7 Android Process and Thread Management
4.8 Mac OS X Grand Central Dispatch
4.10 Recommended Reading
4.11 Key Terms, Review Questions, and Problems
Chapter 5 Concurrency: Mutual Exclusion and Synchronization
5.1 Principles of Concurrency
5.2 Mutual Exclusion: Hardware Support
5.5 Message Passing
5.6 Readers/Writers Problem
5.8 Recommended Reading and Animations
5.9 Key Terms, Review Questions, and Problems
Chapter 6 Concurrency: Deadlock and Starvation
6.1 Principles of Deadlock
6.2 Deadlock Prevention
6.3 Deadlock Avoidance
6.4 Deadlock Detection
6.5 An Integrated Deadlock Strategy
6.6 Dining Philosophers Problem
6.7 UNIX Concurrency Mechanisms
6.8 Linux Kernel Concurrency Mechanisms
6.9 Solaris Thread Synchronization Primitives
6.10 Windows Concurrency Mechanisms
6.11 Android Interprocess Communications
6.13 Recommended Reading
6.14 Key Terms, Review Questions, and Problems
PART THREE MEMORY
Chapter 7 Memory Management
7.1 Memory Management Requirements
7.2 Memory Partitioning
7.6 Recommended Reading and Animations
7.8 Key Terms, Review Questions, and Problems
Appendix 7A Loading and Linking
Chapter 8 Virtual Memory
8.1 Hardware and Control Structures
8.2 Operating System Software
8.3 UNIX and Solaris Memory Management
8.4 Linux Memory Management
8.5 Windows Memory Management
8.6 Android Memory Management
8.8 Recommended Reading and Web Sites
8.9 Key Terms, Review Questions, and Problems
PART FOUR SCHEDULING
Chapter 9 Uniprocessor Scheduling
9.1 Types of Scheduling
9.2 Scheduling Algorithms
9.3 Traditional UNIX Scheduling
9.5 Recommended Reading and Animations
9.6 Key Terms, Review Questions, and Problems
Chapter 10 Multiprocessor and Real-Time Scheduling
10.1 Multiprocessor and Multicore Scheduling
10.2 Real-Time Scheduling
10.3 Linux Scheduling
10.4 UNIX SVR4 Scheduling
10.5 UNIX FreeBSD Scheduling
10.6 Windows Scheduling
10.8 Recommended Reading
10.9 Key Terms, Review Questions, and Problems
PART FIVE INPUT/OUTPUT AND FILES
Chapter 11 I/O Management and Disk Scheduling
11.1 I/O Devices
11.2 Organization of the I/O Function
11.3 Operating System Design Issues
11.4 I/O Buffering
11.5 Disk Scheduling
11.7 Disk Cache
11.8 UNIX I/O
11.9 Linux I/O
11.10 Windows I/O
11.12 Recommended Reading
11.13 Key Terms, Review Questions, and Problems
Chapter 12 File Management
12.2 File Organization and Access
12.4 File Directories
12.5 File Sharing
12.6 Record Blocking
12.7 Secondary Storage Management
12.8 UNIX File Management
12.9 Linux Virtual File System
12.10 Windows File System
12.11 Android File Management
12.13 Recommended Reading
12.14 Key Terms, Review Questions, and Problems
PART SIX ADVANCED TOPICS
Chapter 13 Embedded Operating Systems
13.1 Embedded Systems
13.2 Characteristics of Embedded Operating Systems
13.3 Embedded Linux
13.5 Embedded Linux
13.5 Recommended Reading
13.6 Key Terms, Review Questions, and Problems
Chapter 14 Virtual Machines
14.1 Approaches to Virtualization
14.2 Processor Issues
14.3 Memory Management
14.4 I/O Management
14.5 VMware ESXi
14.6 Microsoft Hyper-V and Xen Variants
14.7 Java VM
14.8 Linux VServer Virtual Machine Architecture
14.9 Android Virtual Machine
14.10 Recommended Reading
14.11 Key Terms, Review Questions, and Problems
Chapter 15 Operating System Security
15.1 Intruders and Malicious Software
15.2 Buffer Overflow
15.3 Access Control
15.4 UNIX Access Control
15.5 Operating Systems Hardening
15.6 Security Maintenance
15.7 Windows Security
15.8 Recommended Reading
15.9 Key Terms, Review Questions, and Problems
Chapter 16 Distributed Processing, Client/Server, and Clusters
16.1 Client/Server Computing
16.2 Distributed Message Passing
16.3 Remote Procedure Calls
16.5 Windows Cluster Server
16.6 Beowulf and Linux Clusters
16.8 Recommended Reading
16.9 Key Terms, Review Questions, and Problems
Appendix A Topics in Concurrency
ONLINE CHAPTERS AND APPENDICES
Chapter 17 Network Protocols
17.1 The Need for a Protocol Architecture
17.2 The TCP/IP Protocol Architecture
17.4 Linux Networking
17.6 Recommended Reading and Web Sites
17.7 Key Terms, Review Questions, and Problems
Appendix 17A The Trivial File Transfer Protocol
Chapter 18 Distributed Process Management
18.1 Process Migration
18.2 Distributed Global States
18.3 Distributed Mutual Exclusion
18.4 Distributed Deadlock
18.6 Recommended Reading
18.7 Key Terms, Review Questions, and Problems
Chapter 19 Overview of Probability and Stochastic Processes
19.2 Random Variables
19.3 Elementary Concepts of Stochastic Processes
19.4 Recommended Reading and Web Sites
19.5 Key Terms, Review Questions, and Problems
Chapter 20 Queueing Analysis
20.1 How Queues Behave—A Simple Example
20.2 Why Queuing Analysis?
20.3 Queueing Models
20.4 Single-Server Queues
20.5 Multiserver Queues
20.7 Queues with Priorities
20.8 Networks of Queues
20.9 Other Queueing Models
20.10 Estimating Model Parameters
20.11 Recommended Reading and Web Sites
20.12 Key Terms, Review Questions, and Problems
Programming Project One Developing a Shell
Programming Project Two The HOST Dispatcher Shell
Appendix C Topics in Computer Organization
Appendix D Object-Oriented Design
Appendix E Amdahl's Law
Appendix F Hash Tables
Appendix G Response Time
Appendix H Queueing System Concepts
Appendix I The Complexity of Algorithms
Appendix J Disk Storage Devices
Appendix K Cryptographic Algorithms
Appendix L Standards OrganizationsAppendix M Sockets: A Programmer's Introduction
Appendix N The International Reference Alphabet
Appendix O BACI: The Ben-Ari Concurrent Programming System
Appendix P Procedure Control
Appendix Q eCOS Glossary
 Online chapters, appendices, and other documents are Premium Content, available via the access card at the front of the book.
Pearson offers special pricing when you package your text with other student resources. If you're interested in creating a cost-saving package for your students, contact your Pearson rep.
About the Author(s)
William Stallings has made a unique contribution to understanding the broad sweep of technical developments in computer networking and computer architecture. He has authored 17 titles, and counting revised editions, a total of 41 books on various aspects of these subjects. In over 20 years in the field, he has been a technical contributor, technical manager, and an executive with several high-technology firms. Currently he is an independent consultant whose clients have included computer and networking manufacturers and customers, software development firms, and leading-edge government research institutions.
He has received the award for the best Computer Science textbook of the year ¿seven times from the Text and Academic Authors Association.
Bill has designed and implemented both TCP/IP-based and OSI-based protocol suites on a variety of computers and operating systems, ranging from microcomputers to mainframes. As a consultant, he has advised government agencies, computer and software vendors, and major users on the design, selection, and use of networking software and products.
As evidence of his commitment to providing a broad range of support to students, Bill created and maintains the Computer Science Student Resource Site at WilliamStallings.com/StudentSupport.html. This site provides documents and links on a variety of subjects of general interest to computer science students (and professionals).
He is a member of the editorial board of Cryptologia, a scholarly journal devoted to all aspects of cryptology. He is a frequent lecturer and author of numerous technical papers. His books include Data and Computer Communications, Ninth Edition (Prentice Hall, 2011), which has become the standard in the field.
Dr. Stallings holds a PhD from M.I.T. in Computer Science and a B.S. from Notre Dame in electrical engineering.
We're sorry! We don't recognize your username or password. Please try again.
Instructor resource file download
The work is protected by local and international copyright laws and is provided solely for the use of instructors in teaching their courses and assessing student learning.
You have successfully signed out and will be required to sign back in should you need to download more resources.