こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

リアルタイムOSにおける「静的なタスク生成」とは?

リアルタイムOSの特徴である「タスクの静的な生成」とはどういう意味でしょうか。
コンパイル時にタスクを生成することだそうですが、

・「コンパイル時にタスクを生成」とは?
・汎用OSにおけるタスク生成と、どのように違うのか?
・そもそも「タスク生成」とは?

静的というと、「動かない=あらかじめ決められている」というイメージを持っていますが、正しいでしょうか。
ご教示お願いいたします。

投稿日時 - 2010-02-19 21:21:39

QNo.5690292

困ってます

質問者が選んだベストアンサー

貴殿の理解でおおよそ間違っていません。

RTOSの資源の少ない環境においては、タスクは、起動時点で
生成済みで、削除されない作りをすることが多いためです。
ですので、起動されてから生成済みのタスクを起動したり、停止したり
制御をします。

以下、μITRON4.0の場合について回答します。
・「コンパイル時にタスクを生成」とは?
--> 実際には、カーネル起動時にタスクが起動するまでの間に
  タスクを生成します。 どんなタスク生成するするかは、
  実行時には、ROMテーブルなどに出力されているデータに基づいて
  生成されます。そのROMテーブルは、コンパイル前に
  変なテキストファイルに定義を書いてそれをコンフュギュレータ
  と呼ばれる専用ツールを使って、コンパイルできる言語に変換します。
  μITRONによっても方言があって、変なテキストファイルではなく、
  直接C言語でROMテーブルなどを定義するものもあります。Nortiという
  RTOSはそうなっています。
・汎用OSにおけるタスク生成と、どのように違うのか?
--> 利用するメモリとCPU負荷が少なくて済みます。
  静的生成の反対の動的生成では、ヒープメモリ等の獲得が必要に
  なります。汎用OSではMMUが搭載されている場合が多く、メモリを
  効率的に使えますが、RTOSではそれがなく、メモリが非効率になります。
  また、生成時のエラーチェックは、動的生成ではシステム起動時ですが、
  静的生成では、コンパイルまでにエラーチェックされていますので
  実行時はエラー処理をかなり省くことができます。

・そもそも「タスク生成」とは?
--> タスクを実行するためのタスク固有のワークエリアを確保して
  起動をかければ実行できる状態にすること

静的というと、「動かない=あらかじめ決められている」というイメージを持っていますが、正しいでしょうか。
--> そうです。変なテキストファイルであらかじめ決めておきます。

投稿日時 - 2010-02-20 09:34:35

お礼

ご回答ありがとうございます。

つまり静的タスク生成とは、
「タスクのワークエリア(メモリ上の作業領域)等をあらかじめ定めておいて、OS起動時にその定義通りにタスクを生成する(ワークエリアを確保する)」
ということですね。

>変なテキストファイル
「静的API」のことでしょうか?

リアルタイムOSにおけるタスク生成についてまとめると、
(参照:onosuke様 参考URL)
1.「静的API」という記法で、制御ブロック(タスクの状態を表すデータ構造)の初期状態やメモリーの割り付けを、あらかじめ定めておく。
2.↑を「コンフィギュレータ」というツールで、コンパイルできる言語に変換する。
3.↑をコンパイルし、ROMテーブルにデータを出力する。
4.OS起動時、↑のデータに基づいてタスクを生成する(ワークエリアを確保し、タスク実行の準備をする)。

また、汎用OSとリアルタイムOSを比べると、
・汎用OS…必要時にワークエリア等を決め、タスクを生成する。
・リアルタイムOS…あらかじめワークエリア等を決めておき、その設定に従ってOS起動時にタスクを生成する。


なるほど! すっきりしました。
以上の解釈に誤りがありましたら、ご指摘お願いいたします。

投稿日時 - 2010-02-20 22:54:37

ANo.1

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

参考URLからの引用です。
----ここから引用----
>タスクやセマフォなど,OSの管理する各種のオブジェクトを
>必要に応じて動的に生成/削除するのではなく,
>あらかじめ静的に(システム設計時に)生成しておくアプローチがある。
----ここまで引用----
考え方としては、上記引用文のように
設計段階で各種の資源(OSの管理する各種のオブジェクト)を
あらかじめ決定(確定/限定)することです。

上記考え方の実装(実現方法)のひとつが、
「タスクの静的な生成」ですね。

ここで閑話休題。
「リアルタイムOSの特徴」として列挙されるモノは、汎用OSの差異に注目して列挙したモノです。
一方、「上記の考え方」は、「リアルタイムOSの目的」=「制約の厳しい組込システムに特化したOSを提供する」を達成する方針として出てきたものです。

こういったことを踏まえて、
「Bという手段はどういうことなのか?」から視点を変えて、
「Aという目的を達成するための手段がBである」という読み方をすると、
理解しやすくなりませんか?

参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20051111/224418/

投稿日時 - 2010-02-20 15:59:12

お礼

ご回答ありがとうございます。
参考URLを見てみました。

つまり、リアルタイムOSにおける静的タスク生成は、
「制約の厳しい組み込みシステムに対応するために、あらかじめタスク生成に必要な設定(メモリ割り付け等)を決めておくことで、初期化処理を短くする」
という意味があるんですね。

R32C様のご回答と合わせて、そちらのお礼にてまとめさせて頂きました。
ありがとうございました。

投稿日時 - 2010-02-20 23:08:29

-広告-
-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-