| |
| |
| |
Introduction | |
| |
| |
| |
What is an Operating System? | |
| |
| |
| |
The Operating System as an Extended Machine | |
| |
| |
| |
The Operating System as a Resource Manager | |
| |
| |
| |
History of Operating Systems | |
| |
| |
| |
The First Generation | |
| |
| |
| |
The Second Generation | |
| |
| |
| |
The Third Generation | |
| |
| |
| |
The Fourth Generation | |
| |
| |
| |
Computer Hardware Review | |
| |
| |
| |
Processors | |
| |
| |
| |
Memory | |
| |
| |
| |
Disks | |
| |
| |
| |
Tapes | |
| |
| |
| |
I/O Devices | |
| |
| |
| |
Buses | |
| |
| |
| |
Booting the Computer | |
| |
| |
| |
The Operating System Zoo | |
| |
| |
| |
Mainframe Operating Systems | |
| |
| |
| |
Server Operating Systems | |
| |
| |
| |
Multiprocessor Operating Systems | |
| |
| |
| |
Personal Computer Operating Systems | |
| |
| |
| |
Handheld Computer Operating Systems | |
| |
| |
| |
Embedded Operating Systems | |
| |
| |
| |
Sensor Node Operating Systems | |
| |
| |
| |
Real-Time Operating Systems | |
| |
| |
| |
Smart Card Operating Systems | |
| |
| |
| |
Operating System Concepts | |
| |
| |
| |
Processes | |
| |
| |
| |
Address Spaces | |
| |
| |
| |
Files | |
| |
| |
| |
Input/Output | |
| |
| |
| |
Protection | |
| |
| |
| |
The Shell | |
| |
| |
| |
Ontogeny Recapitulates Phylogeny | |
| |
| |
| |
System Calls | |
| |
| |
| |
System Calls for Process Management | |
| |
| |
| |
System Calls for File Management | |
| |
| |
| |
System Calls for Directory Management | |
| |
| |
| |
Miscellaneous System Calls | |
| |
| |
| |
The Windows Win32 API | |
| |
| |
| |
Operating System Structure | |
| |
| |
| |
Monolithic Systems | |
| |
| |
| |
Layered Systems | |
| |
| |
| |
Microkernels | |
| |
| |
| |
Client-Server Model | |
| |
| |
| |
Virtual Machines | |
| |
| |
| |
Exokernels | |
| |
| |
| |
The World According to C | |
| |
| |
| |
The C Language | |
| |
| |
| |
Header Files | |
| |
| |
| |
Large Programming Projects | |
| |
| |
| |
The Model of Run Time | |
| |
| |
| |
Research on Operating Systems | |
| |
| |
| |
Outline of the Rest of This Book | |
| |
| |
| |
Metric Units | |
| |
| |
| |
Summary | |
| |
| |
| |
Processes and Threads | |
| |
| |
| |
Processes | |
| |
| |
| |
The Process Model | |
| |
| |
| |
Process Creation | |
| |
| |
| |
Process Termination | |
| |
| |
| |
Process Hierarchies | |
| |
| |
| |
Process States | |
| |
| |
| |
Implementation of Processes | |
| |
| |
| |
Modeling Multiprogramming | |
| |
| |
| |
Threads | |
| |
| |
| |
Thread Usage | |
| |
| |
| |
The Classical Thread Model | |
| |
| |
| |
POSIX Threads | |
| |
| |
| |
Implementing Threads in User Space | |
| |
| |
| |
Implementing Threads in the Kernel | |
| |
| |
| |
Hybrid Implementations | |
| |
| |
| |
Scheduler Activations | |
| |
| |
| |
Pop-Up Threads | |
| |
| |
| |
Making Single-Threaded Code Multithreaded | |
| |
| |
| |
Interprocess Communication | |
| |
| |
| |
Race Conditions | |
| |
| |
| |
Critical Regions | |
| |
| |
| |
Mutual Exclusion with Busy Waiting | |
| |
| |
| |
Sleep and Wakeup | |
| |
| |
| |
Semaphores | |
| |
| |
| |
Mutexes | |
| |
| |
| |
Monitors | |
| |
| |
| |
Message Passing | |
| |
| |
| |
Barriers | |
| |
| |
| |
Scheduling | |
| |
| |
| |
Introduction to Scheduling | |
| |
| |
| |
Scheduling in Batch Systems | |
| |
| |
| |
Scheduling in Interactive Systems | |
| |
| |
| |
Scheduling in Real-Time Systems | |
| |
| |
| |
Policy versus Mechanism | |
| |
| |
| |
Thread Scheduling | |
| |
| |
| |
Classical IPC Problems | |
| |
| |
| |
The Dining Philosophers Problem | |
| |
| |
| |
The Readers and Writers Problem | |
| |
| |
| |
Research on Processes and Threads | |
| |
| |
| |
Summary | |
| |
| |
| |
Memory Management | |
| |
| |
| |
No Memory Abstraction | |
| |
| |
| |
A Memory Abstraction: Address Spaces | |
| |
| |
| |
The Notion of an Address Space | |
| |
| |
| |
Swapping | |
| |
| |
| |
Managing Free Memory | |
| |
| |
| |
Virtual Memory | |
| |
| |
| |
Paging | |
| |
| |
| |
Page Tables | |
| |
| |
| |
Speeding Up Paging | |
| |
| |
| |
Page Tables for Large Memories | |
| |
| |
| |
Page Lacement Algorithms | |
| |
| |
| |
The Optimal Page Replacement Algorithm | |
| |
| |
| |
The Not Recently Used Page Replacement Algorithm | |
| |
| |
| |
The First-In, First-Out | |
| |
| |
| |
The Second Chance Page Replacement Algorithm | |
| |
| |
| |
The Clock Page Replacement Algorithm | |
| |
| |
| |
The Least Recently Used | |
| |
| |
| |
Simulating LRU in Software | |
| |
| |
| |
The Working Set Page Replacement Algorithm | |
| |
| |
| |
The WSClock Page Replacement Algorithm | |
| |
| |
| |
Summary of Page Replacement Algorithms | |
| |
| |
| |
Design Issues For Paging Systems | |
| |
| |
| |
Local versus Global Allocation Policies | |
| |
| |
| |
Load Control | |
| |
| |
| |
Page Size | |
| |
| |
| |
Separate Instruction and Data Spaces | |
| |
| |
| |
Shared Pages | |
| |
| |
| |
Shared Libraries | |
| |
| |
| |
Mapped Files | |
| |
| |
| |
Cleaning Policy | |
| |
| |
| |
Virtual Memory Interface | |
| |
| |
| |
Implementation Issues | |
| |
| |
| |
Operating System Involvement with Paging | |
| |
| |
| |
Page Fault Handling | |
| |
| |
| |
Instruction Backup | |
| |
| |
| |
Locking Pages in Memory | |
| |
| |
| |
Backing Store | |
| |
| |
| |
Separation of Policy and Mechanism | |
| |
| |
| |
Segmentation | |
| |
| |
| |
Implementation of Pure Segmentation | |
| |
| |
| |
Segmentation with Paging: MULTICS | |
| |
| |
| |
Segmentation with Paging: The Intel Pentium | |
| |
| |
| |
Research on Memory Management | |
| |
| |
| |
Summary | |
| |
| |
| |
File systems | |
| |
| |
| |
Files | |
| |
| |
| |
File Naming | |
| |
| |
| |
File Structure | |
| |
| |
| |
File Types | |
| |
| |
| |
File Access | |
| |
| |
| |
File Attributes | |
| |
| |
| |
File Operations | |
| |
| |
| |
An Example Program Using File System Calls | |
| |
| |
| |
Directories | |
| |
| |
| |
Single-Level Directory Systems | |
| |
| |
| |
Hierarchical Directory Systems | |
| |
| |
| |
Path Names | |
| |
| |
| |
Directory Operations | |
| |
| |
| |
File System Implementation | |
| |
| |
| |
File System Layout | |
| |
| |
| |
Implementing Files | |
| |
| |
| |
Implementing Directories | |
| |
| |
| |
Shared Files | |
| |
| |
| |
Log-Structured File Systems | |
| |
| |
| |
Journaling File Systems | |
| |
| |
| |
Virtual File Systems | |
| |
| |
| |
File System Management and Optimization | |
| |
| |
| |
Disk Space Management | |
| |
| |
| |
File System Backups | |
| |
| |
| |
File System Consistency | |
| |
| |
| |
File System Performance | |
| |
| |
| |
Defragmenting Disks | |
| |
| |
| |
Example File Systems | |
| |
| |
| |
CD-ROM File Systems | |
| |
| |
| |
The MS-DOS File System | |
| |
| |
| |
The UNIX V7 File System | |
| |
| |
| |
Research on File Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Input/Output | |
| |
| |
| |
Principles of I/O Hardware | |
| |
| |
| |
I/O Devices | |
| |
| |
| |
Device Controllers | |
| |
| |
| |
Memory-Mapped I/O | |
| |
| |
| |
Direct Memory Access | |
| |
| |
| |
Interrupts Revisited | |
| |
| |
| |
Principles of I/O Software | |
| |
| |
| |
Goals of the I/O Software | |
| |
| |
| |
Programmed I/O | |
| |
| |
| |
Interrupt-Driven I/O | |
| |
| |
| |
I/O Using DMA | |
| |
| |
| |
I/O Software Layers | |
| |
| |
| |
Interrupt Handlers | |
| |
| |
| |
Device Drivers | |
| |
| |
| |
Device-Independent I/O Software | |
| |
| |
| |
User-Space I/O Software | |
| |
| |
| |
Disks | |
| |
| |
| |
Disk Hardware | |
| |
| |
| |
Disk Formatting | |
| |
| |
| |
Disk Arm Scheduling Algorithms | |
| |
| |
| |
Error Handling | |
| |
| |
| |
Stable Storage | |
| |
| |
| |
Clocks | |
| |
| |
| |
Clock Hardware | |
| |
| |
| |
Clock Software | |
| |
| |
| |
Soft Timers | |
| |
| |
| |
User Interfaces: Keyboard, Mouse, Monitor | |
| |
| |
| |
Input Software | |
| |
| |
| |
Output Software | |
| |
| |
| |
Thin Clients | |
| |
| |
| |
Power Management | |
| |
| |
| |
Hardware Issues | |
| |
| |
| |
Operating System Issues: | |
| |
| |
| |
Application Program Issues | |
| |
| |
| |
Research on Input/Output | |
| |
| |
| |
Summary | |
| |
| |
| |
Deadlocks | |
| |
| |
| |
Resources | |
| |
| |
| |
Preemptable and Nonpreemptable Resources | |
| |
| |
| |
Resource Acquisition | |
| |
| |
| |
Introduction to Deadlocks | |
| |
| |
| |
Conditions for Resource Deadlocks | |
| |
| |
| |
Deadlock Modeling | |
| |
| |
| |
The Ostrich Algorithm | |
| |
| |
| |
Deadlock Detection and Recovery | |
| |
| |
| |
Deadlock Detection with One Resource of Each Type | |
| |
| |
| |
Deadlock Detection with Multiple Resources of Each Type | |
| |
| |
| |
Recovery from Deadlock | |
| |
| |
| |
Deadlock Avoidance | |
| |
| |
| |
Resource Trajectories | |
| |
| |
| |
Safe and Unsafe States | |
| |
| |
| |
The Banker's Algorithm for a Single Resource | |
| |
| |
| |
The Banker's Algorithm for Multiple Resources | |
| |
| |
| |
Deadlock Prevention | |
| |
| |
| |
Attacking the Mutual Exclusion Condition | |
| |
| |
| |
Attacking the Hold and Wait Condition | |
| |
| |
| |
Attacking the No Preemption Condition | |
| |
| |
| |
Attacking the Circular Wait Condition | |
| |
| |
| |
Other Issues | |
| |
| |
| |
Two-Phase Locking | |
| |
| |
| |
Communication Deadlocks | |
| |
| |
| |
Livelock | |
| |
| |
| |
Starvation | |
| |
| |
| |
Research on Deadlocks | |
| |
| |
| |
Summary | |
| |
| |
| |
Multimedia Operating Systems | |
| |
| |
| |
Introduction to Multimedia | |
| |
| |
| |
Multimedia Files | |
| |
| |
| |
Video Encoding | |
| |
| |
| |
Audio Encoding | |
| |
| |
| |
Video Compression | |
| |
| |
| |
The JPEG Standard | |
| |
| |
| |
The MPEG Standard | |
| |
| |
| |
Audio Compression | |
| |
| |
| |
Multimedia Process Scheduling | |
| |
| |
| |
Scheduling Homogeneous Processes | |
| |
| |
| |
General Real-Time Scheduling | |
| |
| |
| |
Rate Monotonic Scheduling | |
| |
| |
| |
Earliest Deadline First Scheduling | |
| |
| |
| |
Multimedia File System Parad | |
| |
| |
| |
VCR Control Functions | |
| |
| |
| |
Near Video on Demand | |
| |
| |
| |
Near Video on Demand with VCR Functions | |
| |
| |
| |
File placement | |
| |
| |
| |
Placing a File on a Single Disk | |
| |
| |
| |
Two Alternative File Organization Strategies | |
| |
| |
| |
Placing Files for Near Video on Demand | |
| |
| |
| |
Placing Multiple Files on a Single Disk | |
| |
| |
| |
Placing Files on Multiple Disks | |
| |
| |
| |
Caching | |
| |
| |
| |
Block Caching | |
| |
| |
| |
File Caching | |
| |
| |
| |
Disk Scheduling For Multimedia | |
| |
| |
| |
Static Disk Scheduling | |
| |
| |
| |
Dynamic Disk Scheduling | |
| |
| |
| |
Research on Multimedia | |
| |
| |
| |
Summary | |
| |
| |
| |
Multiple Processor Systems | |
| |
| |
| |
Multiprocessors | |
| |
| |
| |
Multiprocessor Hardware | |
| |
| |
| |
Multiprocessor Operating System Types | |
| |
| |
| |
Multiprocessor Synchronization | |
| |
| |
| |
Multiprocessor Scheduling | |
| |
| |
| |
Multicomputers | |
| |
| |
| |
Multicomputer Hardware | |
| |
| |
| |
Low-Level Communication Software | |
| |
| |
| |
User-Level Communication Software | |
| |
| |
| |
Remote Procedure Call | |
| |
| |
| |
Distributed Shared Memory | |
| |
| |
| |
Multicomputer Scheduling | |
| |
| |
| |
Load Balancing | |
| |
| |
| |
Virtualization | |
| |
| |
| |
Requirements for Virtualization | |
| |
| |
| |
Type 1 Hypervisors | |
| |
| |
| |
Type 2 Hypervisors | |
| |
| |
| |
Paravirtualization | |
| |
| |
| |
Memory Virtualization | |
| |
| |
| |
I/O Virtualization | |
| |
| |
| |
Virtual Appliances | |
| |
| |
| |
Virtual Machines on Multicore CPUs | |
| |
| |
| |
Licensing Issues | |
| |
| |
| |
Distributed Systems | |
| |
| |
| |
Network Hardware | |
| |
| |
| |
Network Services and Protocols | |
| |
| |
| |
Document-Based Middleware | |
| |
| |
| |
File System-Based Middleware | |
| |
| |
| |
Object-Based Middleware | |
| |
| |
| |
Coordination-Based Middleware | |
| |
| |
| |
Research on Multiple Processor Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Security | |
| |
| |
| |
The Security Environment | |
| |
| |
| |
Threats | |
| |
| |
| |
Intruders | |
| |
| |
| |
Accidental Data Loss | |
| |
| |
| |
Basics of Cryptography | |
| |
| |
| |
Secret-Key Cryptography | |
| |
| |
| |
Public-Key Cryptography | |
| |
| |
| |
One-Way Functions | |
| |
| |
| |
Digital Signatures | |
| |
| |
| |
Trusted Platform Module | |
| |
| |
| |
Protection Mechanisms | |
| |
| |
| |
Protection Domains | |
| |
| |
| |
Access Control Lists | |
| |
| |
| |
Capabilities | |
| |
| |
| |
Trusted systems | |
| |
| |
| |
Trusted Computing Base | |
| |
| |
| |
Formal Models of Secure Systems | |
| |
| |
| |
Multilevel Security | |
| |
| |
| |
Covert Channels | |
| |
| |
| |
Authentication | |
| |
| |
| |
Authentication Using Passwords | |
| |
| |
| |
Authentication Using a Physical Object | |
| |
| |
| |
Authentication Using Biometrics | |
| |
| |
| |
Insider Attacks | |
| |
| |
| |
Logic Bombs | |
| |
| |
| |
Trap Doors | |
| |
| |
| |
Login Spoofing | |
| |
| |
| |
Exploiting Code Bugs | |
| |
| |
| |
Buffer Overflow Attacks | |
| |
| |
| |
Format String Attacks | |
| |
| |
| |
Return to libc Attacks | |
| |
| |
| |
Integer Overflow Attacks | |
| |
| |
| |
Code Injection Attacks | |
| |
| |
| |
Privilege Escalation Attacks | |
| |
| |
| |
Malware | |
| |
| |
| |
Trojan Horses | |
| |
| |
| |
Viruses | |
| |
| |
| |
Worms | |
| |
| |
| |
Spyware | |
| |
| |
| |
Rootkits | |
| |
| |
| |
Defenses | |
| |
| |
| |
Firewalls | |
| |
| |
| |
Antivirus and Anti-Antivirus Techniques | |
| |
| |
| |
Code Signing | |
| |
| |
| |
Jailing | |
| |
| |
| |
Model-Based Intrusion Detection | |
| |
| |
| |
Encapsulating Mobile Code | |
| |
| |
| |
Java Security | |
| |
| |
| |
Research on Security | |
| |
| |
| |
Summary | |
| |
| |
| |
Case Study 1: Linux | |
| |
| |
| |
History of Unix and Linux | |
| |
| |
| |
UNICS | |
| |
| |
| |
PDP-11 UNIX | |
| |
| |
| |
Portable UNIX | |
| |
| |
| |
Berkeley UNIX | |
| |
| |
| |
Standard UNIX | |
| |
| |
| |
MINIX | |
| |
| |
| |
Linux | |
| |
| |
| |
Overview of Linux | |
| |
| |
| |
Linux Goals | |
| |
| |
| |
Interfaces to Linux | |
| |
| |
| |
The Shell | |
| |
| |
| |
Linux Utility Programs | |
| |
| |
| |
Kernel Structure | |
| |
| |
| |
Processes in Linux | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Process Management System Calls in Linux | |
| |
| |
| |
Implementation of Processes and Threads in Linux | |
| |
| |
| |
Scheduling in Linux | |
| |
| |
| |
Booting Linux | |
| |
| |
| |
Memory Management in Linux | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Memory Management System Calls in Linux | |
| |
| |
| |
Implementation of Memory Management in Linux | |
| |
| |
| |
Paging in Linux | |
| |
| |
| |
Input/Output in Linux | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Networking | |
| |
| |
| |
Input/Output System Calls in Linux | |
| |
| |
| |
Implementation of Input/Output in Linux | |
| |
| |
| |
Modules in Linux | |
| |
| |
| |
The Linux File System | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
File System Calls in Linux | |
| |
| |
| |
Implementation of the Linux File System | |
| |
| |
| |
NFS: The Network File System | |
| |
| |
| |
Security in Linux | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Security System Calls in Linux | |
| |
| |
| |
Implementation of Security in Linux | |
| |
| |
| |
Summary | |
| |
| |
| |
Case study 2: Windows Vista | |
| |
| |
| |
History of Windows Vista | |
| |
| |
| |
1980s: MS-DOS | |
| |
| |
| |
1990s: MS-DOS-based Windows | |
| |
| |
| |
2000s: NT-based Windows | |
| |
| |
| |
Windows Vista | |
| |
| |
| |
Programming Windows Vista | |
| |
| |
| |
The Native NT Application Programming Interface | |
| |
| |
| |
The Win32 Application Programming Interface | |
| |
| |
| |
The Windows Registry | |
| |
| |
| |
System Structure | |
| |
| |
| |
Operating System Structure | |
| |
| |
| |
Booting Windows Vista | |
| |
| |
| |
Implementation of the Object Manager | |
| |
| |
| |
Subsystems, DLLs, and User-mode Services | |
| |
| |
| |
Processes and Threads in Windows Vista | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Job, Process, Thread and Fiber Management API Calls | |
| |
| |
| |
Implementation of Processes and Threads | |
| |
| |
| |
Memory Management | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Memory Management System Calls | |
| |
| |
| |
Implementation of Memory Management | |
| |
| |
| |
Caching in Windows Vista | |
| |
| |
| |
Input/Output in Windows Vista | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Input/Output API Calls | |
| |
| |
| |
Implementation of I/O | |
| |
| |
| |
The Windows NT File System | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Implementation of the NT File System | |
| |
| |
| |
Security in Windows Vista | |
| |
| |
| |
Fundamental Concepts | |
| |
| |
| |
Security API Calls | |
| |
| |
| |
Implementation of Security | |
| |
| |
| |
Summary | |
| |
| |
| |
Case Study 3: Symbian OS | |
| |
| |
| |
The History of Symbian OS | |
| |
| |
| |
Symbian OS Roots: Psion and EPOC | |
| |
| |
| |
Symbian OS Version 6 | |
| |
| |
| |
Symbian OS Version 7 | |
| |
| |
| |
Symbian OS Today | |
| |
| |
| |
An Overview of Symbian OS | |
| |
| |
| |
Object Orientation | |
| |
| |
| |
Microkernel Design | |
| |
| |
| |
The Symbian OS Nanokernel | |
| |
| |
| |
Client/Server Resource Access | |
| |
| |
| |
Features of a Larger Operating System | |
| |
| |
| |
Communication and Multimedia | |
| |
| |
| |
Processes and Threads in Symbian OS | |
| |
| |
| |
Threads and Nanothreads | |
| |
| |
| |
Processes | |
| |
| |
| |
Active Objects | |
| |
| |
| |
Interprocess Communication | |
| |
| |
| |
Memory Management | |
| |
| |
| |
Systems with No Virtual Memory | |
| |
| |
| |
How Symbian OS Addresses Memory | |
| |
| |
| |
Input and Output | |
| |
| |
| |
Device Drivers | |
| |
| |
| |
Kernel Extensions | |
| |
| |
| |
Direct Memory Access | |
| |
| |
| |
Special Case: Storage Media | |
| |
| |
| |
Blocking I/O | |
| |
| |
| |
Removable Media | |
| |
| |
| |
Storage Systems | |
| |
| |
| |
File systems for Mobile Devices | |
| |
| |
| |
Symbian OS File systems | |
| |
| |
| |
File system Security and Protection | |
| |
| |
| |
Security in Symbian OS | |
| |
| |
| |
Communication in Symbian OS | |
| |
| |
| |
Basic Infrastructure | |
| |
| |
| |
A Closer Look at the Infrastructure | |
| |
| |
| |
Summary | |
| |
| |
| |
Operating Systems Design | |
| |
| |
| |
The Nature of the Design Problem | |
| |
| |
| |
Goals | |
| |
| |
| |
Why is it Hard to Design an Operating System? | |
| |
| |
| |
Interface Design | |
| |
| |
| |
Guiding Principles | |
| |
| |
| |
Paradigms | |
| |
| |
| |
The System Call Interface | |
| |
| |
| |
Implementation | |
| |
| |
| |
System Structure | |
| |
| |
| |
Mechanism versus Policy | |
| |
| |
| |
Orthogonality | |
| |
| |
| |
Naming | |
| |
| |
| |
Binding Time | |
| |
| |
| |
Static versus Dynamic Structures | |
| |
| |
| |
Top-Down versus Bottom-Up Implementation | |
| |
| |
| |
Useful Techniques | |
| |
| |
| |
Performance | |
| |
| |
| |
Why Are Operating Systems Slow? | |
| |
| |
| |
What Should Be Optimized? | |
| |
| |
| |
Space-Time Trade-offs | |
| |
| |
| |
Caching | |
| |
| |
| |
Hints | |
| |
| |
| |
Exploiting Locality | |
| |
| |
| |
Optimize the Common Case | |
| |
| |
| |
Project Management | |
| |
| |
| |
The Mythical Man Month | |
| |
| |
| |
Team Structure | |
| |
| |
| |
The Role of Experience | |
| |
| |
| |
No Silver Bullet | |
| |
| |
| |
Trends in Operating System Design | |
| |
| |
| |
Virtualization | |
| |
| |
| |
Multicore Chips | |
| |
| |
| |
Large Address Space Operating Systems | |
| |
| |
| |
Networking | |
| |
| |
| |
Parallel and Distributed Systems | |
| |
| |
| |
Multimedia | |
| |
| |
| |
Battery-Powered Computers | |
| |
| |
| |
Embedded Systems | |
| |
| |
| |
Sensor Nodes | |
| |
| |
| |
Summary | |
| |
| |
| |
Reading List and Bibliography | |
| |
| |
| |
Suggestions For Further Reading | |
| |
| |
| |
Introduction and General Works | |
| |
| |
| |
Processes and Threads | |
| |
| |
| |
Memory Management | |
| |
| |
| |
Input/Output | |
| |
| |
| |
File Systems | |
| |
| |
| |
eadlocks | |
| |
| |
| |
Multimedia Operating Systems | |
| |
| |
| |
Multiple Processor Systems | |
| |
| |
| |
ecurity | |
| |
| |
| |
Linux | |
| |
| |
| |
Windows Vista | |
| |
| |
| |
The Symbian OS | |
| |
| |
| |
Design Principles | |
| |
| |
| |
Alphabetical Bibliography | |
| |
| |
Index | |