Title
Abstract
Acknowledgements
Contents
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
Bibliography
Appendix A
Synthesis: An Efficient Implementation of Fundamental Operating System Services - Abstract
Contents
1. Introduction
1.1 Purpose
1.2 History and Motivation
1.3 Synthesis Overview
1.3.1 Kernel Structure
1.3.2 Implementation Ideas
1.3.3 Implementation Language
1.3.4 Target Hardware
1.3.5
Unix
Emulator
2. Previous Work
2.1 Overview
2.2 The Tradeoff Between Throughput and Latency
2.3 Kernel Structure
2.3.1 The Trend from Monolithic to Diffuse
2.3.2 Services and Interfaces
2.3.3 Managing Diverse Types of I/O
2.3.4 Managing Processes
3. Kernel Code Generator
3.1 Fundamentals
3.2 Methods of Runtime Code Generation
3.2.1 Factoring Invariants
3.2.2 Collapsing Layers
3.2.3 Executable Data Structures
3.2.4 Performance Gains
3.3 Uses of Code Synthesis in the Kernel
3.3.1 Buffers and Queues
3.3.2 Context Switches
3.3.3 Interrupt Handling
3.3.4 System Calls
3.4 Other Issues 3.4.1 Kernel Size
3.4.2 Protecting Synthesized Code
3.4.3 Non-coherent Instruction Cache
3.5 Summary
4. Kernel Structure
4.1 Quajects
4.1.1 Quaject Interfaces
4.1.2 Creating and Destroying Quajects
4.1.3 Resolving References
4.1.4 Building Services
4.1.5 Summary
4.2 Procedure-Based Kernel
4.2.1 Calling Kernel Procedures
4.2.2 Protection
4.2.3 Dynamic Linking
4.3 Threads of Execution
4.3.1 Execution Modes
4.3.2 Thread Operations
4.3.3 Scheduling
4.4 Input and Output
4.4.1 Producer/Consumer
4.4.2 Hardware Devices
4.5 Virtual Memory
4.6 Summary
5. Concurrency and Synchronization
5.1 Synchronization in OS Kernels
5.1.1 Disabling Interrupts
5.1.2 Locking Synchronization Methods
5.1.3 Lock-Free Synchronization Methods
5.1.4 Synthesis Approach
5.2 Lock-Free Quajects
5.2.1 Simple Linked Lists
5.2.2 Stacks and Queues
5.2.3 General Linked Lists
5.2.4 Lock-Free Synchronization Overhead
5.3 Threads
5.3.1 Scheduling and Dispatching
5.3.2 Thread Operations
5.3.3 Cost of Thread Operations
5.4 Summary
6. Fine-Grain Scheduling
6.1 Scheduling Policies and Mechanisms
6.2.1 Hardware Phase Locked Loop
6.2.2 Software Feedback
6.2.3 FLL Example
6.2.4 Application Domains
6.3 Uses of Feedback in Synthesis
6.3.1 Real-Time Signal Processing
6.3.2 Rhythm Tracking and The Automatic Drummer
6.3.3 Digital Oversampling Filter
6.3.4 Discussion
6.4 Other Applications
6.4.1 Clocks
6.4.2 Real-Time Scheduling
6.4.3 Multiprocessor and Distributed Scheduling
6.5 Summary
7. Measurements and Evaluation
7.1 Measurement Environment
7.1.1 Hardware
7.1.2 Software
7.2 User-Level Measurements
7.2.1 Comparing Synthesis with SUNOS 3.5
7.2.2 Comparing Window Systems
7.3 Detailed Measurements
7.3.1 File and Device I/O
7.3.2 Virtual Memory
7.3.3 Window System
7.3.4 Other Figures
7.4 Experience
7.4.1 Assembly Language
7.4.2 Porting Synthesis to the Sony NEWS Workstation
7.4.3 Architecture Support
7.5 Other Opinions
8. Conclusion