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