Show page source of internal24-284-プロセススケジューラ #25290

[[PageNavi(internal24-navi)]]

{{{ comment
h2w-title:プロセススケジューラ
}}}
 

= プロセススケジューラ = #SECTION07120000000000000000

マルチプロセッサマシン上でLinuxを動作させた場合、RUNキューにリンクされているプロセスのうちCPU数分のプロセスが同時に実行されることになる。カレントプロセスはCPUの数だけ存在する。

スケジューラは全てのCPU上で動作し、それぞれが勝手にプロセスを選びだし、実行権を与える。スケジューラは、実行可能なプロセスでまだ他のCPUに割り当てられていないもののうち、 最も高いプライオリティを持つものを選択する。

Linuxでは、CPUが割り当てられているプロセスもRUNキューにつながれたままの状態で実行されるため、他のCPUから誤って二重にスケジューリングされないよう、現在CPUが割り当てられていることを示すフラグ(has_cpu)を立てるようにしている。 スケジューラはRUNキューを検索する時、このフラグの立っているプロセスをスキップする。

そのCPU上で実行するプロセスが存在しないときは、スケジューラはそのCPU専用に用意されたidleプロセスに実行権を与える。このidleプロセスは、RUNキューにはリンクされていない。

 [[Embed(internal24-images:img120.gif)]]
 

----

''(NIS)HirokazuTakahashi [[BR]]2000年12月09日 (土) 23時55分06秒 JST''1

[[PageNavi(internal24-navi)]]