CONTENTS PART ONE OVERVIEW Chapter 1 Introduction 1.1 What Is an Operating System? 3 1.2 Simple Batch Systems 6 1.3 Multiprogrammed Batched Systems 8 1.4 Time-Sharing Systems 9 1.5 Personal-Computer Systems 12 1.6 Parallel Systems 14 1.7 Distributed Systems 16 1.8 Real-Time Systems 18 1.9 Summary 19 Exercises 20 Bibliographical Notes 21 Chapter 2 Computer-System Structures 2.1 Computer-System Operation 23 2.2 I/O Structure 26 2.3 Storage Structure 30 2.4 Storage Hierarchy 35 2.5 Hardware Protection 37 2.6 General System Architecture 43 2.7 Summary 45 Exercises 45 Bibliographical Notes 47 xi
xii Contents Chapter 3 Operating-System Structures 3.1 System Components 49 3.2 Operating-System Services 55 3.3 System Calls 57 3.4 System Programs 66 3.5 System Structure 68 3.6 Virtual Machines 74 3.7 System Design and Implementation 78 3.8 System Generation 81 3.9 Summary 83 Exercises 83 Bibliographical Notes 84 PART TWO PROCESS MANAGEMENT Chapter 4 Processes 4.1 Process Concept 89 4.2 Process Scheduling 93 4.3 Operation on Processes 97 4.4 Cooperating Processes 100 4.5 Threads 102 4.6 Interprocess Communication 108 4.7 Summary 119 Exercises 120 Bibliographical Notes 121 Chapter 5 CPU Scheduling 5.1 Basic Concepts 123 5.2 Scheduling Criteria 127 5.3 Scheduling Algorithms 129 5.4 Multiple-Processor Scheduling 141 5.5 Real-Time Scheduling 141 5.6 Algorithm Evaluation 144 5.7 Summary 149 Exercises 150 Bibliographical Notes 152 Chapter 6 Process Synchronization 6.1 Background 155 6.2 The Critical-Section Problem 157 6.3 Synchronization Hardware 164 6.4 Semaphores 167 6.5 Classical Problems of Synchronization 172 6.6 Critical Regions 177 6.7 Monitors 181 6.8 Synchronization in Solaris 2 189 6.9 Atomic Transactions 190 6.10 Summary 199 Exercises 200 Bibliographical Notes 204
Contents xiii Chapter 7 Deadlocks 7.1 System Model 207 7.2 Deadlock Characterization 209 7.3 Methods for Handling Deadlocks 212 7.4 Deadlock Prevention 214 7.5 Deadlock Avoidance 217 7.6 Deadlock Detection 223 7.7 Recovery from Deadlock 227 7.8 Combined Approach to Deadlock Handling 229 7.9 Summary 230 Exercises 231 Bibliographical Notes 235 PART THREE STORAGE MANAGEMENT Chapter 8 Memory Management 8.1 Background 239 8.2 Logical versus Physical Address Space 245 8.3 Swapping 246 8.4 Contiguous Allocation 249 8.5 Paging 257 8.6 Segmentation 272 8.7 Segmentation with Paging 278 8.8 Summary 282 Exercises 284 Bibliographical Notes 287 Chapter 9 Virtual Memory 9.1 Background 289 9.2 Demand Paging 291 9.3 Performance of Demand Paging 297 9.4 Page Replacement 300 9.5 Page-Replacement Algorithms 303 9.6 Allocation of Frames 313 9.7 Thrashing 317 9.8 Other Considerations 322 9.9 Demand Segmentation 328 9.10 Summary 329 Exercises 331 Bibliographical Notes 335 Chapter 10 10.1 File Concept 337 10.2 Access Methods 346 10.3 Directory Structure 349 10.4 Protection 360 File-System Interface 10.5 Consistency Semantics 364 10.6 Summary 365 Exercises 366 Bibliographical Notes 368
xiv Contents Chapter 11 File-System Implementation 11.1 File-System Structure 369 11.2 Allocation Methods 373 11.3 Free-Space Management 382 11.4 Directory Implementation 385 11.5 Efficiency and Performance 386 11.6 Recovery 389 11.7 Summary 391 Exercises 392 Bibliographical Notes 393 PART FOUR I/O SYSTEMS Chapter 12 I/O Systems 12.1 Overview 397 12.2 I/O Hardware 398 12.3 Application I/O Interface 408 12.4 Kernel I/O Subsystem 414 12.5 Transforming I/O Requests to Hardware Operations 420 12.6 Performance 423 12.7 Summary 427 Exercises 428 Bibliographical Notes 429 Chapter 13 Secondary-Storage Structure 13.1 Disk Structure 431 13.2 Disk Scheduling 432 13.3 Disk Management 438 13.4 Swap-Space Management 442 13.5 Disk Reliability 444 13.6 Stable-Storage Implementation 446 13.7 Summary 447 Exercises 447 Bibliographical Notes 452 Chapter 14 14.1 Tertiary-Storage Devices 455 14.2 Operating-System Jobs 458 14.3 Performance Issues 461 Tertiary-Storage Structure 14.4 Summary 466 Exercises 466 Bibliographical Notes 469
Contents xv PART FIVE DISTRIBUTED SYSTEMS Chapter 15 15.1 Background 473 15.2 Motivation 475 15.3 Topology 476 15.4 Network Types 481 15.5 Communication 484 Network Structures 15.6 Design Strategies 491 15.7 Networking Example 495 15.8 Summary 497 Exercises 498 Bibliographical Notes 499 Chapter 16 Distributed System Structures 16.1 Network Operating Systems 501 16.2 Distributed Operating Systems 503 16.3 Remote Services 506 16.4 Robustness 511 16.5 Design Issues 512 16.6 Summary 515 Exercises 516 Bibliographical Notes 516 Chapter 17 Distributed File Systems 17.1 Background 519 17.2 Naming and Transparency 521 17.3 Remote File Access 525 17.4 Stateful versus Stateless Service 530 17.5 File Replication 531 17.6 Example Systems 532 17.7 Summary 559 Exercises 560 Bibliographical Notes 561 Chapter 18 18.1 Event Ordering 563 18.2 Mutual Exclusion 566 18.3 Atomicity 569 18.4 Concurrency Control 573 18.5 Deadlock Handling 578 Distributed Coordination 18.6 Election Algorithms 586 18.7 Reaching Agreement 588 18.8 Summary 591 Exercises 592 Bibliographical Notes 593
xvi Contents PART SIX PROTECTION AND SECURITY Chapter 19 Protection 19.1 Goals of Protection 597 19.2 Domain of Protection 598 19.3 Access Matrix 604 19.4 Implementation of Access Matrix 608 19.5 Revocation of Access Rights 611 19.6 Capability-Based Systems 613 19.7 Language-Based Protection 616 19.8 Summary 620 Exercises 620 Bibliographical Notes 621 Chapter 20 Security 20.1 The Security Problem 623 20.2 Authentication 625 20.3 One-Time Passwords 628 20.4 Program Threats 629 20.5 System Threats 630 20.6 Threat Monitoring 634 20.7 Encryption 637 20.8 Computer-Security Classifications 639 20.9 An Example Security Model: Windows NT 640 20.10 Summary 642 Exercises 643 Bibliographical Notes 644 PART SEVEN CASE STUDIES Chapter 21 The UNIX System 21.1 History 647 21.2 Design Principles 653 21.3 Programmer Interface 654 21.4 User Interface 663 21.5 Process Management 666 21.6 Memory Management 671 21.7 File System 675 21.8 I/O System 683 21.9 Interprocess Communication 687 21.10 Summary 692 Exercises 693 Bibliographical Notes 694 Chapter 22 The Linux System 22.1 History 697 22.2 Design Principles 702 22.3 Kernel Modules 705 22.4 Process Management 709 22.5 Scheduling 713 22.6 Memory Management 717 22.7 File Systems 725 22.8 Input and Output 730 22.9 Interprocess Communication 734 22.10 Network Structure 736 22.11 Security 738 22.12 Summary 741 Exercises 742 Bibliographical Notes 743
Contents xvii Chapter 23 Windows NT 23.1 History 745 23.2 Design Principles 746 23.3 System Components 747 23.4 Environmental Subsystems 763 23.5 File System 766 23.6 Networking 773 23.7 Programmer Interface 779 23.8 Summary 786 Exercises 786 Bibliographical Notes 787 Chapter 24 24.1 Early Systems 789 24.2 Atlas 795 24.3 XDS-940 796 24.4 THE 797 24.5 RC 4000 798 Historical Perspective 24.6 CTSS 799 24.7 MULTICS 799 24.8 OS/360 800 24.9 Mach 802 24.10 Other Systems 803 Bibliography 805 Credits 839 Index 841