Scheduler activations

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

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

## 参考文献[編集]

1. ^ Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism
2. ^ An Implementation of Scheduler Activations on the NetBSD Operating System
3. ^ Significant changes from NetBSD 4.0 to 5.0
4. ^ Linux Activations