Operating System Design

The XINU Approach

Douglas Comer

Publisher: Prentice Hall, 1984, 486 pages

ISBN: 0-13-637539-1

Keywords: Operating Systems

Last modified: June 27, 2021, 5:04 p.m.

In this book, Douglas Comer dispels the magic from operating system design and consolidates the body of material into a systematic discipline. The author reviews the major system components and a structure that organizes them in an orderly, understandable manner.

The author guides you through the construction of a conventional process-based system, using practical straightforward primitives. He begins with a bare machine and proceeds step-by-step through the design and implementation of a small, elegant system.

Called XINU, the system serves as an example and a pattern for system design. It includes all the components that constitute an ordinary operating system: memory management, process management, process coordination and synchronization, interprocess communication, real-time clock management, device drivers, intermachine communication networks, and a file system.

To use this book you should have had experience in writing programs in a high-level language like Pascal, PL/1, or C, and you should understand basic data structures such as linked lists, stacks and queues.

  1. Introduction and Overview
    1. Operating Systems
    2. Our Approach
    3. What An Operating System Is Not
    4. An Operating System Viewed From The Outside
    5. An Operating System Viewed From The Inside
    6. Summary
  2. An Overview of the Machine and Run-Time Environment
    1. The Machine
    2. Disk Storage Organization
    3. The C Run-Time Environment
    4. Summary
  3. List and Queue Manipulation
    1. Linked Lists Of Processes
    2. Implementation Of The Q Structure
    3. Priority Queue Manipulation
    4. List Initialization
    5. Summary
  4. Scheduling and Context Switching
    1. The Process Table
    2. Process States
    3. Selecting A Ready Process
    4. The Null Process
    5. Making A Process Ready
    6. Summary
  5. More Process Management
    1. Process Suspension And Resumption
    2. System Calls
    3. Process Termination
    4. Kernel Declarations
    5. Process Creating
    6. Utility Procedures
    7. Summary
  6. Process Coordination
    1. Low-Level Coordination Techniques
    2. Implementation Of High-Level Coordination Primitives
    3. Semaphore Creation and Deletion
    4. Summary
  7. Message Passing
    1. Message Passing In Xinu
    2. Implementation Of Send
    3. Implementation Of Receive
    4. Summary
  8. Memory Management
    1. Memory Management On The 11/02
    2. Dynamic Memory Requirements In Xinu
    3. Low-Level Memory Management Procedures
    4. The Location Of Allocated Storage
    5. The Implementation Of Xinu Memory Management
    6. Summary
  9. Interrupt Processing
    1. Dispatching Interrupts
    2. Input And Output Interrupt Dispatchers
    3. The Rules For Interrupt Processing
    4. Rescheduling While Processing An Interrupt
    5. Summary
  10. Real-Time Clock Management
    1. The Real-Time Clock Mechanism
    2. Optimization Of Clock Interrupt Processing
    3. The Use Of A Real-Time Clock
    4. Delta List Processing
    5. Putting A Process To Sleep
    6. Delays Measured In Seconds
    7. Awakening Sleeping Processes
    8. Deferred Clock Processing
    9. Clock Interrupt Processing
    10. Clock Initialization
    11. Summary
  11. Device Independent Input and Output
    1. Properties Of The Input and Output Interface
    2. Abstract Operations
    3. Binding Abstract Operations To Real Devices
    4. Binding I/O Calls To Device Drivers At Run-Time
    5. The Implementation Of High-Level I/O Operations
    6. Opening And Closing Devices
    7. Null And Error Entries In Devtab
    8. Initialization Of The I/O System
    9. Interrupt Vector Initialization
    10. Summary
  12. An Example Device Driver
    1. The Device Type Tty
    2. Upper And Lower Halves Of The Device Driver
    3. Synchronization Of The Upper And Lower Halves
    4. Control Block And Buffer Declarations
    5. Upper-Half Tty Input Routines
    6. Upper-Half Tty Output Routines
    7. Lower-Half Tty Driver Routines
    8. Tty Control Block Initialization
    9. Device Driver Control
    10. Summary
  13. System Initialization
    1. Starting From Scratch
    2. Booting Xinu
    3. System Startup
    4. Finding The Size Of Memory
    5. Initializing System Data Structures
    6. Transforming The Program Into A Process
    7. The Map Of Low Core
    8. Summary
  14. A Data Link Communication Driver
    1. The Difficult Problem Of Communication
    2. Nomenclature For The Network Software Layers
    3. A Dlc Driver Design
    4. The Important Details Of Dlc
    5. Dlc Finite State Output Machine
    6. Deferred Input And Stalled Output
    7. Implementation Of The Dlc Driver
    8. Upper-Half Dlc Driver Routines
    9. Lower-Half Dlc Driver Routines
    10. Dlc Driver Initialization
    11. Control Over Non-Blockmode Reception
    12. Summary
  15. High-Level Memory Management and Message Passing
    1. Self-Initializing Modules
    2. Memory Marking
    3. Implementation Of Memory Marking
    4. Partitioned Space Allocation
    5. Buffer pools
    6. Returning Buffers To The Buffer Pool
    7. Creating A Buffer Pool
    8. Initializing The Buffer Pool Table
    9. Communication Ports
    10. The Implementation Of Ports
    11. Other Operations On Ports
    12. Summary
  16. Frame-Level Network Communication
    1. Operation Of The Frame Manager
    2. Details Of The Frame-Level Protocol
    3. The Xinu Ring Network
    4. Messages, Packets, Frames, Blocks, And The Network Layers
    5. An Example Of Packet Transfer Across An Internet
    6. Frame-Level Processing
    7. The Frame Format
    8. The Interface Between The Frame And Internet Layers
    9. The Frame-Level Input Process
    10. The Frame-Level Output Process
    11. Using The Acknowledgement Timer
    12. Implementation Of The Timer
    13. Initialization Of The Frame Layer
    14. Optimizing The Transfer Of Datagrams To Frames
    15. Summary
  17. A Disk Driver
    1. Operations Supplied By The Disk Driver
    2. Controller Request And Interface Register Descriptions
    3. The List Of Pending Disk Requests
    4. Enqueuing Disk Requests
    5. Optimizing the Request Queue
    6. Starting A Disk Operation
    7. Driver Initialization
    8. The Upper-Half Read Routine
    9. The Upper-Half Output Routine
    10. Implementation Of The Upper-Half Output Routine
    11. The Upper-Half Seek Routine
    12. The Lower-Half Of The Disk Driver
    13. Flushing Pending Requests
    14. Summary
  18. File Systems
    1. What Is A File System?
    2. Disk And File Servers
    3. A Local File System
    4. Data Structures For The File System
    5. Implementation Of The Index Manager
    6. Operations On I-Blocks
    7. The Directory Structure
    8. Using The Device Switch Table For Files
    9. Establishing A Pseudo-Device
    10. Pseudo-Device Driver Routines
    11. Summary
  19. Exception Handling and Support Routines
    1. Exceptions, Traps, And Illegal Interrupts
    2. Initialization Of Interrupt Vectors
    3. Implementation Of Panic
    4. Formatted Output
    5. Summary
  20. System Configuration
    1. The Need For Multiple Configurations
    2. Static vs. Dynamic Configuration
    3. The Details Of Configuration In Xinux
    4. Configuring a Xinu System
    5. System Calls And Procedures
    6. Summary
  1. A Quick Introduction to C
  2. Xinu Programmer's Manual

Reviews

Operating System Design

Reviewed by Roland Buresund

Very Good ******** (8 out of 10)

Last modified: May 21, 2007, 3:16 a.m.

Excellent educational tool for core OS.

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required

captcha

required