Contents
- PART ONE OVERVIEW
- Chapter 1 Introduction
- 1.1 What Operating Systems Do 4
- 1.2 Computer-System Organization 7
- 1.3 Computer-System Architecture 15
- 1.4 Operating-System Operations 21
- 1.5 Resource Management 27
- 1.6 Security and Protection 33
- 1.7 Virtualization 34
- 1.8 Distributed Systems 35
- 1.9 Kernel Data Structures 36
- 1.10 Computing Environments 40
- 1.11 Free and Open-Source Operating Systems 46
- Practice Exercises 53
- Further Reading 54
- Chapter 2 Operating-System Structures
- 2.1 Operating-System Services 55
- 2.2 User and Operating-System Interface 58
- 2.3 System Calls 62
- 2.4 System Services 74
- 2.5 Linkers and Loaders 75
- 2.6 Why Applications Are Operating-System Specific 77
- 2.7 Operating-System Design and Implementation 79
- 2.8 Operating-System Structure 81
- 2.9 Building and Booting an Operating System 92
- 2.10 Operating-System Debugging 95
- 2.11 Summary 100
- Practice Exercises 101
- Further Reading 101
- Chapter 1 Introduction
-
PART TWO PROCESS MANAGEMENT
- Chapter 3 Processes
- 3.1 Process Concept 106
- 3.2 Process Scheduling 110
- 3.3 Operations on Processes 116
- 3.4 Interprocess Communication 123
- 3.5 IPC in Shared-Memory Systems 125
- 3.6 IPC in Message-Passing Systems 127
- 3.7 Examples of IPC Systems 132
- 3.8 Communication in Client – Server Systems 145
- 3.9 Summary 153
- Practice Exercises 154
- Further Reading 156
- Chapter 4 Threads & Concurrency
- 4.1 Overview 160
- 4.2 Multicore Programming 162
- 4.3 Multithreading Models 166
- 4.4 Thread Libraries 168
- 4.5 Implicit Threading 176
- 4.6 Threading Issues 188
- 4.7 Operating-System Examples 194
- 4.8 Summary 196
- Practice Exercises 197
- Further Reading 198
- Chapter 5 CPU Scheduling
- 5.1 Basic Concepts 200
- 5.2 Scheduling Criteria 204
- 5.3 Scheduling Algorithms 205
- 5.4 Thread Scheduling 217
- 5.5 Multi-Processor Scheduling 220
- 5.6 Real-Time CPU Scheduling 227
- 5.7 Operating-System Examples 234
- 5.8 Algorithm Evaluation 244
- 5.9 Summary 250
- Practice Exercises 251
- Further Reading 254
- Chapter 3 Processes
-
PART THREE PROCESS SYNCHRONIZATION
- Chapter 6 Synchronization Tools
- 6.1 Background 257
- 6.2 The Critical-Section Problem 260
- 6.3 Peterson’s Solution 262
- 6.4 Hardware Support for Synchronization 265
- 6.5 Mutex Locks 270
- 6.6 Semaphores 272
- 6.7 Monitors 276
- 6.8 Liveness 283
- 6.9 Evaluation 284
- 6.10 Summary 286
- Practice Exercises 287
- Further Reading 288
- Chapter 7 Synchronization Examples
- 7.1 Classic Problems of Synchronization 289
- 7.2 Synchronization within the Kernel 295
- 7.3 POSIX Synchronization 299
- 7.4 Synchronization in Java 303
- 7.5 Alternative Approaches 311
- 7.6 Summary 314
- Practice Exercises 314
- Further Reading 315
- Chapter 8 Deadlocks
- 8.1 System Model 318
- 8.2 Deadlock in Multithreaded Applications 319
- 8.3 Deadlock Characterization 321
- 8.4 Methods for Handling Deadlocks 326
- 8.5 Deadlock Prevention 327
- 8.6 Deadlock Avoidance 330
- 8.7 Deadlock Detection 337
- 8.8 Recovery from Deadlock 341
- 8.9 Summary 343
- Practice Exercises 344
- Further Reading 346
- Chapter 6 Synchronization Tools
-
PART FOUR MEMORY MANAGEMENT
- Chapter 9 Main Memory
- 9.1 Background 349
- 9.2 Contiguous Memory Allocation 356
- 9.3 Paging 360
- 9.4 Structure of the Page Table 371
- 9.5 Swapping 376
- 9.6 Example: Intel 32- and 64-bit Architectures 379
- 9.7 Example: ARMv8 Architecture 383
- 9.8 Summary 384
- Practice Exercises 385
- Further Reading 387
- Chapter 10 Virtual Memory
- 10.1 Background 389
- 10.2 Demand Paging 392
- 10.3 Copy-on-Write 399
- 10.4 Page Replacement 401
- 10.5 Allocation of Frames 413
- 10.6 Thrashing 419
- 10.7 Memory Compression 425
- 10.8 Allocating Kernel Memory 426
- 10.9 Other Considerations 430
- 10.10 Operating-System Examples 436
- 10.11 Summary 440
- Practice Exercises 441
- Further Reading 444
- Chapter 9 Main Memory
-
PART FIVE STORAGE MANAGEMENT
- Chapter 11 Mass-Storage Structure
- 11.1 Overview of Mass-Storage Structure 449
- 11.2 HDD Scheduling 457
- 11.3 NVM Scheduling 461
- 11.4 Error Detection and Correction 462
- 11.5 Storage Device Management 463
- 11.6 Swap-Space Management 467
- 11.7 Storage Attachment 469
- 11.8 RAID Structure 473
- 11.9 Summary 485
- Practice Exercises 486
- Further Reading 487
- Chapter 12 I/O Systems
- 12.1 Overview 489
- 12.2 I/O Hardware 490
- 12.3 Application I/O Interface 500
- 12.4 Kernel I/O Subsystem 508
- 12.5 Transforming I/O Requests to Hardware Operations 516
- 12.6 STREAMS 519
- 12.7 Performance 521
- 12.8 Summary 524
- Practice Exercises 525
- Further Reading 526
-
PART SIX FILE SYSTEM
- Chapter 13 File-System Interface
- 13.1 File Concept 529
- 13.2 Access Methods 539
- 13.3 Directory Structure 541
- 13.4 Protection 550
- 13.5 Memory-Mapped Files 555
- 13.6 Summary 560
- Practice Exercises 560
- Further Reading 561
- Chapter 14 File-System Implementation
- 14.1 File-System Structure 564
- 14.2 File-System Operations 566
- 14.3 Directory Implementation 568
- 14.4 Allocation Methods 570
- 14.5 Free-Space Management 578
- 14.6 Efficiency and Performance 582
- 14.7 Recovery 586
- 14.8 Example: The WAFL File System 589
- 14.9 Summary 593
- Practice Exercises 594
- Further Reading 594
- Chapter 15 File-System Internals
- 15.1 File Systems 597
- 15.2 File-System Mounting 598
- 15.3 Partitions and Mounting 601
- 15.4 File Sharing 602
- 15.5 Virtual File Systems 603
- 15.6 Remote File Systems 605
- 15.7 Consistency Semantics 608
- 15.8 NFS 610
- 15.9 Summary 615
- Practice Exercises 616
- Further Reading 617
- Chapter 11 Mass-Storage Structure
-
PART SEVEN SECURITY AND PROTECTION
- Chapter 16 Security
- 16.1 The Security Problem 621
- 16.2 Program Threats 625
- 16.3 System and Network Threats 634
- 16.4 Cryptography as a Security Tool 637
- 16.5 User Authentication 648
- 16.6 Implementing Security Defenses 653
- 16.7 An Example: Windows 10 662
- 16.8 Summary 664
- Further Reading 665
- Chapter 17 Protection
- 17.1 Goals of Protection 667
- 17.2 Principles of Protection 668
- 17.3 Protection Rings 669
- 17.4 Domain of Protection 671
- 17.5 Access Matrix 675
- 17.6 Implementation of the Access Matrix 679
- 17.7 Revocation of Access Rights 682
- 17.8 Role-Based Access Control 683
- 17.9 Mandatory Access Control (MAC) 684
- 17.10 Capability-Based Systems 685
- 17.11 Other Protection Improvement Methods 687
- 17.12 Language-Based Protection 690
- 17.13 Summary 696
- Further Reading 697
- Chapter 16 Security
-
PART EIGHT ADVANCED TOPICS
- Chapter 18 Virtual Machines
- 18.1 Overview 701
- 18.2 History 703
- 18.3 Benefits and Features 704
- 18.4 Building Blocks 707
- 18.5 Types of VMs and Their Implementations 713
- 18.6 Virtualization and Operating-System Components 719
- 18.7 Examples 726
- 18.8 Virtualization Research 728
- 18.9 Summary 729
- Further Reading 730
- Chapter 19 Networks and Distributed Systems
- 19.1 Advantages of Distributed Systems 733
- 19.2 Network Structure 735
- 19.3 Communication Structure 738
- 19.4 Network and Distributed Operating Systems 749
- 19.5 Design Issues in Distributed Systems 753
- 19.6 Distributed File Systems 757
- 19.7 DFS Naming and Transparency 761
- 19.8 Remote File Access 764
- 19.9 Final Thoughts on Distributed File Systems 767
- 19.10 Summary 768
- Practice Exercises 769
- Further Reading 770
- Chapter 18 Virtual Machines
-
PART NINE CASE STUDIES
- Chapter 20 The Linux System
- 20.1 Linux History 775
- 20.2 Design Principles 780
- 20.3 Kernel Modules 783
- 20.4 Process Management 786
- 20.5 Scheduling 790
- 20.6 Memory Management 795
- 20.7 File Systems 803
- 20.8 Input and Output 810
- 20.9 Interprocess Communication 812
- 20.10 Network Structure 813
- 20.11 Security 816
- 20.12 Summary 818
- Practice Exercises 819
- Further Reading 819
- Chapter 21 Windows 10
- 21.1 History 821
- 21.2 Design Principles 826
- 21.3 System Components 838
- 21.4 Terminal Services and Fast User Switching 874
- 21.5 File System 875
- 21.6 Networking 880
- 21.7 Programmer Interface 884
- 21.8 Summary 895
- Practice Exercises 896
- Further Reading 897
- Chapter 20 The Linux System