組み込み向けリアルタイムOSの基礎知識 ―― プログラムの実行およびコンピュータ資源を管理するOSの種類や機能を整理する
ここで「プログラムの実行制御」とは何でしょうか.簡単にいえば,プログラムを必要に応じて動かしたり止めたりすることです(図2).
図2 プログラムの実行制御
OSは要求に応じてプログラムを開始,停止する.次に実行するプログラムを決めることをスケジューリング,プログラムを停止して別のプログラムに切り替えることをディスパッチという.
「コンピュータ資源を管理」とはどういうことでしょうか.コンピュータ資源とは,プロセッサ,メモリ,スイッチなど,プログラムが扱う対象とするさまざまなものを指します注2.資源の管理とは,資源を複数のプログラムで利用できるように調整することです.調整するとは,あるプログラムが資源を利用している間,別のプログラムがそれを利用できないようにしたり,利用する順序をあるルールに従って決定し,振り分けたりするということです(図3).
図3 コンピュータ資源の管理
あるプログラムが資源を利用している間は別のプログラムからアクセスできないようにしたりアクセスの順番を制御することで不整合を防ぐ.
2.コンピュータ資源の仮想化,効率化を図るOS
OSはどのような目的を持ったものなのでしょうか.OSの目的を大別すると次の2点が挙げられます.- コンピュータ資源利用の効率化
- コンピュータ資源の仮想化
● コンピュータ資源利用の効率化
コンピュータ資源利用の効率化とは,「コンピュータが仕事をしていない時間を減らし,ついでにコンピュータとやりとりを行う周辺装置(あるいは利用者)が仕事をしていない時間も減らす」ということです(図4).
図4 コンピュータ資源の利用効率化
時間のかかる入出力処理の完了を待つ間に別のプログラムを実行することでプロセッサの利用効率を上げる.
一つのケースは,コンピュータが周辺機器に処理を依頼するような場合です.身の回りの問題として,ある人が別の人に仕事を依頼する場合を考えてみましょう.完了の報告を受けるまで依頼した人は何をしているでしょうか.大抵の場合,報告を受けるまで別の仕事に取り掛かっているはずです.
もう一つのケースは,コンピュータに対し複数の周辺装置(または利用者)が同時に仕事を依頼する場合です.現実の問題として,複数の人から同時に仕事を依頼されたらどのように仕事を進めるでしょうか.重要な仕事を先に進めるのはもちろんですが,一つの仕事だけに集中してしまうと,ちょっとした仕事を依頼しただけの別の相手が長く待たされてしまうことがあります.その場合,それぞれの依頼をいくつかの細かい作業に分割し,交互に作業を切り替えて進めることがあるかもしれません.そうすれば,依頼した各人が同程度の満足感を得られるはずです.このように,処理をどのように割り振るかは,OSを特徴付ける大きな要素であり,各OSごとにさまざまな方法が採られています.