本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
前回を読んでいない方はこちらからどうぞ.
リアルタイムシステムの記事一覧はこちらからどうぞ.
リアルタイムシステムで使われているリアルタイムOSは,主にC言語で書かれています.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
目次
リアルタイムシステムに必要な6つの性質
今回は,リアルタイムシステムに必要な性質を紹介していきます.
前回までの説明でリアルタイムシステムが何なのかをイメージできたと思いますので,具体的な内容を説明してきます.
今回は少し難しい話をします.
適時性(Timeliness)
タスクの処理の結果がその価値だけでなく,時間領域においても正しくなければならない性質のことです.
結果として,リアルタイムOSは以下のカーネルの機構を提供しなければなりません.
- 時間管理
- 明示的な時間制約や異なる重要度に対応するタスク管理
予測性(Predictability)
リアルタイムシステムに必要な性能を実現するためには,スケジューリングの決定の結果を解析可能でなければなりません.
安全で重要なアプリケーションでは,すべての時間制約はリアルタイムシステムの起動前(オフライン)に保証できなければなりません.
もしあるタスクが時間制約を保証できない場合は,リアルタイムシステムはあらかじめその事実を通知しなければなりません.
これにより,時間制約を満たせなかった場合に発生する例外をハンドリングするために,代わりのアクションをあらかじめ予定することができます.
効率性(Efficiency)
多くのリアルタイムシステムは,多くの制約(空間,重さ,エネルギー,メモリ,計算能力)がある小さいデバイスに組込みます.
これらのリアルタイムシステムで必要な性能を実現するためには,リアルタイムOSによる利用可能な計算資源の効率的な管理が必要不可欠です.
頑健性(Robustness)
リアルタイムシステムは最大の負荷の状況でも崩壊してはなりません.
リアルタイムシステムは予想されるすべての負荷シナリオでも扱えるように設計しなければなりません.
過負荷の管理やその適切な処理は,時々刻々と変わる計算資源の要求や負荷の変動に対処するためには必要不可欠です.
耐障害性(Fault Tolerance)
単一のハードウェアやソフトウェアの故障がリアルタイムシステム全体がクラッシュしないようにすべきです.
リアルタイムシステムの重要なコンポーネント(ハードウェアやソフトウェアの部品)は耐障害性を持つように設計しなければなりません.
例えば,複数のハードウェアやソフトウェアで動作させることです.もし一つのハードウェアやソフトウェアが故障した場合,他のハードウェアやソフトウェアが正常に動くことで,リアルタイムシステム全体がクラッシュしないように設計します.
保守性(Maintainability)
リアルタイムシステムのアーキテクチャは,システム全体の修正が簡単にできるようにモジュール構造で設計すべきです.
モジュール構造とは,システムのハードウェアやソフトウェアの部品を交換できるように設計することです.
例えば,レゴ(LEGO)は組み上がったロボットを他の部品に交換することが簡単にできます.
下記の動画では,同じ部品を使って様々なロボットを組み立てています.
まとめ
リアルタイムシステムに必要な6つの性質を紹介しました.
- 適時性(Timeliness)
- 予測性(Predictability)
- 効率性(Efficiency)
- 頑健性(Robustness)
- 耐障害性(Fault Tolerance)
- 保守性(Maintainability)
読んでいただいた方は,リアルタイムシステムの本質に近づけたと思います.
リアルタイムシステムで使われているリアルタイムOSは,主にC言語で書かれています.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
次回はこちらからどうぞ.