RTIC と他方式の比較
RTIC は、堅牢かつ信頼性の高い組み込みソフトウェアの開発に必要とされる、最小限の抽象化レベルを提供することを目指しています。
割り込みと非同期に実行されるタスクの間で可変リソースを安全に共有するために必要な、最小限の機構を提供します。スケジューリングプリミティブは基盤となるハードウェアを活用し、比類のない性能と予測可能性を実現します。事実上、RTIC は Rust の文脈において、並行リアルタイムプログラミングに対するゼロコスト抽象化を提供します。
安全性とセキュリティに関する比較
RTIC を従来のリアルタイムオペレーティングシステム(RTOS)と比較するのは困難です。まず、従来の RTOS は通常、システムの安全性に関して何の保証も伴いません。これは、形式的に検証された seL4 カーネルのような最も堅牢化されたカーネルであっても同様です。完全性、機密性、可用性に関するそれらの主張は、カーネル自体にのみ関するものです(さらに、その構成と環境について追加の仮定を置いた場合に限ります)。彼ら自身も次のように述べています。
「検証済みかどうかにかかわらず、OS カーネルがあるからといって、システムが自動的にセキュアになるわけではありません。実際、どれほどセキュアなシステムであっても、セキュアでない方法で使用される可能性があります。」 - seL4 FAQ
設計によるセキュリティ
情報セキュリティの世界では、一般に次の 3 つが挙げられます。
- 機密性。情報が権限のない第三者にさらされるのを防ぐこと。
- 完全性。データの正確性と完全さを指すこと。
- 可用性。認可されたユーザーがデータにアクセスできることを指すこと。
言うまでもなく、従来の OS は機密性も完全性も保証できません。どちらも、セキュリティクリティカルなコードが信頼できることを前提とするためです。可用性については、通常、問題はシステムリソースの利用に帰着します。リソースの動的割り当てを許可する OS はいずれも、アプリケーションが割り当て/解放と、割り当て失敗のケースを正しく処理することに依存します。
したがって、彼らの主張は正しく、セキュリティは OS の手の及ぶ範囲を完全に超えています。私たちが期待できる最善は、OS がさらなる脆弱性を追加しないことです。
一方、RTIC はその点で頼りになります。宣言的なシステム全体モデルにより、静的なタスクとリソースの集合が提供され、どのデータがどの主体間で共有されるのかを正確に制御できます。さらに、Rust というプログラミング言語自体が、完全性に関して強力な性質を備えています(コンパイル時のエイリアシング、可変性、ライフタイムに関する保証に加えて、データの妥当性も保証されます)。
RTIC を使用すると、これらの性質は、他に実行中のアプリケーションの干渉を受けることなく、システム全体モデルにも及びます。RTIC カーネルは、動的に割り当てられたデータを一切必要とせず、内部的に失敗しません。