このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
実際には、複数のことをいっぺんに行っとるわけやおまへん。 コンピュータは、その時々で ひとつのタスク (もしくはプロセス (process) ) しか処理でけしまへん。せやけどダンさん、コンピュータは、複数のタスクを瞬時に 切り替えながら処理できるさかい、人間の感覚からすると、複数のことを いっぺんに行っとるように錯覚させることができるちうワケや。こないな方法は、 タイムシェアリング (timesharing, 時分割方式) と呼ばれとりまんねん。
タイムシェアリングの管理も、カーネルの仕事のひとつや。カーネルには スケジューラ (scheduler) ちう部分があり、 これが(カーネル以外の)全プロセスに関する情報を内部に保持してるんや。 60 分の 1 秒ごとに、カーネル内のタイマーが進んで、クロック割り込みを 生成しまっせ。スケジューラは、現在実行中のプロセスを停止させて、 それを適宜保留したうえで、別のプロセスに制御を渡しまっせ。
60 分の 1 秒ちうんは、あんまり長い時間とは思えへんかもしれしまへんが、 今日のマイクロプロセッサからすると、数万のマシン命令を実行しうるだけの 間隔なんやし、それだけあれば、ごっつうの仕事がこなせまんねん。それやから、ようけの プロセスが存在したとしたかて、それぞれのプロセスは、その割り当て時間内に 結構な仕事量をこなせるわけや。
実際には、プログラムはその割り当て時間をぜええんぶひとつのこらず使えへん 場合もおます。I/O デバイスから割り込みがかかると、カーネルは効率よう 現在のプロセスを停止させ、割り込みハンドラを実行して、そのあとで 現在のプロセスを再開しまっせ。高いヒイキ順位の割り込みがつぎつぎに起こると、 通常の処理がまるっきし行われなくなってしまいまんねん。この異常事態は、 スラッシング (thrashing) と呼ばれてておるんやけど、 幸なことに、現在の Unix ではめったに起こらなくなっとりまんねん。
事実、プログラムの実行速度は、プログラムが取得するマシン時間の 量によって制限されるゆうことはほとんどおまへん (サウンドや 3-D グラフィックの生成やらなんやら、いくつかの例外はおますが)。実行の遅延が 起こる原因は、たいてい、プログラムがディスクやネットワーク 上にあるデータを取得したろおもて待っとる間に発生するんなんやし、 ほとんどの原因がこれや。
ようけのプロセスを順にいっぺん並行的に処理できるオペレーティングシステムは、 "マルチタスク (multitasking) " OS と呼ばれはります。Unix 系のオペレーティング システムは、もともとマルチタスク OS として設計されており、それをどエライ 得意としてるんや。Windows や Mac OS やらなんやらよりもずっと効率よう処理できまんねん。 Windows や Mac OS は、マルチタスク機能を後から組み込んどるさかい、 Unix に比べるとややおそまつや。この効率のよい、信頼できるマルチタスク 機能は、ネットワーク通信やウェブサービスの分野で Linux を優位に立たせる 大きな要因となっとりまんねん。