組み込みソフト開発のしきいを下げる"リアルタイムOS"のすべて
●メモリ管理
メモリ管理の役割を担う部分は,大きく分けて2種類のメモリを管理します.
1)主記憶装置の管理
各タスク(あるいはプロセス)が利用しているメモリ領域の管理や未使用領域の管理などを受け持ちます.
2)仮想記憶の管理
UNIX系OS,Windows,MacOSなどではよくお目にかかるしくみです.あたかも実装されているRAM以上にシステムがメモリを持っているかのように扱うことができるメモリ空間をいいます.英語ではvirtual memoryと呼びますが,これは「実質上のメモリ」という意味です.
プログラムからみた場合,仮想メモリと通常のRAMとの差はまったくありません.これが計算機用語でいう「仮想」の意味するところです.実際に使うことができれば,それがRAMであろうとハード・ディスクの領域であろうと関係ないのです.
日本語本来の「仮想(けそう)」の意味とは違いますのでご注意ください.いずれにしても,実装されている以上のメモリを疑似的に使えるようにしたものが仮想記憶ということができるでしょう.
●パソコンでの仮想記憶管理
デスクトップ・パソコン用のOSではハード・ディスク上に仮想記憶領域を確保し,これらを管理します.これは仮想記憶管理プログラムの役割です.仮想記憶管理のアルゴリズムで一般的なのはページング・アルゴリズムと呼ばれ,さまざまな手法が実現されています.
仮想記憶は,組み込みシステムでは大規模なシステムでもないかぎり実装されないと考えてよいでしょう.もしかしたら,仮想記憶が必要な大規模なシステムもあるかもしれませんので皆無とは言いがたいのですが.
●メモリ保護
複数のプロセスが一つのシステム上で実行される場合に,実行中のプロセスAが,ほかのプロセスBのあるメモリ領域を誤使用しないためのしくみです.規模の小さい,それほど堅牢性を要求されない組み込みシステムなどでは,実装されない場合もあります.
そのような場合に,プロセスがメモリを割り当てる場合,そのプロセス自身でほかのプロセスのメモリ領域を浸食しないようなしくみを考える必要があります.
●入出力管理
入出力管理の役割は,システムに接続されているあらゆる入出力用装置の管理を行うことです.デバイス管理と呼ぶこともあります.各装置は,OS上にあるデバイス・ドライバ(device driver)と呼ばれるプログラムを介して,必要に応じて制御されます.デバイスは,しばしば周辺機器と訳されます.
基本的に,入出力装置そのものはCPUから独立して動作することができます.つまり,入出力装置に仕事を指示したあと,CPUは別の仕事を行うことができるわけです.このとき,入出力装置側の処理の終了,あるいはNIC(network interface card)などに到達した外部からの通知を知らせるために,割り込み(interruption)と呼ばれるしくみを使うのが一般的です.