ニューストピックス

2021年07月06日
株式会社ユビキタスAIコーポレーション

【コラム】TOPPERS カーネルの時間パーティショニング機能の概要

システムに求められる安全性・信頼性への要求が高まるにつれ、OS の機能としてメモリ保護に加え時間パーティショニング(時間保護)機能も求められるケースが増えてきました。

この機能は、重要な処理を行う時間を確実に確保するために用意されています。組込み(リアルタイム)システムでは時間内に処理が終わらなかった、という事態は大きな事故につながったり人命に関わる事態となる場合もあります。また、悪意を持ったプログラムがCPU時間を全て使い切り、本来のプログラムの動作を止めたり、悪意を持ったプログラムを検出するためのプログラムを動作させないようにするのを防ぐためにも使われます。

設計時点では処理を行う時間を十分に確保していたつもりでも、プログラムの設計ミスやコーディングの間違いなどにより想定していた CPU 時間を使い過ぎてしまったり、特定のケースで無限ループに陥ってしまうなどは考えられます。また、通常のケースでは問題は発生しないが、通信の相手側の問題で膨大な量のデータが送られてきてしまった場合にその処理に時間がかかり重要なタスクが動けないケースがある場合もあります。一方、一般的な μITRON のようにカーネルやドライバとアプリケーションがワンリンクになるような(モノシリック)構造のシステムでは、外部から悪意を持ったプログラムが入ってくるケースは考慮しなくていい場合もあります。

時間パーティショニング機能はこのような事を防ぐために、予めそれぞれのタスクが動ける時間を割り当てておき、割り当てられた時間を使い切ると強制的にタスクスイッチを行うというものです。一定時間内にある処理を行わなければならない重要なタスクには、その処理を行う十分な時間を割り当てておくことにより、他のタスク状態に依らず確実に処理を行う事ができます。

高信頼性システム向けの第3世代 TOPPERS カーネル(TOPPERS/HRP3、TOPPERS/HRMP3)は、時間パーティショニング機能を持っています。この時間パーティショニングの仕様は、航空機向けの規格であるARNIC653をベースにしています。具体的には、予めシステム周期時間を決めておき、その周期内をタイムウィンドウと呼ばれるいくつかの時間帯に区切り、各タイムウィンドウに属するタスクはその時間帯の分だけ実行できる、というものです。

toppers_col2106_1.png

組込み(リアルタイム)システムでは割込み処理は重要で頻繁に使われます。TOPPERS の時間パーティショニングでは、何らかのタスクが動作している時に割込みが発生し割込み処理を行うと、そのタスクが属しているタイムウィンドウの終了時刻を割込み処理にかかった時間分遅らせるようになっています。このため各タスクに割り当てられた時間は割込み処理にかかる時間の影響を受けません。割込み処理にかかった時間はシステム周期内に設けられているアイドルウィンドウが吸収します。

toppers_col2106_2.png

このように、TOPPERS カーネルの時間パーティショニング機能は、割込み処理にかかる時間を考慮した設計となっているため、リアルタイム性を保ちつつ安全性・信頼性の高いシステム設計・構築が可能になっています。

また、このようなシステム周期を定めてその周期内で一定時間毎にタスクを動かすような方式は、タイムスロットで通信チャネルを多重化する TDMA(時分割多重)通信と相性がいいため、そのような通信システムを制御するための RTOS としても有用です。

高信頼性システムを開発するために

時間パーティショニング機能やメモリ保護機能が必要となるような高信頼性が求められるシステムを開発するには、カーネルの振る舞いや使い方に精通した技術者によるサポートが欠かせません。ユビキタスAI では、HRP3、HRMP3 カーネルを含む TOPPERS プロジェクトの開発成果物をベースに、技術サポート・品質保証・知財権保証などを付加したTOPPERS-Pro シリーズを販売しています。システム設計・構築時からサポートを受けたい、オープンソースの TOPPERS を使用してシステム構築したが製品化・販売するには不安、という方は TOPPERS-Pro シリーズをご検討ください。

関連製品