1.1 マルチタスク

 Linuxカーネルはマルチタスクの仕組みを提供し、複数のプロセス(後述)を同時に実行可能です。ここで同時と書きましたが、ある一時点で動作しているプロセス数は、そのシステムに搭載されているCPU数以上には決してなりません。しかし、管理利用者の視点からは、多数のプロセスが同時に並列動作しているように感じられます。

 Linuxカーネルは、複数のプロセスを細かく切り替えながら動作させ、いかにも同時動作しているような環境を作り出しています。Linuxカーネルは、その時点で最も重要と思われるプロセスに実行権を与えるように動作します。マルチタスク環境を提供するOSであれば、どのOSでもほぼ同様の仕組みで実現されています。 この処理を行う機能のことをプロセススケジューラと呼びます。Linuxカーネルを理解するうえで最も根本的な機能であるため、Linuxカーネル解説の最初の話題として取り上げることにしました。

 Linuxカーネル2.6におけるプロセススケジューリングの方針は、Linuxカーネル2.4のそれとは大きな違いはありません。しかし、その実装は、Linuxカーネル2.4のものから全面的に書き直されました。新しいプロセススケジューラは、「O(1)スケジューラ」(オーダーワン・スケジューラ)と呼ばれています。このプロセススケジューラは、数多くのプロセスが同時に動作する大規模システムにおいて、プロセススケジューリングのオーバーヘッドを減らすことを目的として導入されました。