• ベストアンサー

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

リアルタイムOSの特徴である「タスクの静的な生成」とはどういう意味でしょうか。 コンパイル時にタスクを生成することだそうですが、 ・「コンパイル時にタスクを生成」とは? ・汎用OSにおけるタスク生成と、どのように違うのか? ・そもそも「タスク生成」とは? 静的というと、「動かない=あらかじめ決められている」というイメージを持っていますが、正しいでしょうか。 ご教示お願いいたします。

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

  • ベストアンサー
  • R32C
  • ベストアンサー率39% (115/290)
回答No.1

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

tomiko35
質問者

お礼

ご回答ありがとうございます。 つまり静的タスク生成とは、 「タスクのワークエリア(メモリ上の作業領域)等をあらかじめ定めておいて、OS起動時にその定義通りにタスクを生成する(ワークエリアを確保する)」 ということですね。 >変なテキストファイル 「静的API」のことでしょうか? リアルタイムOSにおけるタスク生成についてまとめると、 (参照:onosuke様 参考URL) 1.「静的API」という記法で、制御ブロック(タスクの状態を表すデータ構造)の初期状態やメモリーの割り付けを、あらかじめ定めておく。 2.↑を「コンフィギュレータ」というツールで、コンパイルできる言語に変換する。 3.↑をコンパイルし、ROMテーブルにデータを出力する。 4.OS起動時、↑のデータに基づいてタスクを生成する(ワークエリアを確保し、タスク実行の準備をする)。 また、汎用OSとリアルタイムOSを比べると、 ・汎用OS…必要時にワークエリア等を決め、タスクを生成する。 ・リアルタイムOS…あらかじめワークエリア等を決めておき、その設定に従ってOS起動時にタスクを生成する。 なるほど! すっきりしました。 以上の解釈に誤りがありましたら、ご指摘お願いいたします。

その他の回答 (1)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

参考URLからの引用です。 ----ここから引用---- >タスクやセマフォなど,OSの管理する各種のオブジェクトを >必要に応じて動的に生成/削除するのではなく, >あらかじめ静的に(システム設計時に)生成しておくアプローチがある。 ----ここまで引用---- 考え方としては、上記引用文のように 設計段階で各種の資源(OSの管理する各種のオブジェクト)を あらかじめ決定(確定/限定)することです。 上記考え方の実装(実現方法)のひとつが、 「タスクの静的な生成」ですね。 ここで閑話休題。 「リアルタイムOSの特徴」として列挙されるモノは、汎用OSの差異に注目して列挙したモノです。 一方、「上記の考え方」は、「リアルタイムOSの目的」=「制約の厳しい組込システムに特化したOSを提供する」を達成する方針として出てきたものです。 こういったことを踏まえて、 「Bという手段はどういうことなのか?」から視点を変えて、 「Aという目的を達成するための手段がBである」という読み方をすると、 理解しやすくなりませんか?

参考URL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20051111/224418/
tomiko35
質問者

お礼

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

関連するQ&A

  • リアルタイムOS

    リアルタイムOSの「リアルタイム」の意味が今ひとつ分かりません。Message CueやTaskによる並列動作はリアルタイムOSの大きな利点ですが、このリアルタイムの意味自身が昔から疑問です。何かの本に「あるタスクを完了する時間が保証されている」とありましたが、タスクの負荷が重い部分や、割り込みが重なったりする最悪の事態などが生じると、このような保証をするのは難しいような気がします。このリアルタイム性について分かりやすい説明をお願いします。

  • Windowsのアプリ開発と、リアルタイムOSへの組込み開発、注意すべき点や特徴ってなんでしょう?

    若輩プログラマーです。 Windowsの業務アプリケーション(オープン、Web)開発と、リアルタイムOSへの組込み開発の経験があるのですが、いつも上位モジュール(アプリ層)の開発だったせいかそれぞれの特徴が良く分かりませんでした。 リアルタイムOSというと、割り込みがどうとか、タスクがどうとか、メモリがどうとか。。。でもこれって、Windowsアプリでも注意しないといけない点って同じですよね? そこでご質問です、 Windowsのアプリ開発と、リアルタイムOSへの組込み開発、注意すべき点や特徴ってなんでしょう?

  • osのタスク管理

    OSのタスク管理で1実行可能状態、2実行状態、3待機状態があって、待機状態というのはCPUの処理を終えて入出力装置の処理を待っている状態なのですか? タスクが生成されると[実行可能状態]にドンドン溜まるのでしょうか?そして優先的に[実行状態]に送られるのでしょうか? あと[実行可能状態]と[待機状態]は1次キャッシュで待機している状態なのでしょうかそれともメモリで待機している状態なのでしょうか? タスクの状態偏移について詳しく教えて下さい。

  • TRON系とその他OS

    国内ではTRONで開発している製品が多いように見えますが、そもそもTRONとはどういう特徴をもったOSなんでしょうか? 坂村チームはどんな良さがあると考えてTRONを推奨したんでしょうか? LinuxやWindowsと比べて何がそんなに優れているんでしょうか? また、LinuxやWindowsは自宅のPCで気軽に動かせますが、TRON系は見たことがありません。 そもそもTRONはμITRONのようなリアルタイムOSだけが出世してるんでしょうか 自宅で使って便利なものはあるんでしょうか? ちなみに当方は素人です。

  • 楽天リアルタイムスプレッドシートについて

    楽天証券マーケットスピードのリアルタイムスプレッドシートについて質問です。 Excel2013にリアルタイムスプレッドシートを使って、データを取得したいのですが、 添付画像のコンパイルエラーが発生して困っています。 手順は下記楽天のマニュアルのとおり行っています。 http://marketspeed.jp/guide/rss.html OSはWindows7 64bitです。 リアルタイムスプレッドシートは64bitのコンパイラでは駄目なのでしょうか? また、何か対応策はあるのでしょうか? ご存知の方がおられましたら、アドバイスよろしくお願いいたします。

  • 「タスク」って何ですか?

     私は今gooの簡単HPで自分のホームページを作っている最中なのですが、メニューに「タスク」という欄があります。これは一体具体的に何の欄なのでしょうか?私はhttp://e-words.jp/w/E382BFE382B9E382AF.htmlで「タスク」の意味を調べたのですが、全く意味が分かりません。「OSから見た処理の実行単位」と言われても…。という感じです。  どなたか、詳しく教えて下さい。

  • インスタンスとオブジェクト 生成

    クラスのオブジェクトを生成するときに(newをつかって) ●インスタンスを生成する。 ●オブジェクトを生成する。 と参考書に書いてありますが、言い方はどちらでもいいそうです。 でも、2種類の言い方がるということは厳密には意味が違うような気がするのですが、皆さんはどう思いますか? またどちらの言い方を使っていますか? どちらが正しいのでしょうか?

    • ベストアンサー
    • Java
  • WinXPHeタスクの表示について

    操作中におかしくなって、タスクを表示させると「終了」「切替」「新しいタスク」の窓が出て、時計の横にテレビのようなものが出ます。緑色です。操作次第で沢山でます。消す時は1ヶずつ右クリックして終了させています。これは何なのでしょう。またどのように対応したらいいのでしょうか。初心者です。詳しく意味や対応を教えていただくとありがたいです。よろしくお願いします。なお、パソコンへの影響等も合わせてご教示お願いいたします。

  • midiファイルを生成するソフトを使う場合、OS固有のAPIを利用する必要があるか?

    3つほど質問があるのですが、よろしくお願いします。 midiファイルを生成するソフトを作りたいのですが、 単純にmidiファイルを生成するだけのソフトなら、 Win32APIなどのOS固有のAPIを利用せずとも製作可能でしょうか? 例えば、midiOutOpen等のWin32APIを利用しなければ製作できないmidi関連ソフトは、どのようなものでしょうか?midiプレイヤーなどでしょうか? また、単純にmidiファイルを生成するだけのソフトであれば、 Windows上でもLinux上でも同一ソースでコンパイルして同じように動くものが作れるでしょうか? どなたか分かる方がいらっしゃいましたら、よろしくお願いしますm(_ _)m

  • タスクマネージャー

    CPU使用率を確認したいので タスクマネージャーを常に起動させています。 毎回起動するのはそれほどめんどうではないですが、 OS起動時に起動できたらいいと 思っています。 タスクマネージャーをOS起動時に 起動させることはできるのですか?