# リスタート保護
## 定義
リスタート保護(restart protection)とは、ソフトウェア処理中の要所に「waypoint」(チェックポイント相当の地点)を登録し、電源瞬断・ハードウェア異常検知・無限ループ疑い・メモリのパリティ故障などによる再起動が発生しても、各ジョブが直近の waypoint から処理を再開できるようにする設計である。Apollo Guidance Computer では、着陸などの重要な操作の途中でコンピュータの電源が切断・再投入されても飛行を中断せずに済むよう、月着陸の約1年前から導入された。冪等でない操作(例: `X = X + 1`)がリスタートで二重実行されないよう、更新の前後に waypoint を配置する規約が用いられた(→ [[べき等性]])。複数ジョブが同一処理をキューに持つ場合は最新のもののみが再開対象になり、重要度が低いとみなされた一部処理(restart-protected でない処理)はリスタート時に単に消失する。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]] §Restart protection)
## 横断的知見
- **ハードウェア障害対策として設計された機構が、ソフトウェア側の資源枯渇障害の自己修復に転用された**: リスタート保護はもともとハードウェア起因の再起動に備えて導入されたが、Apollo 11 の 1201/1202 アラームでは、TLOSS による Executive の資源(core set/VAC area)枯渇時にソフトウェア自身が `BAILOUT` 経由でリスタートを発行し、滞留した未完了ジョブスタブを一掃して資源を解放するという、意図しない耐障害効果を発揮した。設計目的と異なる障害クラスに対して機構が有効に働いた点は、[[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]] が論じる「Heisenbug は状態リセット+再実行で解消する」という知見と同型の構造を持つ——両者とも、障害の根本原因を突き止めずとも、状態をクリーンな既知点へ巻き戻すことで運用を継続できる、という洞察に基づく。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]], [[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]] §Software faults are soft)
- **チェックポイント配置は「何を守り、何を切り捨てるか」の設計判断そのもの**: Apollo のリスタート保護は全ジョブを一律に保護したわけではなく、着陸継続に不可欠な処理のみを保護対象とし、DELTAH モニタのような監視系表示処理は非対象として意図的に切り捨てた。この「重要度による保護範囲の選別」は、GPU 訓練の [[チェックポイント]]がdirty pageのみを対象に保存範囲を絞る設計判断と同じ、コスト(保護範囲を広げるほど時間・複雑性が増す)と復旧の確実性のトレードオフを扱っている。(Source: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]])
## 未解決の問い
- waypoint 方式(コード内の明示的な地点登録によるチェックポイント)は、現代の透過的チェックポイント方式(OSレベルのdirty page検出、CRIU等)と比べ、開発者の認知負荷とチェックポイント粒度の精度のどちらを優先するトレードオフなのか。両者を同一の設計空間で比較した文献は本 wiki に未収録。
- 「資源枯渇 → 明示的アラーム → リスタートによる自己修復」という Apollo Executive の連鎖は、現代の分散システムにおける自動スケールダウン・サーキットブレーカーパターンとどこまで類比可能か。
## 関連
- ソース: [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]] / [[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]]
- エンティティ: [[Apollo Guidance Computer]]
- 概念: [[優先度駆動リアルタイム実行系]] / [[チェックポイント]] / [[べき等性]]
## 出典
- [[@2004__AAS__Tales from the Lunar Module Guidance Computer|Tales from the Lunar Module Guidance Computer]](§Restart protection)
- [[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]](§Software faults are soft)