| |
| |
| |
Introduction | |
| |
| |
Computers and Software | |
| |
| |
General Systems Software | |
| |
| |
Resource Abstraction | |
| |
| |
Resource Sharing | |
| |
| |
Computers without System Software | |
| |
| |
Operating System Strategies | |
| |
| |
Batch Systems | |
| |
| |
Timesharing Systems | |
| |
| |
Personal Computers and Workstations | |
| |
| |
Process Control and Real-time Systems | |
| |
| |
Networks | |
| |
| |
The Genesis of Modern Operating Systems | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Using the Operating System | |
| |
| |
The Computational Model | |
| |
| |
File Resources | |
| |
| |
Other Resources | |
| |
| |
Processes | |
| |
| |
Initializing the Computational Environment | |
| |
| |
Executing Computations | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Programming Practice | |
| |
| |
| |
Operating Systems Organization | |
| |
| |
Factors in Operating System Design | |
| |
| |
Performance | |
| |
| |
Protection and Security | |
| |
| |
Correctness | |
| |
| |
Maintainability | |
| |
| |
Commercial Influence on Operating Systems | |
| |
| |
Standards and Open Systems | |
| |
| |
Basic Functions | |
| |
| |
Device Management | |
| |
| |
Process and Resource Management | |
| |
| |
Memory Management | |
| |
| |
File Management | |
| |
| |
Functional Organization | |
| |
| |
Basic Implementation Considerations | |
| |
| |
Supervisor and User Modes | |
| |
| |
Kernels | |
| |
| |
System Call Versus Message Passing | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Computer Organization | |
| |
| |
The von Neumann Architecture | |
| |
| |
The Central Processing Unit | |
| |
| |
The Arithmetical-Logical Unit | |
| |
| |
The Control Unit | |
| |
| |
Memory | |
| |
| |
Devices | |
| |
| |
General Device Characteristics | |
| |
| |
Device Controllers | |
| |
| |
Device Drivers | |
| |
| |
Interrupts | |
| |
| |
The Mode Bit Revisited: The Trap Instruction | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Programming Practice | |
| |
| |
| |
Device Management | |
| |
| |
Device Management Approaches | |
| |
| |
I/O System Organization | |
| |
| |
Direct I/O with Polling | |
| |
| |
Interrupt-Driven I/O | |
| |
| |
Memory Mapped I/O | |
| |
| |
Direct Memory Access | |
| |
| |
Buffering | |
| |
| |
Device Drivers | |
| |
| |
The Device Driver Interface | |
| |
| |
CPU-Device Interactions | |
| |
| |
I/O Optimization | |
| |
| |
Some Device Management Scenarios | |
| |
| |
Serial Communications | |
| |
| |
Sequentially Accessed Storage Devices | |
| |
| |
Randomly Accessed Devices | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Programming Practice | |
| |
| |
| |
Process Management | |
| |
| |
The Operating System View of a Process | |
| |
| |
Process Descriptors | |
| |
| |
Execution Monitoring and Control | |
| |
| |
Managing Resources | |
| |
| |
The Address Space | |
| |
| |
Generating the Address Space | |
| |
| |
Executing the Program | |
| |
| |
Maintaining Consistency in the Address Space | |
| |
| |
Managing Resources | |
| |
| |
Process State Diagram | |
| |
| |
The Resource Manager | |
| |
| |
Creating Processes | |
| |
| |
Threads Revisited | |
| |
| |
Process Structuring | |
| |
| |
Refining the Process Manager | |
| |
| |
Specializing Resource Allocation Strategies | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Exploring Linux | |
| |
| |
Programming Practice | |
| |
| |
| |
Scheduling | |
| |
| |
Scheduling Mechanisms | |
| |
| |
The Process Scheduler Organization | |
| |
| |
Voluntary CPU Sharing | |
| |
| |
Involuntary CPU Sharing | |
| |
| |
Strategy Selection | |
| |
| |
Nonpreemptive Strategies | |
| |
| |
First-Come-First-Served (FCFS) | |
| |
| |
Shortest Job Next (SJN) | |
| |
| |
Priority Scheduling | |
| |
| |
Deadline Scheduling | |
| |
| |
Preemptive Strategies | |
| |
| |
Round Robin (RR) | |
| |
| |
Multiple-Level Queues | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Exploring Linux | |
| |
| |
Programming Practice | |
| |
| |
| |
Basic Synchronization Principles | |
| |
| |
Interacting Processes | |
| |
| |
Critical Sections | |
| |
| |
Deadlock | |
| |
| |
Coordinating Processes | |
| |
| |
Semaphores | |
| |
| |
Principles of Operation | |
| |
| |
Practical Considerations | |
| |
| |
Shared Memory Multiprocessors | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Programming Practice | |
| |
| |
| |
High-Level Synchronization | |
| |
| |
Alternative Synchronization Primitives | |
| |
| |
AND Synchronization | |
| |
| |
Events | |
| |
| |
Monitors | |
| |
| |
Principles of Operation | |
| |
| |
Condition Variables | |
| |
| |
Interprocess Communication | |
| |
| |
Mailboxes | |
| |
| |
Message Protocols | |
| |
| |
Send and Receive Operations | |
| |
| |
Explicitly Ordering Event Execution | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Programming Practice | |
| |
| |
| |
Deadlock | |
| |
| |
Background | |
| |
| |
Prevention | |
| |
| |
Avoidance | |
| |
| |
Detection and Recovery | |
| |
| |
Manual Deadlock Management | |
| |
| |
A System Deadlock Model | |
| |
| |
Prevention | |
| |
| |
Hold and Wait | |
| |
| |
Circular Wait | |
| |
| |
Allowing Preemption | |
| |
| |
Avoidance | |
| |
| |
The Banker's Algorithm | |
| |
| |
Detection and Recovery | |
| |
| |
Serially Reusable Resources | |
| |
| |
Consumable Resources | |
| |
| |
General Resource Systems | |
| |
| |
Recovery | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Memory Management | |
| |
| |
The Basics | |
| |
| |
Requirements on the Primary Memory | |
| |
| |
Mapping the Address Space to the Primary Memory | |
| |
| |
Dynamic Memory for Data Structures | |
| |
| |
Memory Allocation | |
| |
| |
Fixed Partition Memory Strategies | |
| |
| |
Variable Partition Memory Strategies | |
| |
| |
Contemporary Allocation Strategies | |
| |
| |
Dynamic Address Relocation | |
| |
| |
Run Time Bound Checking | |
| |
| |
Memory Manager Strategies | |
| |
| |
Swapping | |
| |
| |
Virtual Memory | |
| |
| |
Shared Memory Multiprocessors | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Programming Practice | |
| |
| |
| |
Virtual Memory | |
| |
| |
Address Translation | |
| |
| |
Address Space Mapping | |
| |
| |
Segmentation and Paging | |
| |
| |
Paging | |
| |
| |
Virtual Address Translation | |
| |
| |
Static Paging Algorithms | |
| |
| |
Demand Paging Algorithms | |
| |
| |
Stack Algorithms | |
| |
| |
Implementation | |
| |
| |
Dynamic Paging Algorithms | |
| |
| |
The Working Set Algorithm | |
| |
| |
Implementation | |
| |
| |
Segmentation | |
| |
| |
Address Translation | |
| |
| |
Implementation | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
File Management | |
| |
| |
Files | |
| |
| |
Low-Level Files | |
| |
| |
Structured Files | |
| |
| |
Database Management Systems | |
| |
| |
Multimedia Storage | |
| |
| |
Low-Level File Implementations | |
| |
| |
Open and Close | |
| |
| |
Block Management | |
| |
| |
Reading and Writing the Byte Stream | |
| |
| |
Supporting Other Storage Abstractions | |
| |
| |
Structured Sequential Files | |
| |
| |
Indexed Sequential Files | |
| |
| |
Database Management Systems | |
| |
| |
Multimedia Documents | |
| |
| |
Directories | |
| |
| |
Directory Structures | |
| |
| |
Directory Implementation | |
| |
| |
Opening a File in a Hierarchical Directory | |
| |
| |
Mounting Removable File Systems | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Protection and Security | |
| |
| |
Fundamentals | |
| |
| |
Policy and Mechanism | |
| |
| |
Implementing Policy and Mechanism | |
| |
| |
Authentication | |
| |
| |
Authorization | |
| |
| |
Encryption | |
| |
| |
Authentication | |
| |
| |
User Authentication | |
| |
| |
Authentication in Networks | |
| |
| |
Internal Access Authorization | |
| |
| |
The Basic Model | |
| |
| |
Changing the Protection State | |
| |
| |
Implementing Internal Authorization | |
| |
| |
Protection Domains | |
| |
| |
Implementing the Access Matrix | |
| |
| |
Access Control Lists | |
| |
| |
Capabilities | |
| |
| |
Cryptography | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Networks | |
| |
| |
From Computer Communications to Networks | |
| |
| |
Communication Subnetworks | |
| |
| |
Network Communication Protocols | |
| |
| |
The ISO OSI Network Architecture Model | |
| |
| |
The Evolution of Network Protocols | |
| |
| |
The Model | |
| |
| |
Low Level Protocols | |
| |
| |
The Physical Layer | |
| |
| |
The Data Link Layer | |
| |
| |
Contemporary Networks | |
| |
| |
The Network Layer | |
| |
| |
Addressing | |
| |
| |
Routing | |
| |
| |
Using the Network Layer | |
| |
| |
The Transport Layer | |
| |
| |
Communication Ports | |
| |
| |
Data Types | |
| |
| |
Reliable Communication | |
| |
| |
Using the Transport Layer | |
| |
| |
Naming | |
| |
| |
The Client-Server Model | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Remote Files | |
| |
| |
Sharing Information Across the Network | |
| |
| |
Explicit File Copying Systems | |
| |
| |
Implicit File Sharing | |
| |
| |
The Remote Storage Interface | |
| |
| |
Distributing the Work | |
| |
| |
Remote Disk Systems | |
| |
| |
The Remote Disk Operation | |
| |
| |
Reliability | |
| |
| |
The Future for Remote Disks | |
| |
| |
Remote File Systems | |
| |
| |
The General Architecture | |
| |
| |
Block Caching | |
| |
| |
Crash Recovery | |
| |
| |
File Level Caching | |
| |
| |
Directories and Their Implementations | |
| |
| |
File Names | |
| |
| |
Opening a File | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Distributed Systems | |
| |
| |
Distributing Process Management | |
| |
| |
Partitioning the Work | |
| |
| |
Supporting Partitioned Computation | |
| |
| |
General Process Management | |
| |
| |
Scheduling | |
| |
| |
Coordinating Processes | |
| |
| |
Message Passing | |
| |
| |
Message Passing Interfaces | |
| |
| |
Computing Paradigms | |
| |
| |
Remote Procedure Call | |
| |
| |
How Does it Work? | |
| |
| |
Implementing RPC | |
| |
| |
Distributed Memory Management | |
| |
| |
Remote Memory | |
| |
| |
Distributed Virtual Memory | |
| |
| |
Distributed Objects | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
| |
Strategies and Examples | |
| |
| |
General Organizational Issues | |
| |
| |
Software Organization | |
| |
| |
Managing Distributed Hardware | |
| |
| |
The Traditional UNIX Kernel | |
| |
| |
The Kernel | |
| |
| |
The Monolithic Organization | |
| |
| |
Conclusion | |
| |
| |
The LOCUS Operating System | |
| |
| |
The File System | |
| |
| |
Conclusion | |
| |
| |
Choices: An Object-Oriented Operating System | |
| |
| |
Frameworks | |
| |
| |
Using a Framework for the Memory Manager | |
| |
| |
Conclusion | |
| |
| |
The RC 4000 Nucleus | |
| |
| |
The Nucleus | |
| |
| |
Interprocess Communication | |
| |
| |
Conclusion | |
| |
| |
Microsoft Windows NT | |
| |
| |
The Microkernel | |
| |
| |
The Executive | |
| |
| |
Subsystems | |
| |
| |
Conclusion | |
| |
| |
The Mach Operating System | |
| |
| |
Process Management | |
| |
| |
Message Passing | |
| |
| |
Memory Management | |
| |
| |
Conclusion | |
| |
| |
The CHORUS Operating System | |
| |
| |
Process Management | |
| |
| |
Interprocess Communication | |
| |
| |
Memory Management | |
| |
| |
Conclusion | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Exploring Linux | |
| |
| |
Glossary | |
| |
| |
Bibliography | |
| |
| |
Index | |