Scheduler activations

Scheduler activations とはマルチスレッドを実現するための機構で、オペレーティングシステムのプロセススケジューラに実装され、カーネルレベルスレッドの機能とユーザーレベルスレッドの柔軟性・性能を提供することができる。Scheduler activations は N 個のアプリケーションスレッドを M 個のカーネルスレッド(あるいは仮想プロセッサ)に割り当てるいわゆる "N:M" モデルを用いる。これは、カーネルレベルのマルチスレッド(1:1)とユーザーレベルのマルチスレッド(N:1)の中間的な方法である。一般的にはN:Mのマルチスレッド機構は、カーネル空間とユーザー空間両方のコードに変更が必要なため、カーネルスレッドやユーザースレッドより実装が複雑である。

Scheduler activations は 1999年に Anderson、Bershad、Lazowska、Levy により提唱された。Nathan Williams によってNetBSD のカーネルに実装された が、NetBSD は現在 1:1 スレッドモデルに移行している。FreeBSDKernel Scheduled Entitiesと呼ばれる類似のマルチスレッド実装を採用していたが、現在では 1:1 モデルに移行している。また Vincent Danjean により Linux カーネルにもパッチとして実装されたことがあり、その際ユーザーレベルの部分はMarcel thread library によって実現された。

参考文献

Uses material from the Wikipedia article Scheduler activations, released under the CC BY-SA 4.0 license.