1. Basic Concepts of Operating Systems
1.1 Introduction
1.2 Computer Systems
1.3 Operating Systems
1.4 Categories of Operating Systems
1.5 Brief History of Operating Systems
1.6 Contemporary Operating Systems
1.7 Summary
1.8 Exercises and Questions
2. Processes and Threads
2.1 Introduction
2.2 Processes
2.3 Treads
2.4 Multiprogramming
2.5 Summary
2.6 Exercises and Questions
3. System Performance and Models
3.1 Introduction
3.2 Simple Models of Computer Systems
3.3 Performance of Computer Systems
3.4 Simulation Models
3.5 A Model of the Simple Batch System
3.6 System Capacity and Bottleneck
3.7 Summary
3.8 Exercises and Questions
4. Systems with Multiprogramming
4.1 Introduction
4.2 Systems with Multiple Stations
4.3 Studying Systems with Multiprogramming
4.4 Summary
4.5 Exercises and Questions
5. CPU Scheduling
5.1 Introduction
5.2 General Types of Scheduling
5.3 CPU Scheduling Concepts
5.4 CPU Scheduling Policies
5.5 Multilevel Queues and Multiple Processors
5.6 Summary
5.7 Exercises and Questions
6. Synchronization Principles
6.1 Introduction
6.2 Basic Synchronization Principles
6.3 Approaches for Implementing Synchronization
6.4 Semaphores
6.5 Synchronization with Semaphores
6.6 Synchronization Case Studies
6.7 Monitors
6.8 Interprocess Communications (IPC)
6.9 Atomic Transactions
6.10 Summary
6.11 Exercise and Questions
7. Deadlocks
7.1 Introduction
7.2 Basic Principles of Deadlock
7.3 The Five Dining Philosophers
7.4 Methods for Handling Deadlock
7.5 Deadlock Prevention
7.6 Deadlock Avoidance
7.7 Deadlock Detection and Recovery
7.8 Summary
7.9 Exercises and Questions
8. File Management
8.1 Introduction
8.2 Files
8.3 Access Methods
8.4 Directory Functions
8.5 File Space Allocation
8.6 Real World Systems
8.7 Virtual File System
8.8 Removable Media
8.9 The Future is Now
8.10 Summary
8.11 Exercises and Questions
9. The I/O System
9.1 Introduction
9.2 I/O Hardware
9.3 Device I/O
9.4 I/O Performance Optimization
9.5 Disk I/O Scheduling
9.6 System Configuration
9.7 Disk Scheduling Simulation Model
9.8 Summary
9.9 Exercises and Questions
10. Memory Management
10.1 Introduction
10.2 Process Address Space
10.3 Contiguous Memory Allocation
10.4 Non-contiguous Memory Allocation
10.5 Virtual Memory
10.6 Paging with Virtual Memory
10.7 Paging Algorithms
10.8 Thrashing
10.9 Summary
10.10 Exercises and Questions
11. Security and Protection
11.1 Introduction
11.2 Problems of Security
11.3 Security and Protection Components
11.4 System Vulnerabilities
11.5 Invasive and Malicious Software
11.6 Defending the System and the User
11.7 Intrusion Detection Management
11.8 Security and Privacy
11.9 Secure Systems vs. Systems Security
11.10 Summary
11.11 Exercises and Questions
12. Firewalls and Network Security
12.1 Introduction
12.2 Motivation
12.3 The TCP/IP Communication Protocol
12.4 The Medium of Internet Communication
12.5 Packets, the OSI protocol stack, Firewalls
12.6 Attack and Defense Scenarios
12.7 The Modeling
12.8 Inter-process Socket Communication
12.9 Distributed File System WallsOfFire Software
12.10 External Attack and Defense Scenarios
12.11 Summary
12.12 Exercises and Questions
Appendix A: Introduction to Using Linux
Appendix B: Java and Posix Threads
Appendix C: The Java Modeling Framework
Appendix D: Psim3
Appendix E: Overview of Probability Theory
Appendix F: Using the C++ Models