scheduler activations

{{Short description|Operating system threading mechanism}}

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 ("1:1") and user-level ("N:1") 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 Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism in 1991.{{Cite book |last1=Anderson |first1=Thomas E. |last2=Bershad |first2=Brian N. |last3=Lazowska |first3=Edward D. |last4=Levy |first4=Henry M. |title=Proceedings of the thirteenth ACM symposium on Operating systems principles |chapter=Scheduler activations: Effective kernel support for the user-level management of parallelism |date=September 1991 |pages=95–109 |chapter-url=https://dl.acm.org/doi/10.1145/121132.121151 |doi=10.1145/121132.121151 |isbn=0897914473 |s2cid=264864317 }} Support was implemented in the NetBSD kernel by Nathan Williams[http://web.mit.edu/nathanw/www/usenix/freenix-sa/freenix-sa.html An Implementation of Scheduler Activations on the NetBSD Operating System] but has since been abandoned in favor of 1:1 threading.[http://www.netbsd.org/changes/changes-5.0.html#newlock2 Significant changes from NetBSD 4.0 to 5.0] 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: Linux Activations, the user-level part being done in the Marcel thread library.

References

Category:Threads (computing)

{{operating-system-stub}}