組み込みソフト開発のしきいを下げる"リアルタイムOS"のすべて
●OS上での仕事の仕切りかた...スケジューリング
計算機に関わる仕事をしている人の世界では,計算機に行わせる「仕事」について,いろいろな名前がつけられています.ここに一例を挙げてみましょう(表1).これらの呼びかたをなんの定義もなく使うことは,あとあと誤解を招く元になります.この項ではUNIX系のOSで使われているプロセス(process)という用語を使います.
[表1]計算機が管理する仕事の呼びかた
計算機科学用語
|
IBM360
|
UNIX
|
Mach
|
Windows NT/2000
|
ジョブ
|
ジョブ
|
─
|
─
|
─
|
ジョブ・ステップ
|
ジョブ・ステップ
|
─
|
─
|
─
|
タスク
|
タスク
|
─
|
─
|
タスク
|
プロセス
|
─
|
プロセス
|
プロセス
|
プロセス
|
スレッド
|
─
|
(スレッド)
|
スレッド
|
スレッド
|
Windowsの世界では,「タスク・マネージャ」というプログラムがあるにもかかわらず,プログラミングの解説書では,基本の実行単位を「プロセス」であると称している.UNIX系OSにもスレッドは存在するが,Machカーネルで実現されたスレッドとは違い,疑似的にスレッドの機能を実現しているにすぎない.計算機が管理する呼称については,たとえ同じ名称を使っていても,このように,各OSごとに実際の機能が違う場合があるので注意が必要.
ちなみにIBM360とは,往年の汎用計算機のことである.
プロセスとは,UNIX系OSにおける基本の実行単位です.UNIX上でプログラムが動くときには,少なくとも1個のプロセスとしてUNIXのプロセス管理台帳(のようなもの)に載っていなくてはなりません.これが実行単位の意味です.会社の仕事を例にとれば,プロジェクトの進捗表の,ある一つの仕事の中には少なくとも1人の担当者がいなければいけないのが普通ですね.それと同じようなことをOSも行っているわけです.
OSがプロセスを管理するときに大事な機能の一つにスケジューリングがあります.要するに「仕事の段取り」と同じだと考えていただいてよいでしょう.OSが多数のプロセスを実行するときには,各プロセスの実行に不都合が起こらないよう,順番に計算機環境を使えるよう段取りを行わなければなりません.そのために数多くの段取りのしかたが考案されました.それをスケジューリング・アルゴリズム(scheduling algorithm)と呼びます.スケジューリング・アルゴリズムに基づいてプロセスの実行タイミングを計るためのシステム・プログラムをスケジューラと呼びます.そしてスケジューラで決められた時刻どおりにプロセスを実際にCPUに割り当てる作業を受け持つのがディスパッチャなのです.
余談ですが,筆者はこうしたOSのプロセス管理機能に対する名付けかたが,航空機管理システムのそれと非常によく似ていると思います.実際,英語では用語になんら変わることはありません.例えば,航空機の「運行管理責任者」のことを英語では「ディスパッチャ」と呼びます.その果たす役割も似ています.