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