ポストPC時代のキーワード「エンベデッド」のすべて ――転換点はカー・ナビゲーション・システム
●タイム・シェアリングとプリエンプティブの違い
ソフトウェアを並行処理させる方法には,時分割で処理するタイム・シェアリング(時分割)方式と,優先度を考慮したプリエンプティブ(割り込み優先権)方式がある(図2).
高価なコンピュータ資源をなるべく多くの人がストレスなく使えるようにしたのがタイム・シェアリング方式である.また,より優先度の高い処理を優先的に処理して空いている時間に優先度の低い処理を行うのがプリエンプティブ方式である(図3).両者とも複数の処理をどのような手順で処理していくかという基本概念である.制御用では,とくに後者が好んで採用された.
リアルタイムOSではプリエンプティブ方式が基本的なタスクのスケジューリング方式となる.ただし,同一優先度の複数タスクにおいて,明示的にタイム・シェアリングで処理することも可能である.この場合,明示的に同一優先度に複数のタスクを割り当てるため,大型コンピュータのようにストレスなく複数の人がCPUタイムをシェアすることと意味が違い,あくまで全体のタスク構成の中で,そのほうが実装面
で有利な場合に使われる.
〔図2〕マルチタスク・プログラムとシーケンシャル・プログラムの違い
マルチタスク・プログラムは,(1)プログラムをタスクに分割,(2)各タスクは並列的に動作,(3)各タスクは優先度を持つ,(4)各タスク間で通信や同期も必要に応じて行っている.並行処理や外部からの割り込みに応答するようなプログラムに最適である.シーケンシャル・プログラムは,一つの処理を順番に逐次処理を行っており,小型プログラムに適している.また逐次処理で演算を行う科学技術計算に最適である.
〔図3〕タイムシェアリングとプリエンプティブの違い
タイムシェアリング処理では,各プロセスに均等なCPU時間を割り当てて実行していく.プリエンティブ処理では,優先度に基づいて,実行条件が成立した処理から実行していく.