知識マップ: Adaによるリアルタイムシステムプログラミング ── 優先度・周期・実行時間制御の実践

記事「Adaによるリアルタイムシステムプログラミング ── 優先度・周期・実行時間制御の実践」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Adaの言語仕様Annex Dは、タスク優先度に基づくFIFO_Within_Priorities、保護オブジェクトへ自動的にシーリング優先度を割り当てるCeiling_Lockingプロトコル、累積ドリフトを防ぐdelay untilによる周期実行、静的解析を行いやすいRavenscarプロファイル、ポーリング不要のタイミングイベント、タスク単位の実行時間計測までを言語ランタイムそのものに組み込んでいる。Ceiling_Lockingは、1997年のMars Pathfinderで実際に発生し探査機のリセットを繰り返させた優先度逆転を、保護オブジェクトに入ったタスクをシーリング優先度へ自動昇格させることで防ぐ。Ravenscarプロファイルは相対delayやselect文などを禁止してAdaのタスクを静的タイミング解析しやすいサブセットに制限し、GNATではgnat.adcファイルへのプラグマ記述で有効化する。ただし優先度の実際のマッピングはOSとGNATランタイムに依存する。

Adaのリアルタイムシステムプログラミングの知識マップAda Annex Dが優先度ベースディスパッチ・Ceiling_Locking・delay until・Ravenscarプロファイル・タイミングイベント・実行時間計測をタスクと保護オブジェクトの上にどう組み込み、Ceiling_LockingがMars Pathfinderで起きたような優先度逆転をどう防ぐかを示す図。利用する利用する利用する利用する利用する利用する前提とする前提とする前提とする防止する原因になり得る前提とする前提とする前提とするで構成できる原因になり得る防止する用いるのは非推奨利用する利用する前提とするAnnex D(Adaのリアルタイムシステム標準)Ceiling_LockingプロトコルFIFO_Within_Prioritiesdelay until(絶対時刻の遅延)Ravenscarプロファイルタイミングイベント(Ada.Real_Time.Timing_Events)Ada.Execution_Time(実行時間計測)Adaのタスク(並行処理)保護オブジェクト(protected object)GNAT優先度逆転(priority inversion)Mars Pathfinderの優先度逆転事故相対delay(delay文)周期実行の累積ドリフト

概念間の関係(全21件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Annex D(Adaのリアルタイムシステム標準)
タスク優先度、Ceiling_Locking、delay until、Ravenscarプロファイル、タイミングイベント、実行時間モニタリングなど、リアルタイムシステム向け機能群を定めるAda言語仕様の附属書。
Ceiling_Lockingプロトコル
保護オブジェクトにシーリング優先度を設定し、進入したタスクを自動的にその優先度へ昇格させることで優先度逆転を防ぐ、Annex Dが定めるロッキング方針。
優先度逆転(priority inversion)
低優先度タスクが保持するロックを高優先度タスクが待つ間に、その低優先度タスクが中優先度タスクにプリエンプトされ、高優先度タスクが無期限にブロックされる現象。
Ravenscarプロファイル
動的タスク生成やselect文などを禁止し、Adaのタスク機能を静的解析可能で決定論的なサブセットに制限するプロファイル。
相対delay(delay文)
処理からの相対時間で待機するAdaのdelay文。各反復の処理時間が加算されて周期がずれる累積ドリフトを生みやすく、Ravenscarプロファイルでは禁止される。
delay until(絶対時刻の遅延)
絶対時刻を基準に次の起動時刻を指定するAdaの遅延文。1回の処理が遅れても次回以降の起動時刻を正しく保ち、累積ドリフトを防ぐ。
タイミングイベント(Ada.Real_Time.Timing_Events)
指定した絶対時刻にハンドラをシーリング優先度で呼び出す、ポーリング不要の時刻駆動起床の仕組み。
Ada.Execution_Time(実行時間計測)
タスクごとのCPU消費時間を計測できるAdaの標準ライブラリパッケージ。壁時計時間とは異なり、ブロック中・プリエンプト中はカウントされない。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。