REAL-TIME SYSTEMS TECHNOLOGY

【第1回】元東大教員から学ぶリアルタイムシステム「リアルタイムシステムとは」

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

リアルタイムシステムの記事一覧はこちらからどうぞ.

リアルタイムシステム
元東大教員から学ぶリアルタイムシステム

こういった私から学べます. リアルタイムシステムとは,決められた時間(デッドライン)までに処理を完了しなければならない性質をもつシステムのことです. リアルタイムシステムは,ロボット,自動車や航空機な ...

続きを見る

リアルタイムシステムとは

リアルタイムシステムとは,決められた時間(デッドライン)までに処理を完了しなければならない性質をもつシステムのことです.

決められた時間までに処理を完了しなければならない性質を時間制約を満たす,もしくはリアルタイム性を保証すると表現します.

リアルタイムは直訳すると実時間なので,リアルタイムシステムを実時間システムと呼ぶこともあります.

私は実時間システムではなく,リアルタイムシステムと表記する方を好みますので,実時間システムのこともリアルタイムシステムと呼びます.

「リアルタイムシステム 千代浩之」や「Real-Time Systems Hiroyuki Chishiro」と検索するとこれまでの研究成果が出てきます.

※よくリアルタイムをできるだけ速くという意味で使う方はいますが,学術的には間違いです.ハイパーフォマンス(高性能)ではありません.

リアルタイムシステムの例として,ゲーム機,ロボット,スマホ等が挙げられます.

ゲーム機とロボットを例にリアルタイムシステムを説明していきます.

ゲーム機

これまでにあなたはゲーム機で遊んだことがありますよね.

私もよくゲーム機でドラクエやFF,マリオ等をプレイしていました.

最近はコロナの影響でNintendo Switchのどうぶつの森がブームになりましたね.

話題のプレイステーション5は2020年10月12日に発売されました.


なぜゲーム機がリアルタイムシステムなのかというと,マルチメディア処理を実行するからです.

マルチメディア処理の例として,30FPS(Frame Per Second)の動画像処理の仕組みを説明します.

30FPSは1秒間に30フレームを処理するという意味ので,1フレーム当たりの処理時間は33ms(小数点以下は省略)となります.

つまり,33ms周期毎にフレームを完了しなくてはならないと言う意味です.

この周期処理をリアルタイムシステムでは周期タスク(Periodic Task)と呼びます.また,周期タスクの周期毎の実行処理(インスタンス)のことをジョブと呼びます.

下の図は33ms周期で動画像を処理する周期タスクが実行する様子です.正常に処理できるとフレーム毎に車の絵が表示されます.

マルチメディアアプリケーション

ここで,図の下部にあるタイムチャートのリリース(上矢印)は周期タスクの各々のジョブの実行開始時刻,デッドライン(下矢印)は各々のジョブの完了しなければならない時刻を表します.

赤い四角は周期タスクの各々のジョブが実行している時間を表します.

もし33ms以内にジョブの実行が完了できなくてデッドラインをミスした場合は,そのフレーム(下の図だと2番目のフレーム)が表示されない問題が発生します.

マルチメディアアプリケーション2

周期タスクの2番目のジョブがデッドラインに間に合うギリギリのタイミングになってから実行したら,思ったより最悪実行時間が長くてデッドラインミスをした例になります.

みなさんも宿題を締め切りに間に合うギリギリのタイミングにやろうとしたら,思ったより時間がかかって間に合わなかった経験があると思います.

つまり,余裕を持ってタスクも宿題も実行した方が良いということですね.

このように,タスクには周期,デッドラインと最悪実行時間の3つのパラメータを持ちます(この例だと周期とデッドラインは同じ33ms).

タスクの最悪実行時間を考慮して実行するタイミングを管理しないとデッドラインミスが発生してしまい,動画像処理だと正常にフレームが表示されなくなってしまいます.

タスクをどのような順序で実行すればリアルタイム性を保証できるのかを数学的に証明したリアルタイムスケジューリングという手法が提案されました.

また,リアルタイムスケジューリングを(主にC/C++言語で)実装したリアルタイムOSの研究開発が広く行われています.

リアルタイムスケジューリングやリアルタイムOSはリアルタイムシステムを説明する上で大事な用語ですが,説明すると長くなるので次回以降に説明します.

ロボット

次に,ロボットを動かす上で必要なモータ制御を例として説明します.

モータ制御の周期は1msで動作する場合を考えます.モータ制御がデッドラインミスをすると,ロボットが転倒する等のように,システムに致命的なエラーが発生します.

このようにデッドラインミスが許されないシステムをハードリアルタイムシステムと呼びます.

下の図はモータ制御の周期タスクがデッドラインミスをしないで実行している例になります.

ロボットアプリケーション

また,タイムチャートのところにジッタという新しい用語が出てきました.ジッタはジョブの実行間隔のゆらぎを表します.

モータ制御はジッタを考慮する周期タスクで,デッドラインミスをしなければ正常に動作するとは限りません.

ジョブの実行間隔が一定でないと動作が不安定になり,転倒してしまう恐れがあります.

モータ制御はデッドラインミスをしないことと,ジッタを出来る限り一定に保つことが必要になります(下図が理想).

ロボットアプリケーション2

リアルタイムシステムと他の用語との比較

リアルタイムシステムとは組込みリアルタイムシステム(※組込みシステムとほぼ同義)やIoTとよく似ています.

組込みリアルタイムシステムは,リアルタイムシステムの時間制約だけでなく他のコンピュータ資源(メモリ,消費電力,ネットワーク等)の制約があるシステムのことを言います.

例えば,スマホはバッテリで動作するので消費電力に制約があります.使うならできるだけ消費電力を下げてバッテリが長持ちした方が良いですよね.

IoTはInternet of Thingsの略で,直訳すると「モノのインターネット」という意味になります.

IoTはインターネットにつながるモノのことを言いますので,インターネットが必須になります.

IoTは元東大教授の坂村健が提案した「ユビキタス(どこでもコンピュータ)」の後継となる用語です.

2009年にケビン・アシュトンがRFIDの論文誌に「That 'Internet of Things' Thing」というタイトルで掲載した論文がIoTの起源と言われています.

IoTとユビキタスは具体的に何が違うのかというと,特に大きな違いはないです.意味のない新しい用語「バズワード」です.

※研究者が予算獲得のために「バズワード」を作り出すことは,よくある話です.

リアルタイムシステム,組込みリアルタイムシステム,IoTをまとめると以下の表になります.どれも似ていますが,少しずつ違いますね.

項目リアルタイムシステム組込みリアルタイムシステムIoT
コンピュータの資源制約時間時間,メモリ,消費電力,ネットワーク等時間,メモリ,消費電力,ネットワーク等
インターネット必須ではない必須ではない必須

※組込みリアルタイムシステムの「組込み」を「組み込み」と書いている方を見かけますが,正しくは「組込み」ですので注意して下さい.

東京大学の学生に「組込み」と書くことを教えたら,論文誌などの学術的な文献ではすべて「組込み」の書き方になっていて驚いたと言っていました.

「組込み」と正しく書いているかどうかで専門家かどうかがわかりますね...

まとめ

今回はリアルタイムシステムを紹介しました.リアルタイムシステムは,ゲーム機やロボット,スマホ等と身の回りでよく使われていることがわかりました.

リアルタイムシステムは主に周期タスクが動作し,周期,デッドライン,最悪実行時間の3つのパラメータを持つことを覚えましょう.

最後まで読んで頂きありがとうございました.

リアルタイムシステムで使われているリアルタイムOSは,主にC言語で書かれています.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

独学が難しいあなたは,C言語を学べるおすすめのオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.

次回はこちらからどうぞ.

第2回リアルタイムシステム
【第2回】元東大教員から学ぶリアルタイムシステム「リアルタイムシステムの種類」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. リアルタイムシステムの記事一覧はこちらからどうぞ. 目次1 リアルタイムシステムの種類1.1 ハードリアルタイムシステム1.2 フ ...

続きを見る

-REAL-TIME SYSTEMS, TECHNOLOGY
-, , , , , , , , , , , , , , , , , , , , , , ,