PART ONE BACKGROUND 1
Chapter 1 Computer System Overview 3
1.1 Basic Elements 3
1.2 Processor Registers 4
1.3 Instruction Execution 7
1.4 Interrupts 10
1.5 The Memory Hierarchy 21
1.6 Cache Memory 24
1.7 I/O Communication Techiques 28
1.8 Recommended Reading 31
1.9 Problems 32
Appendix 1A Performance Characteristics of Two-Level Memory 34
Appendix 1B Procedure Control 41
Chapter 2 Operating System Overview 45
2.1 Operating System Objectives and Functions 45
2.2 The Evolution of Operating Systems 50
2.3 Major Achievements 60
2.4 Characteristics of Modern Operating Systems 71
2.5 Windows NT Overview 74
2.6 Traditional UNIX Systems 85
2.7 Modern UNIX Systems 88
2.8 Outline of the Remainder of the Book 90
2.9 Recommended Reading 94
2.10 Problems 95
PART TWO PROCESSES 99
Chapter 3 Process Description And Control 101
3.1 Process States 102
3.2 Process Description 117
3.3 Process Control 127
3.4 UNIX SVR4 Process Management 135
3.5 Summary 140
3.6 Recommended Reading 141
3.7 Problems 141
Chapter 4 Threads, SMP, and Microkernels 145
4.1 Processes and Threads 145
4.2 Symmetric Multiprocessing(SMP) 160
4.3 Microkernels 163
4.4 Solaris Thread and SMP Management 170
4.5 Windows NT Thread and SMP Management 176
4.6 Summary 182
4.7 Recommended Reading 183
4.8 Problems 183
Chapter 5 Concurrency:Mutual Exclusion and Synchronization 187
5.1 Principles of Concurrency 188
5.2 Mutual Exclusion:Software Approaches 197
5.3 Mutual Exclusion:Hardware Support 204
5.4 Semaphores 208
5.5 Monitors 222
5.6 Message Passing 230
5.7 Readers/Writers Problem 237
5.9 Recommended Reading 242
5.8 Summary 242
5.10 Problems 243
Chapter 6 Concurrency:Deadlock And Starvation 253
6.1 Principles of Deadlock 253
6.2 Deadlock Prevention 260
6.3 Deadlock Avoidance 262
6.4 Deadlock Detection 266
6.5 An Integrated Deadlock Strategy 269
6.6 Dining Philosophers Problem 270
6.7 UNIX Concurrency Mechanisms 271
6.8 Solaris Thread Synchronization Primitives 275
6.9 Windows NT Concurrency Mechanisms 278
6.10 Summary 279
6.11 Recommended Reading 281
6.12 Problems 281
PART THREE MEMORY 287
Chapter 7 Memory Management 289
7.1 Memory Management Requirements 289
7.2 Memory Partitioning 292
7.3 Paging 304
7.4 Segmentation 307
7.5 Summary 309
7.6 Recommended Reading 309
7.7 Problems 310
Appendix 7A Loading and Linking 311
Chapter 8 Virtual Memory 319
8.1 Hardware and Control Structures 320
8.2 Operating System Software 339
8.3 UNIX and Solaris Memory Management 360
8.4 Windows NT Memory Management 365
8.5 Summary 368
8.6 Recommended Reading 369
8.7 Problems 369
Appendix 8A Hash Tables 372
PART FOUR SCHEDULING 377
Chapter 9 Uniprocessor Scheduling 379
9.1 Types of Scheduling 380
9.2 Scheduling Algorithms 384
9.3 Traditional UNIX Scheduling 406
9.4 Summary 408
9.5 Recommended Reading 409
9.6 Problems 409
Appendix 9A Response Time 413
Chapter 10 Multiprocessor and Real-Time Scheduling 417
10.1 Multiprocessor Scheduling 417
10.2 Real-Time Scheduling 429
10.3 UNIX SVR4 Scheduling 442
10.4 Windows NT Scheduling 444
10.5 Summary 446
10.7 Problems 447
10.6 Recommended Reading 447
PART FIVE INPUT/OUTPUT AND FILES 449
Chapter 11 I/O Management and Disk Scheduling 451
11.1 I/O Devices 451
11.2 Organization of the I/O Function 453
11.3 Operating System Design Issues 456
11.4 I/O Buffering 460
11.5 Disk Scheduling 463
11.6 RAID 471
11.7 Disk Cache 479
11.8 UNIX SVR4 I/O 482
11.9 Windows NT I/O 486
11.10 Summary 488
11.11 Recommended Reading 489
11.12 Problems 490
Appendix 11A Disk Storage Devices 492
Chapter 12 File Management 501
12.1 Overview 501
12.2 File Organization 507
12.3 File Directories 512
12.4 File Sharing 515
12.5 Record Blocking 518
12.7 UNIX File Management 527
12.8 Windows NT File System 529
12.10 Recommended Reading 535
12.9 Summary 535
12.11 Problems 539
PART SIX DISTRIBUTED SYSTEMS 539
Chapter 13 Distributed Processing, Client/Server, and Clusters 543
13.1 The Need for a Protocol Architecture 544
13.2 The TCP/IP Protocol Suite 545
13.3 The OSI Protocol Architecture 553
13.4 Client/Server Computing 553
13.5 Distributed Message Passing 565
13.6 Remote Procedure Calls 569
13.7 Clusters 573
13.8 Windows NT Wolfpack 577
13.9 Solaris MC 579
12.6 Secondary Storage Management 579
13.10 Summary 582
13.11 Recommended Reading 583
13.12 Problems 583
Chapter 14 Distributed Process Management 585
14.1 Process Migration 585
14.2 Distributed Global States 592
14.3 Distributed Mutual Exclusion 597
14.4 Distributed Deadlock 607
14.5 Summary 620
14.6 Recommended Reading 620
14.7 Problems 621
PART SEVEN SECURITY 623
Chapter 15 Security 625
15.1 Security Threats 626
15.2 Protection 632
15.3 Intruders 636
15.4 Viruses and Related Threats 650
15.5 Trusted Systems 658
15.6 Network Security 660
15.7 Windows NT Security 668
15.8 Summary 674
15.9 Recommended Reading 675
15.10 Problems 675
Appendix 15A Encryption 677
Appendix A Queuing Analysis 683
A.1 Why Queuing Analysis? 684
A.2 Queuing Models 686
A.3 Single-Server Queues 691
A.4 Multiserver Queues 694
A.5 Networks of Queues 695
A.6 Examples 699
A.7 Other Queuing Models 702
A.8 Recommended Reading 702
Annex A Just Enough Probability and Statistics 703
B.1 Motivation 709
B.2 Object-Oriented Concepts 709
Appendix B Object-Oriented Design 709
B.3 Benefits of Object-Oriented Design 714
B.4 CORBA 715
B.5 Recommended Reading 717
Appendix C Programming and Operating System Projects 719
C.1 Projects for Teaching Operating Systems 719
C.2 NACHOS 720
C.3 Programming Projects 721
C.4 Reading/Report Assignments 722
Appendix D OSP:An Environment for Operating System Projects 723
D.1 Overview 723
D.2 Innovative Aspects of OSP 726
D.3 Comparison with Other Operating System Courseware 728
D.4 The OSP Software Distribution 729
D.5 OSP Mailing List 729
D.6 Future Plans 730
Appendix E BACI:The Ben-Ari Concurrent Programming System 731
E.1 Introduction 731
E.2 BACI 732
E.3 Examples of BACI Programs 735
E.4 BACI Projects 739
E.5 Enhancements to the BACI System 742
Glossary 743
References 753
Index 770