Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
マルチプロセッサマシン上でLinuxを動作させた場合、RUNキューにリンクされているプロセスのうちCPU数分のプロセスが同時に実行されることになる。カレントプロセスはCPUの数だけ存在する。
スケジューラは全てのCPU上で動作し、それぞれが勝手にプロセスを選びだし、実行権を与える。スケジューラは、実行可能なプロセスでまだ他のCPUに割り当てられていないもののうち、 最も高いプライオリティを持つものを選択する。
Linuxでは、CPUが割り当てられているプロセスもRUNキューにつながれたままの状態で実行されるため、他のCPUから誤って二重にスケジューリングされないよう、現在CPUが割り当てられていることを示すフラグ(has_cpu)を立てるようにしている。 スケジューラはRUNキューを検索する時、このフラグの立っているプロセスをスキップする。
そのCPU上で実行するプロセスが存在しないときは、スケジューラはそのCPU専用に用意されたidleプロセスに実行権を与える。このidleプロセスは、RUNキューにはリンクされていない。
(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:45:46, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members