1.2. HISTORY OF OPERATING
SYSTEMS 6
1.2.1. The First Generation (1945-55) 6
1.2.2. The Second Generation (1955-65) 7
1.2.3. The Third Generation (1965-1980) 9
1.2.4. The Fourth Generation (1980-Present) 13
1.4. COMPUTER HARDWARE
REVIEW (parzialmente)
1.4.2. Memory (solo pagg. 26-27-28)
1.4.3. I/O Devices 28
1.5. OPERATING SYSTEM CONCEPTS
1.5.1. Processes (solo definizione di processo a pag. 34)
1.6. SYSTEM CALLS (pag. 44-48)
1.6.1. System Calls for Process Management 48
1.7. OPERATING SYSTEM STRUCTURE
56
1.7.1. Monolithic Systems 56
1.7.2. Layered Systems 57
1.7.3. Virtual Machines 59
2.2. THREADS 81
2.2.1. The Thread Model 81
2.2.2. Thread Usage 85
2.2.3. Implementing Threads in User Space 90
2.2.4. Implementing Threads in the Kernel 93
2.2.5. Hybrid Implementations 94
2.3. INTERPROCESS COMMUNICATION
100
2.3.1. Race Conditions 100
2.3.2. Critical Regions 102
2.3.3. Mutual Exclusion with Busy Waiting 103
2.3.4. Sleep and Wakeup 108
2.3.5. Semaphores 110
2.3.6. Mutexes (solo pag. 113)
2.3.7. Monitors 115
2.3.8. Message Passing 119
2.4. CLASSICAL IPC PROBLEMS
124
2.4.1. The Dining Philosophers Problem 125
2.4.2. The Readers and Writers Problem 128
2.4.3. The Sleeping Barber Problem 129
2.5. SCHEDULING 132
2.5.1. Introduction to Scheduling 132
2.5.2. Scheduling in Batch Systems 138
2.5.3. Scheduling in Interactive Systems 142
2.5.5. Policy versus Mechanism 149
2.5.6. Thread Scheduling 150
3.2. INTRODUCTION TO DEADLOCKS
163
3.2.1. Conditions for Deadlock 164
3.2.2. Deadlock Modeling 164
3.3. THE OSTRICH ALGORITHM 167
3.4. DEADLOCK DETECTION AND
RECOVERY 168
3.4.1. Deadlock Detection with One Resource of Each Type 168
3.4.2. Deadlock Detection with Multiple Resource of Each Type 171
3.4.3. Recovery from Deadlock 173
3.5. DEADLOCK AVOIDANCE 175
3.5.1. Resource Trajectories 175
3.5.2. Safe and Unsafe States 176
3.5.3. The Banker's Algorithm for a Single Resource 178
3.5.4. The Banker's Algorithm for Multiple Resources 179
3.6. DEADLOCK PREVENTION
180
3.6.1. Attacking the Mutual Exclusion Condition 180
3.6.2. Attacking the Hold and Wait Condition 181
3.6.3. Attacking the No Preemption Condition 182
3.6.4. Attacking the Circular Wait Condition 182
3.7. OTHER ISSUES 183
3.7.1. Two-Phase Locking 183
3.7.2. Nonresource Deadlocks 184
3.7.3. Starvation 184
11.4. PROCESSES AND THREADS
IN WINDOWS 2000 796
11.4.1. Fundamental Concepts 796
11.4.2. Job, Process, Thread and Fiber Management API Calls 799
11.4.3. Implementation of Processes and Threads 802