CPU Inheritance Scheduling
Threads schedule each other by donating the CPU using a directed yield primitive
One root scheduler per processor sources all CPU time
Kernel dispatcher manages threads, events, and CPU donation without making any scheduling policy decisions