| Preface | p. xi |
| General Overview of the System | p. 1 |
| History | p. 1 |
| System Structure | p. 4 |
| User Perspective | p. 6 |
| Operating System Services | p. 14 |
| Assumptions About Hardware | p. 15 |
| Summary | p. 18 |
| Introduction to the Kernel | p. 19 |
| Architecture of the UNIX Operating System | p. 19 |
| Introduction to System Concepts | p. 22 |
| Kernel Data Structures | p. 34 |
| System Administration | p. 34 |
| Summary and Preview | p. 36 |
| Exercises | p. 37 |
| The Buffer Cache | p. 38 |
| Buffer Headers | p. 39 |
| Structure of the Buffer Pool | p. 40 |
| Scenarios for Retrieval of a Buffer | p. 42 |
| Reading and Writing Disk Blocks | p. 53 |
| Advantages and Disadvantages of the Buffer Cache | p. 56 |
| Summary | p. 57 |
| Exercises | p. 58 |
| Internal Representation of Files | p. 60 |
| Inodes | p. 61 |
| Structure of a Regular File | p. 67 |
| Directories | p. 73 |
| Conversion of a Path Name to an Inode | p. 74 |
| Super Block | p. 76 |
| Inode Assignment to a New File | p. 77 |
| Allocation of Disk Blocks | p. 84 |
| Other File Types | p. 88 |
| Summary | p. 88 |
| Exercises | p. 89 |
| System Calls for the File System | p. 91 |
| Open | p. 92 |
| Read | p. 96 |
| Write | p. 101 |
| File and Record Locking | p. 103 |
| Adjusting the Position of File I/O--LSEEK | p. 103 |
| Close | p. 103 |
| File Creation | p. 105 |
| Creation of Special Files | p. 107 |
| Change Directory and Change Root | p. 109 |
| Change Owner and Change Mode | p. 110 |
| STAT and FSTAT | p. 110 |
| Pipes | p. 111 |
| Dup | p. 117 |
| Mounting and Unmounting File Systems | p. 119 |
| Link | p. 128 |
| Unlink | p. 132 |
| File System Abstractions | p. 138 |
| File System Maintenance | p. 139 |
| Summary | p. 140 |
| Exercises | p. 140 |
| The Structure of Processes | p. 146 |
| Process States and Transitions | p. 147 |
| Layout of System Memory | p. 151 |
| The Context of a Process | p. 159 |
| Saving the Context of a Process | p. 162 |
| Manipulation of the Process Address Space | p. 171 |
| Sleep | p. 182 |
| Summary | p. 188 |
| Exercises | p. 189 |
| Process Control | p. 191 |
| Process Creation | p. 192 |
| Signals | p. 200 |
| Process Termination | p. 212 |
| Awaiting Process Termination | p. 213 |
| Invoking Other Programs | p. 217 |
| The User ID of a Process | p. 227 |
| Changing the Size of a Process | p. 229 |
| The Shell | p. 232 |
| System Boot and the INIT Process | p. 235 |
| Summary | p. 238 |
| Exercises | p. 239 |
| Process Scheduling and Time | p. 247 |
| Process Scheduling | p. 248 |
| System Calls For Time | p. 258 |
| Clock | p. 260 |
| Summary | p. 268 |
| Exercises | p. 268 |
| Memory Management Policies | p. 271 |
| Swapping | p. 272 |
| Demand Paging | p. 285 |
| A Hybrid System With Swapping and Demand Paging | p. 307 |
| Summary | p. 307 |
| Exercises | p. 308 |
| The I/O Subsystem | p. 312 |
| Driver Interfaces | p. 313 |
| Disk Drivers | p. 325 |
| Terminal Drivers | p. 329 |
| Streams | p. 344 |
| Summary | p. 351 |
| Exercises | p. 352 |
| Interprocess Communication | p. 355 |
| Process Tracing | p. 356 |
| System V IPC | p. 359 |
| Network Communications | p. 382 |
| Sockets | p. 383 |
| Summary | p. 388 |
| Exercises | p. 389 |
| Multiprocessor Systems | p. 391 |
| Problem of Multiprocessor Systems | p. 392 |
| Solution With Master and Slave Processors | p. 393 |
| Solution With Semaphores | p. 395 |
| The Tunis System | p. 410 |
| Performance Limitations | p. 410 |
| Exercises | p. 410 |
| Distributed Unix Systems | p. 412 |
| Satellite Processors | p. 414 |
| The Newcastle Connection | p. 422 |
| Transparent Distributed File Systems | p. 426 |
| A Transparent Distributed Model Without Stub Processes | p. 429 |
| Summary | p. 430 |
| Exercises | p. 431 |
| System Calls | p. 434 |
| Bibliography | p. 454 |
| Index | p. 458 |
| Table of Contents provided by Ingram. All Rights Reserved. |