!!! 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