Threads and Input/Output in the Synthesis Kernel
    H. Massalin, and C. Pu.  Proceedings of the 12th ACM Symposium
    on Operating Systems Principles December 1989, pp. 191-200
    The Goals: Make kernel calls fast, lower synchronization
    overhead, do fine-grain scheduling, adapt to load changes
    How:
    
      - Run-time compilation: generate code with constants compiled
      in for frequent operations. E.g.: each thread only accesses only
      its own element of a table, so just go for it without
      locking.
 
      - Some clever optimistic locking. Specialized queue structures
      for certain access patterns.
 
      - Single address space makes kernel boundary crossings cheap.
 
      - Save partial register set on context switch; generate code to jump right into new thread from old one.
 
      - Interrupts handled by current thread
 
    
    
    Some pitfalls: No virtual memory; context switching speed obtained by using RR scheduling (but with variable quanta) 
    
    Umesh Shankar
Last modified: Tue Jul  3 17:54:35 PDT 2001