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]FreeBSDKernel Scheduled Entitiesと呼ばれる類似のマルチスレッド実装を採用していたが、現在では 1:1 モデルに移行している。また Vincent Danjean により Linux カーネルにもパッチとして実装されたことがあり[4]、その際ユーザーレベルの部分はMarcel thread library によって実現された。

参考文献 編集