組み込みソフト開発のしきいを下げる"リアルタイムOS"のすべて
●組み込みシステムの開発者に要求される知識や技術
アプリケーション・プログラムという語句がでてきましたが,これはシステム・プログラムと対比する意味で使いました.システム・プログラムとは,「ハードウェアとアプリケーション・プログラムをつなぐためのソフトウェア」,アプリケーション・プログラムとは,「システム・プログラムの機能を利用して,実際に人間(あるいは計算機どうし)が使うために書かれたプログラム」であるといえるでしょう(図2).このようなプログラムを作る人たちをプログラマと称しています.
[図2<システム・プログラムとアプリケーション・プログラム
システム・プログラムは,ハードウェアとアプリケーション・プログラムをつなぐためのプログラム.アプリケーション・プログラムは,システム・プログラムの機能を利用して,ユーザが使うために書かれたプログラム.
アプリケーション・プログラムを作る人はシステム・プログラムの仕様と何を行うプログラムを作るかを知っていればプログラムを書けますが,システム・プログラムを作る人は,ハードウェアとアプリケーション・プログラム,そしてほかの関連するシステム・プログラムについて熟知していないと正しくシステムが動くようなプログラムを書けません.ここにアプリケーション・プログラムとシステム・プログラムを分けた理由があります.組み込みシステムの開発者に要求される知識や技術は,ここでいうシステム・プログラマとアプリケーション・プログラマに要求されるものの両方であると筆者は考えています.
次にOSの仕組みについて考えてみたいと思います.
●OSのしくみ...OSの仕事は計算機システムの管理職
OSの仕事は「計算機のすべてを管理する」ことです.いってみれば,会社組織において部長や課長が部内・課内の仕事担当者を決め,仕事内容について管理するのと同じような仕事を,OSも計算機システムの中で行っているのです.OSが計算機の何を管理しているのかを図3で説明しておきます.
OSの種類にもよりますが,OSが計算機資源を管理することによって,あたかも1個のCPUが複数の仕事を同時に行っているかのように処理できるようになります.このようなことができるOSを,マルチプログラミング可能なOS,あるいはマルチタスクOSと呼びます.
[図3]計算機が管理する対象の例
●プロセス管理
OS上で動かす処理(プログラム,タスク,ジョブ,プロセス,スレッドなど).
1)どの仕事が
2)どの場所のメモリをどれだけ使っているか
3)いつからいつまでCPUやメモリを使っているか
4)いつ,どこから,情報をもらって(入力)いるか
5)いつ,どこに,処理結果(出力)を出すのか
●メモリ管理
RAMなどの物理メモリ,仮想記憶など
●入出力管理
キーボード,マウス,モニタ,ネットワーク,記憶装置(ハードディスク,CD-ROMなど)など