Operating System Principles (Silberschatz, Galvin, Gagne)


 OPERATING SYSTEM CONCEPTS

ABRAHAM SILBERSCHATZ

Yale University

PETER BAER GALVIN

Pluribus Networks

GREG GAGNE

Westminster College


Operating systems are an essential part of any computer system. Similarly, a course on operating systems is an essential part of any computer science education. This field is undergoing rapid change, as computers are now prevalent in virtually every arena of day-to-day life—from embedded devices in automobiles to the most sophisticated planning tools for governments and multinational firms. Yet the fundamental concepts remain fairly clear, and it is on these that we base this book.


Content of This Book

Chapter 1 Introduction

1.1 What Operating Systems Do

1.2 Computer-System Organization

1.3 Computer-System Architecture

1.4 Operating-System Structure

1.5 Operating-System Operations

1.6 Process Management

1.7 Memory Management

1.8 Storage Management 26

1.9 Protection and Security 30

1.10 Kernel Data Structures 31

1.11 Computing Environments 35

1.12 Open-Source Operating Systems 43

1.13 Summary 47

Exercises 49

Bibliographical Notes 52



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 Types of System Calls 66

2.5 System Programs 74

2.6 Operating-System Design and

Implementation 75

2.7 Operating-System Structure 78

2.8 Operating-System Debugging 86

2.9 Operating-System Generation 91

2.10 System Boot 92

2.11 Summary 93

Exercises 94

Bibliographical Notes 101


Chapter 3 Processes

3.1 Process Concept 105

3.2 Process Scheduling 110

3.3 Operations on Processes 115

3.4 Interprocess Communication 122

3.5 Examples of IPC Systems 130

3.6 Communication in Client–

Server Systems 136

3.7 Summary 147

Exercises 149

Bibliographical Notes


Chapter 4 Threads

4.1 Overview

4.2 Multicore Programming

4.3 Multithreading Models

4.4 Thread Libraries

4.5 Implicit Threading

4.6 Threading Issues

4.7 Operating-System Examples

4.8 Summary

Exercises 191

Bibliographical Notes


Chapter 5 Process Synchronization

5.1 Background 203

5.2 The Critical-Section Problem 206

5.3 Peterson’s Solution 207

5.4 Synchronization Hardware 209

5.5 Mutex Locks 212

5.6 Semaphores 213

5.7 Classic Problems of

Synchronization 219

5.8 Monitors 223

5.9 Synchronization Examples 232

5.10 Alternative Approaches 238

5.11 Summary 242

Exercises 242

Bibliographical Notes


Chapter 6 CPU Scheduling

6.1 Basic Concepts 261

6.2 Scheduling Criteria 265

6.3 Scheduling Algorithms 266

6.4 Thread Scheduling 277

6.5 Multiple-Processor Scheduling 278

6.6 Real-Time CPU Scheduling 283

6.7 Operating-System Examples 290

6.8 Algorithm Evaluation 300

6.9 Summary 304

Exercises 

Bibliographical Notes


Chapter 7 Deadlocks

7.1 System Model 315

7.2 Deadlock Characterization 317

7.3 Methods for Handling Deadlocks 322

7.4 Deadlock Prevention 323

7.5 Deadlock Avoidance 327

7.6 Deadlock Detection 333

7.7 Recovery from Deadlock 337

7.8 Summary 339

Exercises

Bibliographical Notes


Chapter 8 Main Memory

8.1 Background 351

8.2 Swapping 358

8.3 Contiguous Memory Allocation 360

8.4 Segmentation 364

8.5 Paging 366

8.6 Structure of the Page Table 378

8.7 Example: Intel 32 and 64-bit

Architectures 383

8.8 Example: ARM Architecture 388

8.9 Summary 389

Exercises 390

Bibliographical Notes 


Chapter 9 Virtual Memory

9.1 Background 397

9.2 Demand Paging 401

9.3 Copy-on-Write 408

9.4 Page Replacement 409

9.5 Allocation of Frames 421

9.6 Thrashing 425

9.7 Memory-Mapped Files


Chapter 10 Mass-Storage Structure

10.1 Overview of Mass-Storage

Structure 467

10.2 Disk Structure 470

10.3 Disk Attachment 471

10.4 Disk Scheduling 472

10.5 Disk Management 478

10.6 Swap-Space Management 482

10.7 RAID Structure 484

10.8 Stable-Storage Implementation 494

10.9 Summary 496

Exercises 497

Bibliographical Notes


Chapter 11 File-System Interface

11.1 File Concept 503

11.2 Access Methods 513

11.3 Directory and Disk Structure 515

11.4 File-System Mounting 526

11.5 File Sharing 528

11.6 Protection 533

11.7 Summary 538

Exercises 539

Bibliographical Notes



Chapter 12 File-System Implementation

12.1 File-System Structure 543

12.2 File-System Implementation 546

12.3 Directory Implementation 552

12.4 Allocation Methods 553

12.5 Free-Space Management 561

12.6 Efficiency and Performance 564

12.7 Recovery 568

12.8 NFS 571

12.9 Example: The WAFL File System 577

12.10 Summary 580

Exercises 581

Bibliographical Notes



Chapter 13 I/O Systems

13.1 Overview 587

13.2 I/O Hardware 588

13.3 Application I/O Interface 597

13.4 Kernel I/O Subsystem 604

13.5 Transforming I/O Requests to Hardware Operations 611

13.6 STREAMS 613

13.7 Performance 615

13.8 Summary 618

Exercises 619

Bibliographical Notes


Chapter 14 Protection

14.1 Goals of Protection 625

14.2 Principles of Protection 626

14.3 Domain of Protection 627

14.4 Access Matrix 632

14.5 Implementation of the Access Matrix 636

14.6 Access Control 639

14.7 Revocation of Access Rights 640

14.8 Capability-Based Systems 641

14.9 Language-Based Protection 644

14.10 Summary 649

Exercises 650

Bibliographical Notes


Chapter 15 Security

15.1 The Security Problem 657

15.2 Program Threats 661

15.3 System and Network Threats 669

15.4 Cryptography as a Security Tool 674

15.5 User Authentication 685

15.6 Implementing Security Defenses 689

15.7 Firewalling to Protect Systems and Networks

15.8 Computer-Security Classifications

15.9 An Example: Windows 7 699

15.10 Summary 701

Exercises 702

Bibliographical Notes


Chapter 16 Virtual Machines

16.1 Overview 711

16.2 History 713

16.3 Benefits and Features 714

16.4 Building Blocks 717

16.5 Types of Virtual Machines and Their

Implementations 721

16.6 Virtualization and Operating-System

Components 728

16.7 Examples 735

16.8 Summary 737

Exercises 738

Bibliographical Notes


Chapter 17 Distributed Systems

17.1 Advantages of Distributed Systems 741

17.2 Types of Networkbased Operating Systems 743

17.3 Network Structure 747

17.4 Communication Structure 751

17.5 Communication Protocols 756

17.6 An Example: TCP/IP 760

17.7 Robustness 762

17.8 Design Issues 764

17.9 Distributed File Systems 765

17.10 Summary 773

Exercises 774

Bibliographical Notes


Chapter 18 The Linux System

18.1 Linux History 781

18.2 Design Principles 786

18.3 Kernel Modules 789

18.4 Process Management 792

18.5 Scheduling 795

18.6 Memory Management 800

18.7 File Systems 809

18.8 Input and Output 815

18.9 Interprocess Communication 818

18.10 Network Structure 819

18.11 Security 821

18.12 Summary 824

Exercises 824

Bibliographical Notes 



Chapter 19 Windows 7

19.1 History 829

19.2 Design Principles 831

19.3 System Components 838

19.4 Terminal Services and Fast User

Switching 862

19.5 File System 863

19.6 Networking 869

19.7 Programmer Interface 874

19.8 Summary 883

Exercises 883

Bibliographical Notes



Chapter 20 Influential Operating Systems

20.1 Feature Migration 887

20.2 Early Systems 888

20.3 Atlas 895

20.4 XDS-940 896

20.5 THE 897

20.6 RC 4000 897

20.7 CTSS 898

20.8 MULTICS 899

20.9 IBM OS/360 899

20.10 TOPS-20 901

20.11 CP/M and MS/DOS 901

20.12 Macintosh Operating System and

Windows 902

20.13 Mach 902

20.14 Other Systems 904

Exercises 904

Bibliographical Notes


Appendix A BSD UNIX

A.1 UNIX History

A.2 Design Principles A6

A.3 Programmer Interface A8

A.4 User Interface A15

A.5 Process Management A18

A.6 Memory Management A22

A.7 File System A24

A.8 I/O System A32

A.9 Interprocess Communication A36

A.10 Summary A40

Exercises A

Bibliographical Notes


Appendix B The Mach System

B.1 History of the Mach System 

B.2 Design Principles

B.3 System Components

B.4 Process Management

B.5 Interprocess Communication

B.6 Memory Management

B.7 Programmer Interface 

B.8 Summary

Exercises 

Bibliographical Notes



Previous Post Next Post