PART ONE OVERVIEW 1
Chapter 1 Introduction 3
1.1 What Operating Systems Do 3
1.2 Computer-System Organization 6
1.3 Computer-System Architecture 12
1.4 Operating-System Structure 15
1.5 Operating-System Operations 17
1.6 Process Management 20
1.7 Memory Management 21
1.8 Storage Management 22
1.9 Protection and Security 26
1.10 Distributed Systems 28
1.11 Special-Purpose Systems 29
1.12 Computing Environments 31
1.13 Summary 34
Exercises 36
Bibliographical Notes 38
Chapter 2 Operating-System Structures 39
2.1 Operating-System Services 39
2.2 User Operating-System Interface 41
2.3 System Calls 43
2.4 Types of System Calls 47
2.5 System Programs 55
2.6 Operating-System Design and Implementation 56
2.7 Operating-System Structure 58
2.8 Virtual Machines 64
2.9 Operating-System Generation 70
2.10 System Boot 71
2.11 Summary 72
Exercises 73
Bibliographical Notes 78
PART TWO PROCESS MANAGEMENT 79
Chapter 3 Processes 81
3.1 Process Concept 81
3.2 Process Scheduling 85
3.3 Operations on Processes 90
3.4 Interprocess Communication 96
3.5 Examples of IPC Systems 102
3.6 Communication in Client-Server Systems 108
3.7 Summary 115
Exercises 116
Bibliographical Notes 125
Chapter 4 Threads 127
4.1 Overview 127
4.2 Multithreading Models 129
4.3 Thread Libraries 131
4.4 Threading Issues 138
4.5 Operating-System Examples 143
4.6 Summary 146
Exercises 146
Bibliographical Notes 151
Chapter 5 CPU Scheduling 153
5.1 Basic Concepts 153
5.2 Scheduling Criteria 157
5.3 Scheduling Algorithms 158
5.4 Multiple-Processor Scheduling 169
5.5 Thread Scheduling 172
5.6 Operating System Examples 173
5.7 Algorithm Evaluation 181
5.8 Summary 185
Exercises 186
Bibliographical Notes 189
Chapter 6 Process Synchronization 191
6.1 Background 191
6.2 The Critical-Section Problem 193
6.3 Peterson's Solution 195
6.4 Synchronization Hardware 197
6.5 Semaphores 200
6.6 Classic Problems of Synchronization 204
6.7 Monitors 209
6.8 Synchronization Examples 217
6.9 Atomic Transactions 222
6.10 Summary 230
Exercises 231
Bibliographical Notes 242
Chapter 7 Deadlocks 245
7.1 System Model 245
7.2 Deadlock Characterization 247
7.3 Methods for Handling Deadlocks 252
7.4 Deadlock Prevention 253
7.5 Deadlock Avoidance 256
7.6 Deadlock Detection 262
7.7 Recovery From Deadlock 266
7.8 Summary 267
Exercises 268
Bibliographical Notes 271
PART THREE MEMORY MANAGEMENT 273
Chapter 8 Main Memory 275
8.1 Background 275
8.2 Swapping 282
8.3 Contiguous Memory Allocation 284
8.4 Paging 288
8.5 Structure of the Page Table 297
8.6 Segmentation 302
8.7 Example: The Intel Pentium 305
8.8 Summary 309
Exercises 310
Bibliographical Notes 312
Chapter 9 Virtual Memory 315
9.1 Background 315
9.2 Demand Paging 319
9.3 Copy-on-Write 325
9.4 Page Replacement 327
9.5 Allocation of Frames 340
9.6 Thrashing 343
9.7 Memory-Mapped Files 348
9.8 Allocating Kernel Memory 353
9.9 Other Considerations 357
9.10 Operating-System Examples 363
9.11 Summary 365
Exercises 366
Bibliographical Notes 370
PART FOUR STORAGE MANAGEMENT 371
Chapter 10 File-System Interface 373
10.1 File Concept 373
10.2 Access Methods 382
10.3 Directory Structure 385
10.4 File-System Mounting 395
10.5 File Sharing 397
10.6 Protection 402
10.7 Summary 407
Exercises 408
Bibliographical Notes 409
Chapter 11 File-System Implementation 411
11.1 File-System Structure 411
11.2 File-System Implementation 413
11.3 Directory Implementation 419
11.4 Allocation Methods 421
11.5 Free-Space Management 429
11.6 Efficiency and Performance 431
11.7 Recovery 435
11.8 Log-Structured File Systems 437
11.9 NFS 438
11.10 Example: The WAFL File System 444
11.11 Summary 446
Exercises 447
Bibliographical Notes 449
Chapter 12 Mass-Storage Structure 451
12.1 Overview of Mass-Storage Structure 451
12.2 Disk Structure 454
12.3 Disk Attachment 455
12.4 Disk Scheduling 456
12.5 Disk Management 462
12.6 Swap-Space Management 466
12.7 RAID Structure 468
12.8 Stable-Storage Implementation 477
12.9 Tertiary-Storage Structure 478
12.10 Summary 488
Exercises 489
Bibliographical Notes 493
Chapter 13 I/O Systems 495
13.1 Overview 495
13.2 I/O Hardware 496
13.3 Application I/O Interface 505
13.4 Kernel I/O Subsystem 511
13.5 Transforming I/O Requests to Hardware Operations 518
13.6 STREAMS 520
13.7 Performance 522
13.8 Summary 525
Exercises 526
Bibliographical Notes 527
PART FIVE PROTECTION AND SECURITY 529
Chapter 14 Protection 531
14.1 Goals of Protection 531
14.2 Principles of Protection 532
14.3 Domain of Protection 533
14.4 Access Matrix 538
14.5 Implementation of Access Matrix 542
14.6 Access Control 545
14.7 Revocation of Access Rights 546
14.8 Capability-Based Systems 547
14.9 Language-Based Protection 550
14.10 Summary 555
Exercises 556
Bibliographical Notes 557
Chapter 15 Security 559
15.1 The Security Problem 559
15.2 Program Threats 563
15.3 System and Network Threats 571
15.4 Cryptography as a Security Tool 576
15.5 User Authentication 587
15.6 Implementing Security Defenses 592
15.7 Firewalling to Protect Systems and Networks 599
15.8 Computer-Security Classifications 600
15.9 An Example: Windows XP 602
15.10 Summary 604
Exercises 604
Bibliographical Notes 606
PART SIX DISTRIBUTED SYSTEMS 609
Chapter 16 Distributed System Structures 611
16.1 Motivation 611
16.2 Types of Distributed Operating Systems 613
16.3 Network Structure 617
16.4 Network Topology 620
16.5 Communication Structure 622
16.6 Communication Protocols 628
16.7 Robustness 631
16.8 Design Issues 633
16.9 An Example: Networking 636
16.10 Summary 637
Exercises 638
Bibliographical Notes 640
Chapter 17 Distributed File Systems 641
17.1 Background 641
17.2 Naming and Transparency 643
17.3 Remote File Access 646
17.4 Stateful Versus Stateless Service 651
17.5 File Replication 652
17.6 An Example: AFS 654
17.7 Summary 659
Exercises 660
Bibliographical Notes 661
Chapter 18 Distributed Coordination 663
18.1 Event Ordering 663
18.2 Mutual Exclusion 666
18.3 Atomicity 669
18.4 Concurrency Control 672
18.5 Deadlock Handling 676
18.6 Election Algorithms 683
18.7 Reaching Agreement 686
18.8 Summary 688
Exercises 689
Bibliographical Notes 690
PART SEVEN SPECIAL-PURPOSE SYSTEMS 693
Chapter 19 Real-Time Systems 695
19.1 Overview 695
19.2 System Characteristics 696
19.3 Features of Real-Time Kernels 698
19.4 Implementing Real-Time Operating Systems 700
19.5 Real-Time CPU Scheduling 704
19.6 VxWorks 5.x 710
19.7 Summary 712
Exercises 713
Bibliographical Notes 713
Chapter 20 Multimedia Systems 715
20.1 What Is Multimedia? 715
20.2 Compression 718
20.3 Requirements of Multimedia Kernels 720
20.4 CPU Scheduling 722
20.5 Disk Scheduling 723
20.6 Network Management 725
20.7 An Example: CineBlitz 728
20.8 Summary 730
Exercises 731
Bibliographical Notes 733
PART EIGHT CASE STUDIES 735
Chapter 21 The Linux System 737
21.1 Linux History 737
21.2 Design Principles 742
21.3 Kernel Modules 745
21.4 Process Management 748
21.5 Scheduling 751
21.6 Memory Management 756
21.7 File Systems 764
21.8 Input and Output 770
21.9 Interprocess Communication 773
21.10 Network Structure 774
21.11 Security 777
21.12 Summary 779
Exercises 780
Bibliographical Notes 781
Chapter 22 Windows XP 783
22.1 History 783
22.2 Design Principles 785
22.3 System Components 787
22.4 Environmental Subsystems 811
22.5 File System 814
22.6 Networking 822
22.7 Programmer Interface 829
22.8 Summary 836
Exercises 836
Bibliographical Notes 837
Chapter 23 Influential Operating Systems 839
23.1 Early Systems 839
23.2 Atlas 845
23.3 XDS-940 846
23.4 THE 847
23.5 RC4000 848
23.6 CTSS 849
23.7 MULTICS 849
23.8 IBM OS/360 850
23.9 Mach 851
23.10 Other Systems 853
Exercises 853
Bibliography 855
Credits 885
Index 887