CONTENTS
         Introduction 1
         1.1 Where Doe an Operating System
         Fit in?
         1.1.1 System Levels
         1.2 What Does an Operating System Do?
         2.1 Hardware Resources
         2.2 Resource Management
         2.3 Vinual Computers
         A Virtual Computer
         3.1 Virtual Processor
         3.2 Vinual Primary Memory
         3.3 Virtual Secondary Memory 10
         3.4 Vinual 1/0
         Do We Need an Operating System?
         Summary
         1.5.1 Terminotogy
         1.5.2 Review Questions
         1.5.3 Further Reading
         1.6 Problems
         2 The Hardware Interface
         TheCPU
         2.2 General-Purpose Register
         2.3 Control Registers
         2.4 Processor Modes
         Instruction Set
         Machine Instructions in C
         Code
         Memory andAddressing
         Interrupts
         1/0 Devices
         2.4.1 Disk Controlle
         Summary
         2.5.1 Terminotogy
         2.5.2 Review Questions
         2.5.3 Further Reading
         2.6 Problems
         3 The Operating System Interface
         3.1 What Are System Calls?
         3.1.1 How to Make a System Call
         3.1.2 What Is a System Call Interface?
         3.2 An Example System Call Interface
         3.2.1 Syslem Call Overview
         3.2.2 Hierarchical File Naming
         Syslems
         3.2.3 File and 1/o Svstem Calls
         3.2.4 Open Files
         3.3
         3.4
         3.5
         3.2.5 Examples of File 1/0
         Infonnation and Meta-Information
         Naming Operating System Objects
         3.5 Devices as Files
         3.5.1 Unificalion of the Fil and Devi
         Concepts
         3.6 The Process Concept
         3.6.1 Processes and Programs
         3.6.2 Process Management System
         Calls
         3.7
         3.6.3 Process Hierarchy
         Communication between Processes
         3.7.1 Communication-Related System
         Calls :
         3.7.2 Example of Inlerproces.-
         3.8 UNIX-Style Process Creation
         3.9 Standard Input and Standard Output
         Communication
         3.10 Communicating with Pipes
         3.10.1 Naming of Pipes and Message
         Queues
         3.11 Summary of System Call Interface
         3.12 Operating System Exampies
         3.12.1 UNIX
         3.12.2 Mach
         3.12.3 MS/DOS
         3.12.4 Windows NT
         3.12.5 os/2
         3.12.6 Macinlosh OS
         3.13 The User Interface to an Operating
         System*
         3.13.1 Why You Need a Shell
         3.13.2 TheSpecificationoftheShell
         3.13.3 Implementing the Shell
         3.14 Summary
         3.14.1 Terminology
         3.14.2 Review Questions
         3.14.3 Further Reading
         3.15 Problems
         Design Techniques 1
         4.1 Operating Systems and Design
         4.1.1 The Design Process
         4.1.2 Relationship to Software
         Engineering
         4.1.3 A Design Example
         4.1.4 Leaming Design through Operating
         Systems
         4.2 Design Problems
         4.2.1 DesignSkills
         4.2.2 Design Space
         4.2.3 Design Levels
         4.3 Design Techniques
         4.4 Two-Level Implementation
         4.4.1 Overview
         4.4.2 Motivation
         4.4.3 Operating System Examples
         4.4.4 Computer Science Examples
         4.4.5 Applicability
         4.4.6 Consequences
         4.4.7 Implementation Issue and
         Variations
         4.4.8 Related Design Techniques
         4.5 Interface Design
         4.5.1 Overview
         4.5.2 Motivatior
         4.5.3 Applicability
         4.5.4 Consequences
         4.5.5 Related Design Technique
         4.6 Connection in Protocols
         4.6.1 Overview
         4.6-2 Motivation
         4.6.3 Operating System Exampies
         4.6.4 Computer Science Examples
         4-6.5 Applicabilily
         4.6.6 Consequences
         4.6.7 Implementation Issue and
         Variations 102
         4.6.8 Related Design Technique
         4.7 Interactive and Programming
         Interfaces
         4.7.1 Overview
         4.7.2 Motivation
         4.7.3 Operating Syslem Examples
         4.7.4 Compucer Science Examples
         4.7.5 Applicability
         4.7.6 Consequences
         4.7.7 Implementation Issue -and
         Variations
         4.7.8 Related Design Techniques
         4.8 Decomposition Pattems
         4.8.1 Overview
         4.8.2 Mocivalion
         4.8.3 Operating System Examples
         4.8.4 Computer Science Examples
         4.8.5 Applicability
         4.8.6 Consequences
         4.8.7 Implementation Issue. and
         Varialions
         4.8.8 Related Design Technique
         4.9 Summary
         4.9.1 Terminology
         4.9.2 Review Question
         4.10 Problems
         Implementing Processes
         5.1 The System Call Interface
         5.2 Implementation of a Simple Operating
         System 119
         5.2.1 Guide to the Code
         5.2.2 The Architecture
         5.2.3 System Constants
         5.2.4 Global Data
         5.3 Implementation of Processes
         5.3.1 Process Creation
         5.3.2 Process States
         5.3.3 Process Dispatching
         5.3.4 The System Stack
         5.3.5 Timer Intemupts
         5.4 System Initialization
         5.4.1 The Initial Process
         5.5 Process Switching
         5.5.1 Swilching between Processe
         5.5.2 Flow of Conlrol
         System Call Interrupt Handling
         5.6.1 Copying Messages between Addres
         Spaces
         5.7 Program Brror Interrupts
         5.8 Disk Driver Subsystem
         5.8.1 Communicating with the Disk
         5.9 Conlroller
         Implementation of Waiting
         5.9.1 Waiting for Messages
         5.9.2 Waiting inside a System Call
         5.9.3 Suspending System Calls
         Flow of Control through the Operating
         5.10 System
         5.11 Signaling in an Operating System
         5.12 Interupts in the Operating System
         5.13 Operating Systems as Event and Table
         Managers
         5.14 Process Implementation
         5.14.1 The Process Table and Proces
         5.15 Descriptors
         5.16 Examples ofProcess Implementation
         Monoprogramming*
         5.16.1 BatchSystems
         5.16.2 Multiprogramming and 1/o
         Overlap
         5.16.3 Personal Computer System
         5.17Summary
         5.17.1 Tenninology
         5.17.2 Review Questions
         5.17.3 Further Reading
         Problems
         Parallel Systems
         6.1 Parallel Hardware
         6.2 An Operaling System fo a Two-Processo
         System
         6.2.1
         Using Two Separate Operating
         Syslems
         6.2.2 Sharing the Operating Syslem
         6.3 Race Conditions with a Shared Proces.
         Table
         6.4 Atomic Actions
         6.4. i Hardware ImDlementation of Atomic
         Actions
         6.5 A Multiprocessor Operating System
         6.5.1 The Current Process Variable
         6.5.2 Dispatching With a Shared Process
         Table
         6.5.3 Busy Waiting
         6.5.4 Handling the Queues
         6.5.5 Grouping of Shared Variables
         6.5.6 A General Solution
         6.5.7 Using Two Process Tables
         Examples of Multiprocessor Operating
         6.6 Systems
         6.7. Threads
         6.7.1 The Thread Concept
         6.7.2 Thread Syslem Calls
         6.7.3 Advantages ofThreads
         6.7.4 U.sesofThreads
         6.7.5 Thread Implementation*
         6.7.6 Splitting Ihe Process Concepl
         6.7.7 Lightweight Processes and Use
         Threads
         6.7.8 Examples of Threads
         6.8 Kernel-mode Processes*
         6.8.1 Data Struclures for Kernel-Mod
         Processes
         6.8.2 Process Creation with Kemel-Mode
         Processes
         6.8.3 Interrupt Handler for Kemel-Mod
         Processes
         6.8.4 Switching Processe for Kernel-Mod
         Processes
         6.8.5 How the System Slack is Used
         6.8.6 Wailing wilh Kemel-Mode
         Processes
         6.8.7 Dispatching with Kernel-Mod
         Processes
         6.8.8 Kemel-Mode only Processe,
         6.8.9 Trade-Ofts otKemel-Mode
         Processes
         6.8.10 Examples uf Kemel-Mode
         Processes
         6.9 Implementation of Mutual Exclusion
         6.9.1 First Solulion: Disabling
         Interrupts
         6.9.2 Second Solution: Usinc
         ExchungeWord
         6.9 3 Third Solulion: Sottware
         Solutions
         6.9.4 When to Use Each Solution
         6.9.5 Examples ot' Implemenling Mulual
         Exclusiun
         Varieties ofComputer Model
         6.10.1 Multiprogramming
         6.10.2 Mulliprocessing
         Summary
         6.11.1 Tcrminoiogy
         6.11.2 Review Questions
         6.11.3 Furher Reading
         Problems
         Interprocess Communication
         Pattems
         7.1 Using Interprocess Communication
         7.2 Pattems of Interprocess
         Communication
         7.2.1 Competing and Cooperating
         7.3 Problems When Processes Compete
         7.4 Race Conditions and Atomic Actions
         7.5 New Message-Passing System Calls
         7.6 IPC Pattem: Mutual Exclusion
         7.6.1 N Process Mutual Exclusion
         7.6.2 Voluntary Cooperation in Mutual
         Exclusion
         7.7 IPC Pattem: Signaling
         7.8 IPC Pattem: Rendezvous
         7.8.1 Many Process Rendezvous
         7.9 IPC Pattem: Producer-Consumer
         7.9.1 The Basic Producer-Consumer
         Pattem
         7.9.2 Limiting the Numbe of Buffer
         LIsed
         7.9.3 Multiple Producer and
         Consumers
         7.10 IPC Pattem: Client-Server
         7.11 IPC Pattem: Multiple Servers and
         Clients*
         7.12 IPC Pattem: Database Acces. and
         Update
         7.12.1 Scheduling
         7.12.2 Priorily
         7-12.3 Scheduling Queues
         7.13 Review of Interprocess Communication
         Pattems
         7.13.1 Mutual Exclusion
         7.13.2 Signaling
         7.13.3 Rendezvous
         7.13.4 Producer-Consume
         7.13.5 Clienl-Server 264
         7.13.6 Multiple Servers and Clients
         7.13.7 Database Access and Update
         7.14 A Physical Analogy
         7.15 Failure of Processes
         7.15.1 Recovery from Failure
         7.16 Summary
         7.16.1 Terminology
         7.16.2 Review Questions
         7.16.3 Funher Reading
         7.17 Problems
         Processes
         8.1 Everyday Scheduling
         8.1.1 First-Come, First-Served
         Scheduling
         Shortest-Job-First Scheduling
         Highest-Response-Ratio-Next
         Scheduling
         Priority Scheduling
         Deadline Scheduling
         8.1.6 Round-Robin Scheduling
         8.1.7 Summary
         8.2 Preemptive Scheduling Methods
         8.2.1 Scheduling Overview
         8.2.2 Round-Robin Scheduling
         8.2.3 Heavily Loaded Systems
         8.2.4 Two Queues
         8.2.5 Multiple Queues
         8.3 Policy versus Mechanism in
         Scheduling
         8.4 A Scheduling Example
         8.5 Scheduling in Real Operating
         Systems
         8.5.1 Scheduling in UNIX SVR4
         8.5.2 Scheduling in Solaris
         8.5.3 Scheduling in 0S/22.0
         8.5.4 Schedu]inginWindowsNT3.51
         8.5.5 Scheduiing in Other Operating
         Systems
         8.6 Deadlock
         8.7 Why Deadlock Is a Problem
         8.8 Conditions for Deadlock to Occur
         8.9 How to Deal with Deadlock
         8.9.1 Deadlock Prevention
         8.9.2 Deadlock Avoidance
         8.9.3 Deadlock Recovery
         8.10 A Sequence ofApproache to the Deadlock
         Problem
         8.11 Two-Phase Locking
         Starvation
         8.12 Message Passing Variations
         8.13.1 Using PIDs as Message
         Addresses
         8.13.2 Message Passing with Nonblocking
         Receives
         8.13.3 Message Passing with Blocking
         Sends
         8.13.4 Remole Procedure Call,
         8.14 Synchronization
         8.14.1 DeftnitionofSynchronization
         8.14.2 Review of Synchronization
         8.15 Separating Data Transfer and
         8.16 Synchronization
         Semaphores
         8.16.1 Specification ot' Semaphore
         Operations
         8.16.2 Implementation ot Semaphore
         8.16.3 AnAnalogy
         8.16.4 Mutual Exctusion with
         Semaphores
         8.16.5 Rendezvous with Semaphores
         8.16.6 Producer-Consumer (one buffer) wilh
         Semaphores
         8.16.7 Counting Semaphores
         8.16.8 Producer-Consumer(N buffers) wiih
         Semaphore.s
         8.16.9 Semaphores and Message.
         8.17 Implementing Semaphores*
         8.17.1 Sy.stem Constants
         Using Semaphores in the Simple Operaling
         System
         8.18 Programming-Language-Based
         8.19 Synchronization Primitives
         8.19.1 Monilors
         8.19.2 Synchronizalion Primitives in
         Ada 95
         8.20 Message Passing Design Issues
         8.20.1 Copying Messages
         8.20.2 Longer Messages
         8.21IPC in Mach 337
         8.21.1 Tasks and Threads
         8.21.2 Ports and Messages
         8.21.3 Objects
         8.22 IPC and Synchronizalion Example.
         8.22.1 Signals 338
         8.22.2 SVR4 UNIX
         8.22.3 Windows NT
         8.22.4 0S/2
         8.22.5 Solaris
         8.23 Summary
         8.23.1 Terminology
         8.23.2 ReviewOuestions
         8.23.3 Funher Reading
         8.24 Problems
         Design Techniques 11
         Indirection
         Overview
         9.1 Motivation
         9.1.1 Operating System Examples
         9.1.2 Computer Science Examples
         9.1.3 Discussion
         9.1.4 Applicability
         Consequences
         9.2 Using State Machines
         9.2.1 Overview
         9.2.2 Operating System Example .
         9.2.3 Computer Science Example
         9.2.4 Applicabilily
         9.2.5 Consequences
         9.2.6 Implementation Issue, and
         Variations
         9.3 Win Big. Then Give Some Back
         9.3.1 Overview
         9.3.2 Motivation
         9.3.3 Operating System Examples
         9.3.4 Computer Science Examples
         9.3.5 Applicability
         9.4 Consequences
         Separation ot Concepts
         9.4.1 Overview
         9.4.2 Molivation
         9.4.3 Operating Syslem Examples
         9.4.4 Computer Science Examples
         9.4.5 Applicability
         9.4.6 Consequences
         9.4.7 Implementation Issue and
         9.4.8 Related Design Techniques .
         Variations
         9.5 Reducing a Problem to a Specia'. Case
         9.5.1 Overview
         9.5.2 Motivation
         9.5.3 Operating System Examples
         9.5.4 Computer Science Examples
         9.5.5 Applicability
         9.5.6 Consequences
         9.5.7 Implementation Issue and
         Variations
         9.6 Reentrant Programs
         9.6.1 Overview
         9.6.2 Motivacion
         9.6.3 Operaling System Examples
         9.6.4 Computer Science Examples
         9.6.5 Applicability
         9.6.6 Consequences
         9.6.7 Implementation Issue and
         Variations
         9.6.8 Related Design Techniques
         9.7 Using Models for Inspiration
         9.7.1 Overview
         9.7.2 Motivation
         9.7.3 Operating System Examples
         9.7.4 Computer Science Examples
         9.7.5 Applicability
         9.7.6 Consequences
         9.8 Adding a New Facility to a System
         9.8.1 Overview
         9.8.2 Motivation
         9.8.3 Operating System Examples
         9.8.4 Computer Science Examples
         9.8.5 Applicability
         9.8.6 Consequences
         9.8.7 Related Design Technique.
         9.9 Summary
         9.9.1 Tenninology
         9.9.2 Review Question
         9.10 Problems
         Memory Management
         10.1 Levels of Memory Management
         10.2 Linking and Loading a Process
         10.2.1 Creating a Load Module
         10.2.2 Loading a Load Module
         10.2.3 Allocating Memory in a Running
         PTocess
         10.3 Variations in Program Loading
         10.3.1 Load Time Dynamic Linking
         10.3.2 Run Time Dynamic Linking
         10.4 Why Use Dynamic Memory
         Allocation?
         10.5 The Memory Management Design
         Problem*
         10.6 Solutions to the Memory Management
         Design Problem*
         10.6.1 Static Division into a Fixed Numbe
         of Blocks
         10.6.2 Buddy Syslems
         10.6.3 Powers-of-two Allocation
         10.7 Dynamic Memory Allocation*
         10.8 Keeping Track of the Blocks*
         10.8.1 The List Method
         10.8.2 Keeping Allocated Blocks on the
         Block List
         10.8.3 Where Is che Block List Kept?
         10.8.4 Using Block Headers as Free List
         Nodes
         10.8.5 The Bitmap Method
         10.8.6 Comparing Free List Methods
         10.9 Which Free Block to Allocate?*
         10.10 Examples of Dynamic Memory
         Allocalion
         10.11 Logical and Physical
         Memory
         10.12 Allocating Memory to
         Processes
         10.12.1 Static Memory Management
         10.12.2 Handling Variable-Sized
         Processes
         10.13 Multiprogramming Issues
         10.14 Memory Protection
         10.15 Memory Management System Calls
         10.15.1 Static Allocation of Memory lo
         Processes
         10.15.2 Dynamic Allocation of Memory to
         Processes
         10.15.3 What about New and Malloc?
         10.15.4 Freeing Memory at Each
         Leve
         10.15.5 ADifferent Memory Management
         System Call
         10.16 Example Code for Memory
         Allocation*
         10.17 Summary
         10.17.1 Terminology
         10.17.2 Review Question
         10.17.3 Funher Reading
         10.18 Problems
         Virtual Memory
         11.1 Fragmentation and Compaction*
         11.2 Dealing with Fragmentation
         11.2.1 Separate Code and Data Spac
         11.2.2 Segments
         11.2.3 Noncontiguous Logieal Addres
         Spaces
         11.2.4 Page Tables in Hardwar
         Registers
         11.2-5 Page Tables in Memory
         11.2.6 Using a Page Table Cache
         11.2.7 Analysis Models of Paging with
         Caching
         11.2.8 Memory Allocation with Paging
         11.2.9 Tenninology: Page and Page
         Frame
         11.2.10 PageTahles
         11.2.11 Paging Summary
         11.3 Memory Allocalion Code wilh Page.
         11.4 Sharing the Processor and Sharing
         Memory*
         11.5 Swapping*
         11.5.1 Efficient Resource Use and Vse
         Needs
         11.6 Overlays*
         11.6.1 Overlays in PCs
         11.7 Implemenling Virtual Memory
         11.7.1 Hardware Required to Supporl Virtal
         Memory
         11.7.2 Software Required to Support Virtual
         Memory
         11.8 What is the Cost of Virtual Memory'?
         11.8.1 Paging More Than One Process
         11.8.2 Locality
         11.9 Virtual Memory Management
         11.10 Daemons and Events
         11.11 File Mapping
         11.11.1 The System Call Intert'ace
         11.11.2 An Example of Using File
         Mapping
         11.11.3 Advanfages of File Mapping
         11.11.4 Memory and File Mapping on the
         IBM 801
         11.11.5 File Mapping Example.
         11.12 Summary
         11.12.1 Tenninology
         11.12.2 Review Questions
         11.12.3 Further Reading
         11.13 Problems
         12 Virtual Memory Systems
         12.1 Page Replacement
         12.2 Global Page Replacement Algorithms
         12 2.1 easuring the Performance of a Page
         12.2.2 Replacement Algorithm
         12.2.3 Optimal Page Replacement
         12.2.4 Theories of Program Paging
         12.2.5 Behavior
         Random Page Replacement
         First-In. First-Out FIFO Page
         Replacernenl
         Least Recenlly Used Pag
         Replacement
         12.2.7 Approximations ot'LRU
         12.2.8 Clock Algorithms
         12.3 Page Replacement Examples
         12.4 Local Page Replacement Algorithm.
         12.4.1 What Is a Working Set?
         12.4.2 Program Phases
         12.4.3 Varlable Resident Set Size.
         12.4.4 The Working Sel Paging
         Algorilhm
         12.4.5 Approximating ine working Set
         12.4.6 WSCIock Paging Algorithm
         12.5 Evaluating Paging Algorithms*
         12.5.1 Methodology for Paging
         Simulation
         12.5.2 Some Page Simulation Result
         12.6 Thrashing and Load Control
         12.6.1 How Thrashing Occurs
         12.6.2 Load control
         12.6.3 Swapping
         12.6.4 Scheduling and Swapping
         12.6.5 Load Control and Paging
         Algorithms
         12.6.6 Predictive Load Control
         12.6.7 Preloading of Pages
         12.7 Dealing with Large Page Tables
         12.7.1 What Is the Problem?
         12.7.2 Two-Level Paging
         12.7.3 Benefits of Two-LevelPaging
         12.7.4 Problems with Two-Level
         Paging
         12.7.5 Software Page Table Lookup.
         12.8 Recursive Address Spaces*
         12.9 Paging the Operating System Addres.
         Space
         12.9.1 Locking Pages in Memory
         12.10 PageSize*
         12.10.1 Reasons for a Large Page Size
         12.10.2 Reasons for a Small Page Size
         12.10.3 Clustering Pages
         12.11 Segmentation
         12.11.1 What Is a Segment?
         12.11.2 Vinual Memory with
         Segmentation
         12.11.3 Segmentation with Paging
         12.11.4 History of Segmenlation
         12.11.5 Segment Tenninology
         12.12 Sharing Memory
         12.12.1 Reasons for Sharing Memory
         12.12.2 Shared Memory Sysiem Calls
         12.13 Examples of Virtual Memory Systems
         12.13.1 SwapArea
         12.13.2 Page Initialization
         12.13.3 PageSharing
         12.13.4 Double-Handed Clock
         Algorithm
         12.13.5 Standby Page Lists
         12.13.6 Clustering Pages
         12.13.7 FileMapping
         12.13.8 Portable Virtual Memory
         Systems
         12.13.9 Sparse Address Space
         12.13.10 OS/2 Version 2.0
         12.13.11 WindowsNT
         12.13.12 Mach and OSF/1
         12.13.13 System V Release 4
         12.13.14 Other Systems
         12.14 Very Large Address Spaces
         12.15 Summary
         12.15.1 Terminology
         12.15.2 Review Queslions
         12.15.3 Funher Reading
         12.16 Problems
         13Design Techniques III
         13.1 Multiplexing
         13.1.1 Overview
         13.1.2 Motivation
         13.1.4
         Operatmg System Examples
         Computer Science Examples
         Applicability
         Consequences
         13.2 Late Binding
         13.2.1 Overview
         13.2.2 Motivation
         13.2.3 Operating System Examples
         13.2.4 Computer Science Examples
         13.2.5 Applicability
         13.2.6 Consequences
         13.2.7 Implementation Issue. and
         Variations
         13.2.8 Related Design Technique
         13.3 Static Versus Dynamic
         13.3.1 Overview
         13.3.2 Molivation
         13.3.3 Operating System Examples
         13.3.4 Computer Science Examples
         13.3.5 Applicabilily
         13.3.6 Consequences
         13.3.7 Implementation Issue and
         Variations
         13.3.8 Related Design Technique
         Space-Time Tradeoffs
         13.4
         13.4.1 Overview
         13.4.2 Motivation
         13.4.3 Computer Science Example
         13.4.4 Applicability
         13.4.5 Consequences
         13.4.6 Implemenlation Issue and
         Variations
         13.4.7 Related Design Technique
         13.5 Simple Analytic Models
         13.5.1 Overview
         13.5.2 Molivation
         13.5.3 Operating System Example.
         13.5.4 Applicability
         13.5.5 Consequences
         13.5.6 Implementation Issue and
         Variations
         13.6 Surnmary
         13.6.1 Terminology
         13.6.2 Review Queslion.
         Problems
         1/0 Devices
         14.1 Devices and Controllers
         14.1.1 Device Conlrollers
         14.2 Terminal Devices*
         14.2.1 Basic Terminals
         14.2.2 Di.splay Commaius
         14.2.3 Example Disptay Command.
         14.2.4 Keyboard Event.s
         14.2.5 Terminal Capability Database.
         14.2.6 Vinual Tenninals
         14.2.7 Terminal Intertaces
         14.2.8 MouseDevices
         14.2.9 Event Streams
         14.2.10 Varieties ol'Two-
         Proecsing
         14.2.11 Graphics Terminals
         14.2.12 Color and Color Maps
         14.2.13 Command Oriented Graphic
         14.2.14 X Temnals
         14.2.15 Terminai Emulators
         14.2.16 Virlual Terminals and Termina!
         Emulators
         14.2.17 PPP; a Nelwork EmulatDr
         14.2.18 Modems
         14.3 Communicalion Devices*
         14.3.1 Serial Pons
         14.3.2 Parallel Ports
         14.3.3 Elhemef Devices
         14.3.4 Other NetworkDevices
         14.4 DiskDevices
         14.4.1 Timing ot' a Disk Access
         14.4.2 Floppy Dislts
         14.4.3 RAIDDevices
         14.5 Disk Controllers
         14.6 SCSI Interfaces*
         14.7 Tape Devices*
         14.8 CDDevices*
         14.9 Summary
         14.9.1 Temiinology
         14.9.2 Review Question
         14.9.3 Funher Reading
         14.10 Problems 613
         15 1/0 Systems
         15.1 1/0 System Software
         15.1.1 Device Drivers
         15-1.2 Device Driver Interfaces
         15-1,3 The Two Categorie.s of Device
         Drivers
         15.1.4 The Block Device Inlert'ace
         15.1.5 The Character Devicc Inlerface
         15 1.6 Disk Device Driver Access Slrategies
         15.2 Handling Disk Requests
         15.2.1 Efficienily
         15.2.2 Double Buffering -- An Aside
         15.2.3 A Disk Scheduling Example
         15.2.4 Sector Scheduling within Cylinder
         Scheduling
         15.2.5 Comhined Sectorand Cylinde
         Schcduling
         15.2.6 Real-Life Disk Head Scheduling 
         15.3 Modeling of Disks*
         15.3.1 A Disk Scheduling Anomaly
         15.3.2 Cylinder Correlations
         15.3.3 A More Accurate Disk Model
         15.4 Device numbers
         15.5 Unification of Files and I/O Devices
         15.6 Generalized Disk Device Drivers
         15.6.1 Parlilioning Large Disks
         15.6.2 romhining Disks into a Large
         Logical Disk
         15.6.3 RAMDisks
         15.6.4 Memory as a Devic
         15.6.5 Pseudo-ttys
         15.7 DiskCaching
         15.8 Two-Level Structure of Device
         Drivers
         15.9 SCSl Device Drivers
         15.10 Examples of 1/0 Systems
         15.11 Summary
         15.11.1 Temlinology
         15.11.2 Review Questions
         15.11.3 Funher Reading
         l.12 Problems
         19.8.2 System Authentication
         19.8.3 Other Methods ofAuthentication
         19.8.4 Password Varianls
         19.8.5 Identifying Objects
         19.8.6 Identifying a Person
         Mechanisms for Protecting Hardware
         19.9 Resources
         19.9.1 Processor Modes
         19.9.2 Prolecting Hardware Resource
         Representation of Protection
         19.10Information
         19.10.1 ObjectTypes
         19.10.2 Operations On Objects
         19.10.3 The Protection Database
         19.10.4 Access Control Lists
         19.10.5 Capability Lists
         19.10.6 Modifying the Protection
         Database
         19.10.7 Protection Domains
         19.10.8 Protection in Distributed Systpm
         19.10.9 Caching Protection Data
         19.10.10 Operations on Protection Objects
         19.11Mechanisms for Software Protection
         19.11.1 File Protection Example
         19. i 1.2 Implementation of Protection
         19.11.3 Protection Mechanisms and Securit
         Policies 799
         19.11.4 Variations in File Security
         19.12 Examples of Protection Attacks
         19.12.1 Browsing for Infonnation
         19.12.2 Wiretapping of Communication
         Lines
         19.12.3 Trial and Error
         19.12.4 Password Guessing
         19.12.5 Searching Trash
         19.12.6 TrapDoors
         19.12.7 Running Other Peopl
         Programs
         Govemment Security Level
         19.14 Protection Examples
         19.14.1 Protection In Windows NT
         19.14.2 Protection In OSF/l
         19.14.3 Protection In UNIX
         19.15 Extemal Security
         19.15.1 Physical Security
         19.15.2 Operational Security
         19.15.3 NonTechnical Security Threats
         The Use of Cryptography in Computer
         19.16 Security
         19.16.1 What Is Cryptography?
         19.16.2 Some Basic Definition
         19.16.3 Public and Private Key
         Cryptosystems
         19.16.4 Using Cryptography for Privac
         19.16.5 Using Cryptography for
         Authentication
         19.16.6 Authenticating Public Key
         19.17 Summary
         19.17.1 Terminiogy
         19.17.2 Review Questions
         19.17.3 Further Reading
         19.18 Problems
         20 The Client-Server Model
         20.1 Three Modes of Communication
         20.2 System Processes
         20.2.1 Overview
         20.2.2 The Initial Process
         20.2.3 System Constants
         20.2.4 Initialization
         20.2.5 Inlerrupt Handling
         20.2.6 Handling System Calls
         20.2.7 The System Call Handling Code
         20.2.8 User Knowledge of Message Queu
         Identifiers
         20.2.9 Protection of Resources
         20.2.10 Disk Intemupt Handler
         20.2.11 Disk 1/0 System Process
         20.2.12 Server Data Structures
         20.3 Micro-Kemel Operating Systems
         20.3.1 Tradeoffs of the Client Server
         Model
         20.3.2 Object-Oriented Operating
         Systems
         20.4 The Developments toward a Distributed
         System
         20.4.1 Networked Operating Systems
         20.4.2 Distributed Operating Systems
         20.5 Summary
         20.5.1 Terminology
         20.5.2 Review Questions
         20.5.3 Funher Reading
         20.6 Problems
         Glossary G-l
         References R-1
         Index 1-1
      · · · · · ·     (
收起)