Table of Contents to Operating Systems by Charles Crowley

  1. Introduction
    1. Where does an operating system fit in?
      1. System levels
    2. What does an operating system do?
      1. Hardware Resources
      2. Resource Management
      3. Virtual Computers
    3. A Virtual Computer
      1. Virtual Processor
      2. Virtual Primary Memory
      3. Virtual Secondary Memory
      4. Virtual I/O
    4. Do We Need an Operating System?
    5. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    6. Problems
  2. The Hardware Interface
    1. The CPU
      1. General purpose registers
      2. Control Registers
      3. Processor Modes
      4. Instruction Set
      5. Machine instructions in C++ code
    2. Memory and Addressing
    3. Interrupts
    4. I/O Devices
      1. Disk controller
    5. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    6. Problems
  3. The Operating System Interface
    1. What Are System Calls?
      1. How to make a system call
      2. What is a system call interface?
    2. An Example System Call Interface
      1. System Call Overview
      2. Hierarchical File Naming Systems
      3. File and I/O System Calls
      4. Open Files
      5. Examples of File I/O
    3. Information and Meta-Information
    4. Naming Operating System Objects
    5. Devices as Files
      1. Unification of the File and Device Concepts
    6. The Process Concept
      1. Processes and Programs
      2. Process Management System Calls
      3. Process Hierarchy
    7. Communication Between Processes
      1. Communications Related System Calls
      2. Example of Interprocess Communication
    8. UNIX-style Process Creation
    9. Standard Input and Standard Output
    10. Communicating with Pipes
      1. Naming of Pipes and Message Queues
    11. Summary of System Call Interfaces
    12. Operating System Examples
      1. UNIX
      2. Mach
      3. MS/DOS
      4. Windows NT
      5. OS/2
      6. Macintosh OS
    13. *** The User Interface to an Operating System
      1. Why you need a shell
      2. The specification of the shell
      3. Implementing the shell
    14. Summary
      1. Terminology
      2. Review Questions
    15. Further Reading
    16. Problems
  4. Design Techniques I
    1. Operating Systems and Design
      1. The Design Process
      2. Relationship to Software Engineering
      3. A Design Example
      4. Learning design through operating systems
    2. Design Problems
      1. Design skills
      2. Design space
      3. Design levels
    3. Design Techniques
    4. Two Level Implementation
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    5. Interface Design
      1. Overview
      2. Motivation
      3. Applicability
      4. Consequences
      5. Related Design Techniques
    6. Connection in Protocols
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    7. Interactive and Programming Interfaces
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    8. Decomposition Patterns
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    9. Summary
      1. Terminology
      2. Review Questions
    10. Problems
  5. Implementing Processes
    1. The System Call Interface
    2. Implementation of a Simple Operating System
      1. Guide to the code
      2. The Architecture
      3. System Constants
      4. Global Data
    3. Implementation of Processes
      1. Process Creation
      2. Process States
      3. Process Dispatching
      4. The System Stack
      5. Timer Interrupts
    4. System Initialization
      1. The Initial Process
    5. Process Switching
      1. Switching Between Processes
      2. Flow of control
    6. System Call Interrupt Handling
      1. Copying Messages Between Address Spaces
    7. Program Error Interrupts
    8. Disk Driver Subsystem
      1. Communicating With the Disk Controller
    9. Implementation of Waiting
      1. Waiting For Messages
      2. Waiting Inside a System Call
      3. Suspending System Calls
    10. Flow of Control Through the Operating System
    11. Signaling in an Operating System
    12. Interrupts in the Operating System
    13. Operating Systems as Event and Table Managers
    14. Process Implementation
      1. The Process Table and Process Descriptors
    15. Examples of Process Implementation
    16. *** Monoprogramming
      1. Batch Systems
      2. Multiprogramming and I/O Overlap
      3. Personal Computer Systems
    17. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    18. Problems
  6. Parallel Systems
    1. Parallel Hardware
    2. An Operating System for a Two Processor System
      1. Using Two Separate Operating Systems
      2. Sharing the Operating System
    3. Race Conditions With a Shared Process Table
    4. Atomic Actions
      1. Hardware implementation of atomic actions
    5. A Multiprocessor Operating System
      1. The current process variable
      2. Dispatching With a Shared Process Table
      3. Busy Waiting
      4. Handling the Queues
      5. Grouping of Shared Variables
      6. A General Solution
      7. Using Two Process Tables
    6. Examples of Multiprocessor Operating Systems
    7. Threads
      1. The Thread Concept
      2. Thread System Calls
      3. Advantages of Threads
      4. Uses of Threads
      5. *** Thread Implementation
      6. Splitting the Process Concept
      7. Lightweight Processes and User Threads
      8. Examples of Threads
    8. *** Kernel-mode Processes
      1. Data structures for kernel-mode processes
      2. Process creation with kernel-mode processes
      3. Interrupt handlers for kernel-mode processes
      4. Switching processes for kernel-mode processes
      5. How the system stack is used
      6. Waiting with kernel-mode processes
      7. Dispatching with kernel-mode processes
      8. Kernel-mode only processes
      9. Trade-offs of kernel-mode processes
      10. Examples of kernel-mode processes
    9. Implementation of Mutual Exclusion
      1. First Solution: Disabling Interrupts
      2. Second Solution: Using ExchangeWord
      3. Third Solution: Software Solutions
      4. When To Use Each Solution
      5. Examples of implementing mutual exclusion
    10. *** Varieties of Computer Models
      1. Multiprogramming
      2. Multiprocessing
    11. Summary
      1. Terminology
      2. Review Questions
    12. Further Reading
    13. Problems
  7. Interprocess Communication Patterns
    1. Using Interprocess Communication
    2. Patterns of Interprocess Communication
      1. Competing and Cooperating
    3. Problems When Processes Compete
    4. Race Conditions and Atomic Actions
    5. New Message Passing System Calls
    6. IPC Pattern: Mutual Exclusion
      1. N Process Mutual Exclusion
      2. Voluntary Cooperation in Mutual Exclusion
    7. IPC Pattern: Signaling
    8. IPC Pattern: Rendezvous
      1. Many Process Rendezvous
    9. IPC Pattern: Producer-Consumer
      1. The Basic Producer-Consumer Pattern
      2. Limiting the Number of Buffers Used
      3. Multiple Producers and Consumers
    10. IPC Pattern: Client-Server
    11. *** IPC Pattern: Multiple Servers and Clients
    12. IPC Pattern: Database Access and Update
      1. Scheduling
      2. Priority
      3. Scheduling queues
    13. Review of Interprocess Communication Patterns
      1. Mutual Exclusion
      2. Signaling
      3. Rendezvous
      4. Producer-Consumer
      5. Client-Server
      6. Multiple Servers and Clients
      7. Database Access and Update
    14. A Physical Analogy
    15. Failure of Processes
      1. Recovery from failure
    16. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    17. Problems
  8. Processes
    1. Everyday Scheduling
      1. First-come, First-served Scheduling
      2. Shortest Job First Scheduling
      3. Highest Response Ratio Next Scheduling
      4. Priority Scheduling
      5. Deadline Scheduling
      6. Round-robin Scheduling
      7. Summary
    2. Preemptive Scheduling Methods
      1. Scheduling Overview
      2. Round-robin Scheduling
      3. Heavily Loaded Systems
      4. Two Queues
      5. Multiple Queues
    3. Policy versus Mechanism in Scheduling
    4. A Scheduling Example
    5. Scheduling in Real Operating Systems
      1. Scheduling in UNIX SVR4
      2. Scheduling in Solaris
      3. Scheduling in OS/2 2.0
      4. Scheduling in Windows NT 3.51
      5. Scheduling in Other Operating Systems
    6. Deadlock
    7. Why Deadlock is a Problem
    8. Conditions for Deadlock to Occur
    9. How To Deal With Deadlock
      1. Deadlock Prevention
      2. Deadlock Avoidance
      3. Deadlock Recovery
    10. A Sequence of Approaches to the Deadlock Problem
    11. Two Phase Locking
    12. Starvation
    13. Message Passing Variations
      1. Using PIDs as message addresses
      2. Message Passing With Nonblocking Receives
      3. Message Passing With Blocking Sends
      4. Remote procedure calls
    14. Synchronization
      1. Definition of Synchronization
      2. Review of Synchronization
    15. Separating Data Transfer and Synchronization
    16. Semaphores
      1. Specification of Semaphore Operations
      2. Implementation of Semaphores
      3. An Analogy
      4. Mutual Exclusion with Semaphores
      5. Rendezvous with Semaphores
      6. Producer-Consumer (one buffer) with Semaphores
      7. Counting Semaphores
      8. Producer-Consumer (N buffers) with Semaphores
      9. Semaphores and Messages
    17. *** Implementing Semaphores
      1. System Constants
    18. Using Semaphores in the Simple Operating System
    19. Programming Language Based Synchronization Primitives
      1. Monitors
      2. Synchronization Primitives in Ada 95
    20. Message Passing Design Issues
      1. Copying Messages
      2. Longer Messages
    21. IPC in Mach
      1. Tasks and Threads
      2. Ports and Messages
      3. Objects
    22. IPC and Synchronization Examples
      1. Signals
      2. SVR4 UNIX
      3. Windows NT
      4. OS/2
      5. Solaris
    23. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    24. Problems
  9. Design Techniques II
    1. Indirection
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Discussion
      6. Applicability
      7. Consequences
    2. Using State Machines
      1. Overview
      2. Operating System Example
      3. Computer Science Example
      4. Applicability
      5. Consequences
      6. Implementation Issues and Variations
    3. Win Big Then Give Some Back
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
    4. Separation of Concepts
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    5. Reducing a Problem to a Special Case
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
    6. Reentrant Programs
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    7. Using Models for Inspiration
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
    8. Adding a New Facility To a System
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Related Design Techniques
    9. Summary
      1. Terminology
      2. Review Questions
    10. Problems
  10. Memory Management
    1. Levels of Memory Management
    2. Linking and Loading a Process
      1. Creating a load module
      2. Loading a load module
      3. Allocating Memory in a Running Process
    3. Variations in Program Loading
      1. Load Time Dynamic Linking
      2. Run Time Dynamic Linking
    4. Why Use Dynamic Memory Allocation?
    5. *** The Memory Management Design Problem
    6. *** Solutions to the Memory Management Design Problem
      1. Static division into a fixed number of blocks
      2. Buddy Systems
      3. Powers of two allocation
    7. *** Dynamic Memory Allocation
    8. *** Keeping Track of the Blocks
      1. The List Method
      2. Keeping allocated blocks on the block list
      3. Where is the block list kept?
      4. Using Block Headers as Free List Nodes
      5. The Bitmap Method
      6. Comparing free list methods
    9. *** Which Free Block To Allocate?
    10. Examples of Dynamic Memory Allocation
    11. Logical and Physical Memory
    12. Allocating Memory to Processes
      1. Static Memory Management
      2. Handling Variable Sized Processes
    13. Multiprogramming Issues
    14. Memory Protection
    15. Memory Management System Calls
      1. Static Allocation of Memory to Processes
      2. Dynamic Allocation of Memory to Processes
      3. What about {\ptt new} and {\ptt malloc}?
      4. Freeing Memory At Each Level
      5. A Different Memory Management System Call
    16. *** Example Code for Memory Allocation
    17. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    18. Problems
  11. Virtual Memory
    1. *** Fragmentation and Compaction
    2. Dealing with Fragmentation
      1. Separate Code and Data Spaces
      2. Segments
      3. Noncontiguous Logical Address Spaces
      4. Page tables in hardware registers
      5. Page tables in memory
      6. Using a page table cache
      7. Analysis Models of Paging with Caching
      8. Memory Allocation with Paging
      9. Terminology: Page and Page Frame
      10. Page Tables
      11. Paging Summary
    3. *** Memory Allocation Code With Pages
    4. *** Sharing the Processor and Sharing Memory
    5. *** Swapping
      1. Efficient Resource Use and User Needs
    6. *** Overlays
      1. Overlays in PCs
    7. Implementing Virtual Memory
      1. Hardware Required to Support Virtual Memory
      2. Software Required to Support Virtual Memory
    8. What is the cost of virtual memory?
      1. Paging More Than One Process
      2. Locality
    9. Virtual Memory Management
    10. Daemons and Events
    11. File Mapping
      1. The System Call Interface
      2. An Example of Using File Mapping
      3. Advantages of File Mapping
      4. Memory and File Mapping on the IBM 801
      5. File Mapping Examples
    12. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    13. Problems
  12. Virtual Memory Systems
    1. Page Replacement
    2. Global Page Replacement Algorithms
      1. Measuring the Performance of a Page Replacement Algorithm
      2. Optimal Page Replacement
      3. Theories of Program Paging Behavior
      4. Random Page Replacement
      5. FIFO Page Replacement
      6. Least Recently Used Page Replacement
      7. Approximations of LRU
      8. Clock Algorithms
    3. Page Replacement Examples
    4. Local Page Replacement Algorithms
      1. Models of Program Behavior
      2. Local page replacement
      3. The development of program models
      4. What is a working set?
      5. Program Phases
      6. Variable Resident Set Sizes
      7. The working set paging algorithm
      8. Approximating the Working Set
      9. WSClock paging algorithm
    5. *** Evaluating Paging Algorithms
      1. Methodology for Paging Simulation
      2. Some Page Simulation Results
    6. Thrashing and Load Control
      1. How Thrashing Occurs
      2. Load control
      3. Swapping
      4. Scheduling and Swapping
      5. Load control and paging algorithms
      6. Predictive Load Control
      7. Preloading of pages
    7. Dealing with Large Page Tables
      1. What is the Problem?
      2. Two Level Paging
      3. Benefits of two level paging
      4. Problems with two level paging
      5. Software Page Table Lookups
    8. *** Recursive Address Spaces
    9. Paging the operating system address space
      1. Locking pages in memory
    10. *** Page Size
      1. Reasons for a large page size
      2. Reasons for a small page size
      3. Clustering pages
    11. Segmentation
      1. What is a segment?
      2. Virtual Memory with Segmentation
      3. Segmentation with Paging
      4. History of Segmentation
      5. Segment Terminology
    12. Sharing Memory
      1. Reasons for Sharing Memory
      2. Shared Memory System Calls
    13. Examples of Virtual Memory Systems
      1. Swap Area
      2. Page Initialization
      3. Page Sharing
      4. Double Handed Clock Algorithm
      5. Standby Page Lists
      6. Clustering Pages
      7. File Mapping
      8. Portable Virtual Memory Systems
      9. Sparse Address Space
      10. OS/2 Version 2.0
      11. Windows NT
      12. Mach and OSF/1
      13. System V Release 4
      14. Other Systems
    14. Very Large Address Spaces
    15. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    16. Problems
  13. Design Techniques III
    1. Multiplexing
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
    2. Late binding
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    3. Static Versus Dynamic
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    4. Space-Time Tradeoffs
      1. Overview
      2. Motivation
      3. Computer Science Examples
      4. Applicability
      5. Consequences
      6. Implementation Issues and Variations
      7. Related Design Techniques
    5. Simple Analytic Models
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Applicability
      5. Consequences
      6. Implementation Issues and Variations
    6. Summary
      1. Terminology
      2. Review Questions
    7. Problems
  14. I/O Devices
    1. Devices and Controllers
      1. Device Controllers
    2. *** Terminal Devices
      1. Basic Terminals
      2. Display Commands
      3. Example Display Commands
      4. Keyboard Events
      5. Terminal Capability Databases
      6. Virtual Terminals
      7. Terminal Interfaces
      8. Mouse Devices
      9. Event Streams
      10. Varieties of Two Stage Processing
      11. Graphics Terminals
      12. Color and Color Maps
      13. Command Oriented Graphics
      14. X Terminals
      15. Terminal Emulators
      16. Virtual Terminals and Terminal Emulators
      17. PPP: a network emulator
      18. Modems
    3. *** Communication Devices
      1. Serial ports
      2. Parallel ports
      3. Ethernet devices
      4. Other network devices
    4. Disk Devices
      1. Timing of a disk access
      2. Floppy Disks
      3. RAID devices
    5. Disk Controllers
    6. *** SCSI Interfaces
    7. *** Tape Devices
    8. *** CD Devices
    9. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    10. Problems
  15. I/O Systems
    1. I/O System Software
      1. Device Drivers
      2. Device Driver Interfaces
      3. The Two Categories of Device Drivers
      4. The Block Device Interface
      5. The Character Device Interface
    2. Disk Device Driver Access Strategies
      1. Handling Disk Requests Efficiently
      2. Double buffering --- an aside
      3. A Disk Scheduling Example
      4. Sector Scheduling Within Cylinder Scheduling
      5. Combined Sector and Cylinder Scheduling
      6. Real Life Disk Head Scheduling
    3. *** Modeling of Disks
      1. A Disk Scheduling Anomaly
      2. Cylinder Correlations
      3. A More Accurate Disk Model
    4. Device numbers
    5. Unification of Files and I/O Devices
    6. Generalized Disk Device Drivers
      1. Partitioning Large Disks
      2. Combining Disks Into a Large Logical Disk
      3. RAM Disks
      4. Memory as a device
      5. Pseudo-ttys
    7. Disk Caching
    8. Two level structure of device drivers
    9. SCSI Device Drivers
    10. Examples of I/O Systems
    11. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    12. Problems
  16. File Systems
    1. The Need for Files
      1. Using Disks Directly for Persistent Storage
      2. Files
      3. Levels in the File System
    2. The File Abstraction
      1. Variations on the File Abstraction
      2. Logical File Structure
      3. File Size and Granularity
      4. File Meta-Data
    3. File Naming
      1. Component Names
      2. Directories
      3. Path Names
      4. Variations and Generalizations
      5. File Name Extensions
      6. Aliases
    4. File System Objects and Operations
    5. File System Implementation
      1. File System Data Structures
      2. File System Organization and Control Flow
      3. Connecting to Device Drivers
      4. Reading and Writing from Special Files
      5. Other File System Calls
      6. Avoiding Copying Data
      7. Directory Implementation
    6. *** An Example File System Implementation
      1. System Constants and Global Data
      2. Disk Cache
      3. File Descriptors
      4. Open Files
      5. Directories
      6. File System Initialization
      7. File Related System Calls
      8. System Call Procedures
    7. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    8. Problems
  17. File System Organization
    1. File System Organization
      1. What is a File System?
      2. File System Structure
      3. The File System Descriptor
      4. Variations in File System Layout
      5. File Systems in Disk Partitions
      6. Combining File Systems
      7. Network Mounting of File Systems
    2. File Descriptors
      1. Where to Keep File Descriptors
    3. How File Blocks Are Located On Disk
      1. The Block Mapping Problem
      2. Contiguous Files
      3. Interleaved Files
      4. Keeping a File in Pieces
      5. Where to keep the disk block pointers
      6. Disk block pointers in the file descriptor
      7. Disk block pointers contiguously on disk
      8. Disk block pointers in the disk blocks
      9. Index blocks in a chain
      10. Two levels of index blocks
      11. Large and small files
      12. Hybrid solutions
      13. Analogy with page tables
      14. Inverted disk block indexes
      15. Using larger pieces
      16. Variable sized pieces
      17. Disk Compaction
    4. Review of File Storage Methods
    5. *** Implementation of the Logical to Physical Block Mapping
    6. File Sizes
    7. *** Booting the Operating System
    8. *** File System Optimization
      1. Block Size
      2. Compressed Files
      3. Log Structured File Systems
    9. File System Reliability
      1. Backups
      2. Consistency checking
    10. File Security and Protection
    11. Examples of File Systems
      1. SVR4 and Solaris
      2. Windows NT
      3. MS/DOS
      4. OS/2
      5. Plan 9
      6. Other Operating Systems
    12. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    13. Problems
  18. Design Techniques IV
    1. Caching
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    2. Optimization and Hints
      1. Optimizing an Activity
      2. Hints
      3. Differences between caching and hinting
      4. When to use hinting instead of caching
      5. Hinting examples
      6. Hints in user interfaces
      7. Optimistic algorithms
      8. Versions of files
    3. Hierarchical Names
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Implementation Issues and Variations
      8. Related Design Techniques
    4. Naming of Objects
      1. What is a name?
      2. Types of names
      3. Generating Unique Names
    5. Unification of Concepts
      1. Overview
      2. Motivation
      3. Operating System Examples
      4. Computer Science Examples
      5. Applicability
      6. Consequences
      7. Related Design Techniques
    6. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    7. Problems
  19. Resource Management
    1. Resources in an Operating System
      1. Hardware Resources
      2. Software Resources
    2. Resource Management Issues
      1. Model of Resource Management
      2. Resource Management Tasks
      3. Resource Management Goals
    3. Types of Resources
      1. Consumable Resources and Capital
      2. Preemption of Resources
    4. Integrated Scheduling
    5. Queuing Models of Scheduling
    6. Real-time Operating Systems
    7. Protection of Resources
      1. Users and Processes
      2. The Importance of Protection of Resources
      3. Resources That Need Protecting
      4. What We Are Protecting Against
      5. Authorization
      6. Authentication
      7. Security and Protection Analogies
      8. General Strategy for Protection
      9. Parts of a Protection System
    8. User Authentication
      1. Passwords
      2. System Authentication
      3. Other methods of authentication
      4. Password variants
      5. Identifying objects
      6. Identifying a person
    9. Mechanisms for Protecting Hardware Resources
      1. Processor Modes
      2. Protecting Hardware Resources
    10. Representation of Protection Information
      1. Object Types
      2. Operations On Objects
      3. The Protection Database
      4. Access Control Lists
      5. Capability Lists
      6. Modifying the Protection Database
      7. Protection Domains
      8. Protection in Distributed Systems
      9. Caching Protection Data
      10. Operations on Protection Objects
    11. Mechanisms For Software Protection
      1. File Protection Example
      2. Implementation of Protection
      3. Protection Mechanisms and Security Policies
      4. Variations in File Security
    12. Examples of Protection Attacks
      1. Browsing for Information
      2. Wiretapping of Communications Lines
      3. Trial and Error
      4. Password Guessing
      5. Searching Trash
      6. Trap Doors
      7. Running Other People's Programs
    13. Government Security Levels
    14. Protection Examples
      1. Protection In Windows NT
      2. Protection In OSF/1
      3. Protection In UNIX
    15. External Security
      1. Physical Security
      2. Operational Security
      3. Non-Technical Security Threats
    16. The Use of Cryptography in Computer Security
      1. What is Cryptography?
      2. Some Basic Definitions
      3. Public and Private Key Cryptosystems
      4. Using Cryptography for Privacy
      5. Using Cryptography for Authentication
      6. Authenticating Public Keys
    17. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    18. Problems
    19. The Client Server Model
    20. Three Modes of Communication
    21. System Processes
      1. Overview
      2. The Initial process
      3. System Constants
      4. Initialization
      5. Interrupt Handling
      6. Handling System Calls
      7. The System Call Handling Code
      8. User Knowledge of Message Queue Identifiers
      9. Protection of Resources
      10. Disk Interrupt Handler
      11. Disk I/O System Process
      12. Server Data Structures
    22. Micro-Kernel Operating Systems
      1. Tradeoffs of the Client Server Model
      2. Object Oriented Operating Systems
    23. The Developments Towards a Distributed System
      1. Networked Operating Systems
      2. Distributed Operating Systems
    24. Summary
      1. Terminology
      2. Review Questions
      3. Further Reading
    25. Problems
  20. Glossary
  21. References
  22. Index