Operating Systems provides an understanding of contemporary operating system concepts by integrating the principles behind the design of all operating systems with how they are put into practice in the real world. Throughout, Gary Nutt provides a complete discussion of operating concepts and supplements this with real code examples, algorithms, and discussions about implementation issues. The book also includes many lab exercises that provide students with the opportunity to practice with Linux, UNIX, and Windows.
Computers and Software.
Operating System Strategies.
2. Using the Operating System.
The Programmer's Abstract Machine.
Processes and Threads.
Writing Concurrent Programming.
Lab Exercise: A Simple Shell.
Lab Exercise: A Multithreaded Application.
3. Operating System Organization.
General Implementation Considerations.
Contemporary OS Kernels.
Lab Exercise: Observing OS Behavior.
4. Computer Organization.
The von Neumann Architecture.
The Central Processing Unit.
The Primary (Executable) Memory.
Conventional Contemporary Computers.
Multiprocessors and Parallel Computers.
5. Device Management.
The I/O System.
Device Manager Design.
Device Class Characteristics.
Lab Exercise: A Floppy Disk Driver.
6. Implementing Processes, Threads, and Resources.
The Task at Hand.
The Hardware Process.
The Abstract Machine Interface.
The Process Abstraction.
The Thread Abstraction.
Generalizing Process Management Policies.
Lab Exercise: Kernel Timers.
Lab Exercise: Manipulating Kernel Objects.
Implementing the Scheduler.
Lab Exercise: Analyzing the Round Robin Scheduling.
8. Basic Synchronization Principles.
Evolving from the Classic Solution.
Semaphores: The Basis of Modern Solutions.
Synchronization in Shared Memory Multiprocessors.
Lab Exercise: Bounded Buffer Problem.
9. High-Level Synchronization and Interprocess Communication.
Alternative Synchronization Primitives.
Lab Exercise: Using Pipes.
Lab Exercise: Refining the Shell.
A System Deadlock Model.
Detection and Recovery.
11. Memory Management.
The Address Space Abstraction.
Dynamic Address Space Binding.
Modern Memory Manager Strategies.
Lab Exercise: Using Shared Memory.
12. Virtual Memory.
The Task at Hand.
Static Paging Algorithms.
Dynamic Paging Algorithms.
Lab Exercise: Memory-Mapped Files.
13. File Management.
The Task at Hand.
Low-Level File Implementations.
Supporting High-Level File Abstractions.
Lab Exercise: A Simple File Manager.
14. Protection and Security.
From Computer Communications to Networks.
The ISO OSI Network Architecture Model.
Media Access Control (MAC) Protocols.
The Network Layer.
The Transport Layer.
Using the Transport Layer.
Lab Exercise: Using TCP/IP.
16. Remote Files.
Sharing Information Across the Network.
Remote Disk Systems.
Remote File Systems.
Directory Systems and their Implementation.
17. Distributed Computing.
Distributed OS Mechanisms.
Distributed Primary Memory.
Remote Procedure Call.
Distributing Process Management.
Lab Exercise: Using Remote Procedure Call.
18. Distributed Programming Runtime Systems.
Supporting Distributed Software and Middleware.
Classic Distributed Application Programs.
Middleware Support for Classic Distributed Programming.
Distributed Programming on the Web.
Middleware Support for Mobile Code.
19. Design Strategies.
Extensive Nucleus or Microkernel Organization.
Operating Systems for Distributed Systems.
20. The LINUX Kernel.
The LINUX Kernel.
Modules and Device Management.
Process and Resource Management.
21. The Windows NT/2000XP Kernel.
The NT Kernel.
The NT Executive.
Kernel Local Procedure Calls and IPC.