# 優先度駆動リアルタイム実行系 ## 定義 優先度駆動リアルタイム実行系(priority-driven preemptive executive)とは、ソフトウェア機能を可変長・可変形状の「ジョブ(job)」に分割し、各ジョブに優先度を割り当てて、常に最高優先度のジョブを実行するリアルタイム OS 方式である。低優先度ジョブの実行中に高優先度ジョブが投入されると、低優先度側は中断(サスペンド)され高優先度側が割り込む。対比概念は、計算を固定時間スロットに事前配分する「ボックスカー式(boxcar)executive」で、機能追加のたびに配分をやり直す必要があり、いずれかの処理が割当時間を超過すると系全体が破綻する脆弱な(brittle)方式である。Apollo Guidance Computer 向けに [[Hal Laning]] が1960年代半ばに、参考例のない状態から設計した。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]] §Executive design) ## 横断的知見 - **決定性の放棄と引き換えの安全性・柔軟性**: 優先度駆動方式は「いつ何が実行されるか」を事前に確定できない非決定的なシステムだが、動作を十分に検証できる範囲であれば、信頼性・安全性・利用の柔軟性・開発の容易さをボックスカー式より高める。Apollo の場合、この非決定性の受容が、開発中の機能追加・変更への耐性と、飛行中の予期せぬ過負荷(TLOSS)に対する段階的縮退(→ [[障害緩和]])の両方を可能にした。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]]) - **資源制約(有限 core set / VAC area)が明示的な過負荷検知シグナルに転化する**: AGC の Executive は 8 個の「core set」(ジョブ状態保存領域)と 5 個の「VAC area」(ベクトル/行列演算用の追加作業領域)という有限資源を持ち、要求超過時に `BAILOUT` へ制御を渡してアラームコード(1201/1202)を発行する設計だった。これは資源枯渇を「サイレント劣化」ではなく「明示的な警告」に変換する設計判断であり、Apollo 11 では地上のミッションコントロールが即座に go/no-go 判断を下せる根拠になった。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]]) - **ジョブ(優先度駆動)とタスク(時刻駆動)の役割分離**: AGC では「ジョブ」(優先度に基づき即座にスケジュールされる)と「タスク」(`WAITLIST` により特定時刻に実行される短時間処理)を区別し、両者を連携させる設計(タスクがセンサー値を読み取り、ジョブを適切な優先度でスケジュールする)を取っていた。この分離は、現代のリアルタイム OS における周期的処理と割り込み駆動処理の役割分担に通じる。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]]) ## 未解決の問い - 優先度駆動プリエンプティブ方式のリアルタイム OS 設計思想は、現代の宇宙機 GN&C コンピュータやリアルタイム組込み OS(例: VxWorks、RTEMS)にどこまで直接的な系譜として引き継がれているか。本 wiki には比較対象の現代リアルタイム OS ソースが未収録。 - 資源枯渇時に「明示的アラーム + 人間判断」を挟む Apollo Executive の設計は、完全自動化されたフォールトトレラント分散システム(例: Tandem のプロセスペア)の「透過的フェイルオーバー」志向とどう対比されるか。人間判断を要する縮退と自動縮退のトレードオフは未整理。 ## 関連 - ソース: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]] - エンティティ: [[Hal Laning]] / [[Apollo Guidance Computer]] - 概念: [[リスタート保護]] / [[障害緩和]] ## 出典 - [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]](§Executive design)