Table of Contents

1.1 Introduction

1.2 What operating systems do

1.3 Computer-system organization

1.4 Computer-system architecture

1.5 Operating-system operations

1.6 Resource management

1.7 Security and protection

1.8 Virtualization

1.9 Distributed systems

1.10 Kernel data structures

1.11 Computing environments

1.12 Free and open-source operating systems

1.13 Summary

1.14 Practice exercises

1.15 Exercises

1.16 Further reading

1.17 Bibliography

2.1 Introduction

2.2 Operating-system services

2.3 User and operating-system interface

2.4 System calls

2.5 System services

2.6 Linkers and loaders

2.7 Why applications are operating-system specific

2.8 Operating-system design and implementation

2.9 Operating-system structure

2.10 Building and booting an operating system

2.11 Operating-system debugging

2.12 Summary

2.13 Practice exercises

2.14 Exercises

2.15 Programming problems

2.16 Programming projects

2.17 Further reading

2.18 Bibliography

3.1 Introduction

3.2 Process concept

3.3 Process scheduling

3.4 Operations on processes

3.5 Interprocess communication

3.6 IPC in shared-memory systems

3.7 IPC in message-passing systems

3.8 Examples of IPC systems

3.9 Communication in client-server systems

3.10 Summary

3.11 Practice exercises

3.12 Exercises

3.13 Programming problems

3.14 Programming projects

3.15 Further reading

3.16 Bibliography

4.1 Introduction

4.2 Overview

4.3 Multicore programming

4.4 Multithreading models

4.5 Thread libraries

4.6 Implicit threading

4.7 Threading issues

4.8 Operating-system examples

4.9 Summary

4.10 Practice exercises

4.11 Exercises

4.12 Programming problems

4.13 Programming projects

4.14 Further reading

4.15 Bibliography

5.1 Introduction

5.2 Basic concepts

5.3 Scheduling criteria

5.4 Scheduling algorithms

5.5 Thread scheduling

5.6 Multi-processor scheduling

5.7 Real-time CPU scheduling

5.8 Operating-system examples

5.9 Algorithm evaluation

5.10 Summary

5.11 Practice exercises

5.12 Exercises

5.13 Programming projects

5.14 Further reading

5.15 Bibliography

6.1 Introduction

6.2 Background

6.3 The critical-section problem

6.4 Peterson’s solution

6.5 Hardware support for synchronization

6.6 Mutex locks

6.7 Semaphores

6.8 Monitors

6.9 Liveness

6.10 Evaluation

6.11 Summary

6.12 Practice exercises

6.13 Exercises

6.14 Programming problems

6.15 Further reading

6.16 Bibliography

7.1 Introduction

7.2 Classic problems of synchronization

7.3 Synchronization within the kernel

7.4 POSIX synchronization

7.5 Synchronization in java

7.6 Alternative approaches

7.7 Summary

7.8 Practice exercises

7.9 Exercises

7.10 Programming problems

7.11 Programming projects

7.12 Further reading

7.13 Bibliography

8.1 Introduction

8.2 System model

8.3 Deadlock in multithreaded applications

8.4 Deadlock characterization

8.5 Methods for handling deadlocks

8.6 Deadlock prevention

8.7 Deadlock avoidance

8.8 Deadlock detection

8.9 Recovery from deadlock

8.10 Summary

8.11 Practice exercises

8.12 Exercises

8.13 Programming problems

8.14 Programming projects

8.15 Further reading

8.16 Bibliography

9.1 Introduction

9.2 Background

9.3 Contiguous memory allocation

9.4 Paging

9.5 Structure of the page table

9.6 Swapping

9.7 Example: intel 32- and 64-bit architectures

9.8 Example: ARMv8 architecture

9.9 Summary

9.10 Practice exercises

9.11 Exercises

9.12 Programming problems

9.13 Programming projects

9.14 Further reading

9.15 Bibliography

10.1 Introduction

10.2 Background

10.3 Demand paging

10.4 Copy-on-write

10.5 Page replacement

10.6 Allocation of frames

10.7 Thrashing

10.8 Memory compression

10.9 Allocating kernel memory

10.10 Other considerations

10.11 Operating-system examples

10.12 Summary

10.13 Practice exercises

10.14 Exercises

10.15 Programming problems

10.16 Programming projects

10.17 Further reading

10.18 Bibliography

11.1 Introduction

11.2 Overview of mass-storage structure

11.3 HDD scheduling

11.4 NVM scheduling

11.5 Error detection and correction

11.6 Storage device management

11.7 Swap-space management

11.8 Storage attachment

11.9 RAID structure

11.10 Summary

11.11 Practice exercises

11.12 Exercises

11.13 Programming problems

11.14 Further reading

11.15 Bibliography

12.1 Introduction

12.2 Overview

12.3 I/O hardware

12.4 Application I/O interface

12.5 Kernel I/O subsystem

12.6 Transforming I/O requests to hardware operations

12.7 Streams

12.8 Performance

12.9 Summary

12.10 Practice exercises

12.11 Exercises

12.12 Further reading

12.13 Bibliography

13.1 Introduction

13.2 File concept

13.3 Access methods

13.4 Directory structure

13.5 Protection

13.6 Memory-mapped files

13.7 Summary

13.8 Practice exercises

13.9 Exercises

13.10 Further reading

13.11 Bibliography

14.1 Introduction

14.2 File-system structure

14.3 File-system operations

14.4 Directory implementation

14.5 Allocation methods

14.6 Free-space management

14.7 Efficiency and performance

14.8 Recovery

14.9 Example: the WAFL file system

14.10 Summary

14.11 Practice exercises

14.12 Exercises

14.13 Programming problems

14.14 Further reading

14.15 Bibliography

15.1 Introduction

15.2 File systems

15.3 File-system mounting

15.4 Partitions and mounting

15.5 File sharing

15.6 Virtual file systems

15.7 Remote file systems

15.8 Consistency semantics

15.9 NFS

15.10 Summary

15.11 Practice exercises

15.12 Exercises

15.13 Further reading

15.14 Bibliography

16.1 Introduction

16.2 The security problem

16.3 Program threats

16.4 System and network threats

16.5 Cryptography as a security tool

16.6 User authentication

16.7 Implementing security defenses

16.8 An Example: Windows 10

16.9 Summary

16.10 Exercises

16.11 Further reading

16.12 Bibliography

17.1 Introduction

17.2 Goals of protection

17.3 Principles of protection

17.4 Protection rings

17.5 Domain of protection

17.6 Access matrix

17.7 Implementation of the access matrix

17.8 Revocation of access rights

17.9 Role-based access control

17.10 Mandatory access control (MAC)

17.11 Capability-based systems

17.12 Other protection improvement methods

17.13 Language-based protection

17.14 Summary

17.15 Practice exercises

17.16 Exercises

17.17 Further reading

17.18 Bibliography

18.1 Introduction

18.2 Overview

18.3 History

18.4 Benefits and features

18.5 Building blocks

18.6 Types of VMs and their implementations

18.7 Virtualization and operating-system components

18.8 Examples

18.9 Virtualization research

18.10 Summary

18.11 Exercises

18.12 Further reading

18.13 Bibliography

19.1 Introduction

19.2 Advantages of distributed systems

19.3 Network structure

19.4 Communication structure

19.5 Network and distributed operating systems

19.6 Design issues in distributed systems

19.7 Distributed file systems

19.8 DFS naming and transparency

19.9 Remote file access

19.10 Final thoughts on distributed file systems

19.11 Summary

19.12 Practice exercises

19.13 Exercises

19.14 Further reading

19.15 Bibliography

20.1 Introduction

20.2 Linux history

20.3 Design principles

20.4 Kernel modules

20.5 Process management

20.6 Scheduling

20.7 Memory management

20.8 File systems

20.9 Input and output

20.10 Interprocess communication

20.11 Network structure

20.12 Security

20.13 Summary

20.14 Practice exercises

20.15 Exercises

20.16 Further reading

20.17 Bibliography

21.1 Introduction

21.2 History

21.3 Design principles

21.4 System components

21.5 Terminal services and fast user switching

21.6 File system

21.7 Networking

21.8 Programmer interface

21.9 Summary

21.10 Practice exercises

21.11 Exercises

21.12 Further reading

21.13 Bibliography

22.1 Introduction

22.2 Feature migration

22.3 Early systems

22.4 Atlas

22.5 XDS-940

22.6 THE

22.7 RC 4000

22.8 CTSS

22.9 MULTICS

22.10 IBM OS/360

22.11 TOPS-20

22.12 CP/M and MS/DOS

22.13 Macintosh operating system and windows

22.14 Mach

22.15 Capability-based systems—hydra and CAP

22.16 Other systems

22.17 Exercises

   22.18 Further reading

   22.19 Bibliography

23.1 Introduction

23.2 History

23.3 Design principles

23.4 System components

23.5 Terminal services and fast user switching

23.6 File system

23.7 Networking

23.8 Programmer interface

23.9 Summary

23.10 Practice exercises

23.11 Exercises

23.12 Further reading

23.13 Bibliography

24.1 Introduction

24.2 UNIX history

24.3 Design principles

24.4 Programmer interface

24.5 User interface

24.6 Process management

24.7 Memory management

24.8 File system

24.9 I/O system

24.10 Interprocess communication

24.11 Summary

24.12 Exercises

24.13 Further reading

24.14 Bibliography

25.1 Introduction

25.2 History of the mach system

25.3 Design principles

25.4 System components

25.5 Process management

25.6 Interprocess communication

25.7 Memory management

25.8 Programmer interface

25.9 Summary

25.10 Exercises

25.11 Further reading

25.12 Bibliography

Authors

Abraham Silberschatz, Ph.D.
Yale University

Greg Gagne, Ph.D.
Westminster College

Peter B. Galvin, Ph.D.
Starfish Storage

zyVersions are leading print titles converted and adapted to zyBooks’ interactive learning platform, allowing for a quick and easy transition to an engaging digital experience for instructors and students.

What You’ll Find In This zyVersion

The Same Text with More Action

Based on the tenth edition of Operating System Concepts, this zyVersion contains the complete text of the original plus new interactive animations and learning questions to engage the student.

  • 34 animations
  • Over 300 learning questions embedded into the text
  • The ability to rearrange and add your own content
  • The ability to combine with other zyBooks and zyVersions

Instructors: Interested in evaluating this zyVersion for your class? Sign up for a Free Trial and check out the first chapter of any zyBook or zyVersion today!

The zyVersions Approach

zyVersions utilize the “Say, Show, Ask” approach.

Say: We use the trusted content of the textbook to explain concepts and teach students subject matter.

Show: Through animations and learning questions students can see concepts come to life.

Ask: Our built-in learning questions and homework with instant feedback encourage interactivity.

Silberchatz Operating Systems Concepts 10e