SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

[組込み開発入門] ロボットを作ろう

【第2回】リアルタイムOS(RTOS)とは

レゴマインドストームNXTでロボットプログラミング


  • X ポスト
  • このエントリーをはてなブックマークに追加

組込みソフトウェアに求められることを実現するための基盤

 先に示した「処理時間」「処理効率」「リソース量」を考慮したプログラムを作成するには、動作するプログラムの時間管理や実行を制御する仕組みが必要です。この仕組みを提供してくれるのがRTOSです。

 一般的なOSにおけるカーネル部分の機能に該当するため「リアルタイムカーネル」と表現されることもありますが、ここでは「カーネル」と「OS」をひとくくりにして「OS」と記載します

 RTOSは、「処理時間」「処理効率」「リソース量」について、それぞれ以下の機能を提供します。

処理時間

 プログラムの実行時間そのものは、ソフトウェアが動作する機器(CPU、メモリ、動作クロック周波数など)によって決定されます。したがって、プログラム処理に必要な時間を変えることはできません。RTOSは、該当機器で動作するプログラムの処理時間を厳密に管理する機能を提供します。

  1. 処理の優先度を制御する機能

    結果として処理全体の実行時関を予測することが可能になる

  2. 定められた処理時間が超過していないかを監視する機能

    予定した処理完了時間のことを「デッドライン」、監視機能を「デッドラインモニタリング」と呼ぶ

 RTOSを利用してもすべての処理が予定時間内で完了するわけではありません。短時間で処理が終わるようにプログラムを作成し、各処理の優先度を設定することで、さまざまな条件下でデッドラインを超えないようにするのは開発者の役割です。

処理効率

 RTOSは、1つの処理を「タスク」という単位で扱います。タスクには優先度を付けることができ、それに応じて実行タスクを切り換える機能を提供します。

タスク優先度と実行タスク切り換えの例:携帯電話で、メール表示中に着信した場合
タスク優先度と実行タスク切り換えの例:携帯電話で、メール表示中に着信した場合

 また、タスクよりも高い優先度で機器の手動操作や機器からの信号受信を処理することができます。このような処理のことを「割り込み処理」と呼び、割り込み処理をプログラムするための仕組みもRTOSは提供します。例えば、一定時間ごとに処理を繰り返す場合には、RTOSで提供されるタイマー割り込みを使って一定時間毎の処理を実現することができます。

リソース量

 RTOSは直接的に機能を提供しません。しかし、タスクや割り込みを利用できるため、制御内容に注力してプログラムを作成することができます。このことは冗長な処理を少なくし消費リソースを軽減することにつながります。

RTOSと汎用OSの違い

 RTOS(ここではハードタイム処理に適したRTOS)とPC向けの汎用OS(WindowsやLinuxなど)では、同じOSという名称がついていても役割や機能は大きく異なります。

 OSの機能は、おおむね以下の図のように構成されています。

OSの機能構成
OSの機能構成

 汎用OSとRTOSには、以下のような違いがあります。

汎用OS
機能 利用者が直接コンピュータを操作することを前提に必要な機能が提供されます。このため、プログラムを制御する機能の他に、画面を表示するための機能(ウィンドシステム)や、ファイル操作を行う機能(ファイルシステム)が標準的に提供されます。
制御 多くのプログラムを同時に実行できたほうが、利用者が操作するアプリケーション(Webブラウザ、メーラーなど)が快適に利用できます。このため、プログラムの実行制御も、一定時間ごとにタスクを処理していく方式が採用されています。しかし、1つのタスクの処理時間が予測できず、ハードリアルタイム処理に適しません。
提供 インストーラにより共通的なパッケージとして提供されます。
RTOS
機能 機器上で動作するプログラムの実行時間を厳密に管理することを前提に必要な機能提供しています。このため、提供される機能はプログラムを制御する機能(カーネル)が中心となります。機器によってはメモリ管理や通信管理を含むものもあります。
制御 プログラムの実行制御は、実行時間を管理するため基本的に1つのタスクのみを動作させます。優先度による切り換えによって、動作するプログラムを切り換えます。割り込みは例外です。
提供 汎用OSとは異なり、動作する機器の特性(メモリ、動作させるプログラム)に合わせて提供します。組込みソフトに必要な小リソースを満たすためです。そのため、機器専用パッケージか、最適なOSを生成するためのツール(OSGenerator)の形式で提供されます。

次のページ
RTOSを使うことのメリット

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
[組込み開発入門] ロボットを作ろう連載記事一覧

もっと読む

この記事の著者

高橋 修(タカハシ オサム)

(株)永和システムマネジメント所属パッケージ製品、IT系システムの開発を経て、組み込み分野向けツール開発に従事。組み込みソフトウェアのマニアックさとライブ感に大きな価値を感じている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3702 2009/03/17 10:21

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング