Scheduler activations


Scheduler activations are a threading mechanism that, when implemented in an operating system's process scheduler, provide kernel-level thread functionality with user-level thread flexibility and performance. This mechanism uses a so-called "N:M" strategy that maps some N number of application threads onto some M number of kernel entities, or "virtual processors." This is a compromise between kernel-level and user-level threading. In general, "N:M" threading systems are more complex to implement than either kernel or user threads, because both changes to kernel and user-space code are required.
Scheduler activations were proposed by Anderson, Bershad, Lazowska, and Levy in in 1991. Support was implemented in the NetBSD kernel by Nathan Williams but has since been abandoned in favor of 1:1 threading. FreeBSD had a similar threading implementation called Kernel Scheduled Entities which is also being retired in favor of 1:1 threading. Scheduler activations were also implemented as a patch for the Linux kernel by Vincent Danjean: , the user-level part being done in the .