Argomenti  Parte A

CHAPTER 1 INTRODUCTION 1

        1.1. WHAT IS AN OPERATING SYSTEM? 3
                1.1.1. The Operating System as an Extended Machine 3
                1.1.2. The Operating System as a Resource Manager 5

        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

CHAPTER 2 PROCESSES AND THREADS 71

        2.1. PROCESSES 71
                2.1.1. The Process Model 72
                2.1.2. Process Creation 73
                2.1.3. Process Termination 75
                2.1.4. Process Hierarchies 76
                2.1.5. Process States 77
                2.1.6. Implementation of Processes 79

        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
 

CHAPTER 3 DEADLOCKS 159

        3.1. RESOURCES 160
                3.1.1. Preemptable and Nonpreemptable Resources 160
                3.1.2. Resource Acquisition 161

        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
 

CHAPTER 10 CASE STUDY 1: UNIX AND LINUX 671

        10.3. PROCESSES IN UNIX 690
                10.3.1. Fundamental Concepts 690
                10.3.2. Process Management System Calls in UNIX 692
                10.3.3. Implementation of Processes in UNIX 699
 
 

CHAPTER 11 CASE STUDY 2: WINDOWS 2000 763

          Cenni a Win 32 API (pag. 722),  Registry (pag. 774),
                         Hardware Abstraction Level (pag. 778-779 e 782),
                         Deferred Procedure Calls (pag 783),
                          Objects (pag. 787 e Fig. 11-10), e DLL (pag. 794)

        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