[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:スケジューラ資源
}}}
= スケジューラ資源 = #SECTION06440000000000000000
スケジューラはシステムコール処理と並行して動作が可能なように、独自の排他を行っている。(カーネルロックの範囲外)これにより、一方のCPUでシステムコール実行中であっても、他のCPUではそれとは無関係にプロセススケジューリング処理を行うことが可能である。
システムコール処理中からスケジューラが呼び出されるとまずカーネルのロックを解除を行い、その後でスケジューラ資源のロックを行っている。
スケジューラが呼び出されると、まずカーネルのロックを解除を行い(システムコール処理中から呼び出されたときのみ)、その後でスケジューラのロックを行っている。これは、プロセスがCPUを放棄して待ちに入っている間は、別のプロセスがシステムコールを実行可能となる。
元のプロセスが起床し再スケジューリングされると、このプロセスは再びカーネルロックを行なった後に、システムコール処理の続きを開始する。もしこの時、他のCPU上でカーネルをロックしている奴がいれば、ここでスピンロックして待つことになる。
時計処理によるプロセス再スケジューリング要求や、デバイスからの割り込みによるプロセスの起床などによるプリエンプション処理からスケージューラが呼び出された場合は、即スケジューラ資源をロックしスケジューリング処理を開始する。
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]