RTOSの特徴

2.2K Views

July 29, 23

スライド概要

今まで汎用OSの仕組みしか知らなかった筆者が、RTOSの特徴を調べてまとめてみました
第34回 自作OSもくもく会

profile-image

サイボウズ・ラボ株式会社で教育向けのOSやCPU、コンパイラなどの研究開発をしています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

RTOSの特徴 Real-Time Operating System 2023年7月29日 第34回 自作OSもくもく会 サイボウズ・ラボ uchan_nos

2.

発表のきっかけ ■背景 ⚫「はりぼてOS」のコードを読んだりMikanOSを作ったりしたが、 RTOSとは何かを学んだことがなかった ■きっかけ ⚫Interface誌2023年7月号の特集「ゼロから作るOS」でRTOSの1つ 「μT-Kernel」のAPIと実装を学んだ ⚫TwitterでRTOSの特徴を教えてもらった

3.

RTOSの7つの特徴 ⚫「RTOSとは何か」を理解できる7つの特徴 ◼ https://techfactory.itmedia.co.jp/tf/articles/1705/17/news004.html 1. 複数スレッド(タスク)の並行動作が可能 2. 最悪応答時間が決まっている 3. 最悪応答時間を保証する設計となっている 4. 仮想メモリは原則的にサポートされない 5. 複数のタスク間通信が用意される 6. マルチプロセッサ対応は必須ではない 7. 機能の取捨選択が可能

4.

RTOSの7つの特徴 ⚫「RTOSとは何か」を理解できる7つの特徴 ◼ https://techfactory.itmedia.co.jp/tf/articles/1705/17/news004.html 1. 複数スレッド(タスク)の並行動作が可能 2. 最悪応答時間が決まっている 3. 最悪応答時間を保証する設計となっている 4. 仮想メモリは原則的にサポートされない 5. 複数のタスク間通信が用意される 6. マルチプロセッサ対応は必須ではない 7. 機能の取捨選択が可能

5.

マルチタスクのイメージ 汎用OSのマルチタスク 互いに無関係のタスク (プロセス)が時分割 で動き続ける タスク3 音楽再生 タスク2 タスク1 ブラウザ コンパイラ コンパイラ 時刻 RTOSのマルチタスク 複数のタスクが相互に 連携して1つのアプリ ケーションを構成する 周期実行 衝突センサ 液晶表示 モータ制御 表示 制御 読 表示 制御 割り込み 停止 時刻

6.

RTOSの7つの特徴 ⚫「RTOSとは何か」を理解できる7つの特徴 ◼ https://techfactory.itmedia.co.jp/tf/articles/1705/17/news004.html 1. 複数スレッド(タスク)の並行動作が可能 2. 最悪応答時間が決まっている 3. 最悪応答時間を保証する設計となっている 4. 仮想メモリは原則的にサポートされない 5. 複数のタスク間通信が用意される 6. マルチプロセッサ対応は必須ではない 7. 機能の取捨選択が可能

7.

実時間性について 1/2 ⚫「この最悪応答時間を保証するために、OSあるいはスケジューラ で提供される機能は最低限に絞られており、なるべく軽く動くよ うに設計されている。」 ◼ 「なるべく軽く動くように設計されている」は語弊がある ◼ 決められた時間内に処理が終わるように、が正しい • それが1時間でも、仕様を満たしていれば良い ◼ 現実の時間制約(ミリ秒・マイクロ秒単位)を満たし、かつ実行時間を見 積もれるように作った結果として軽量な実装になりやすい ⚫「実時間性とは、決められた時間内に処理が完了すること」 ◼ Interface誌 p.24 ◼ 処理が速い遅いではなく、処理時間が決まっているのが重要

8.

実時間性について 2/2 ⚫「実時間OS(RTOS)は、タスクの起床時間を保証してくれます」 ◼ Interface誌 p.25 ◼ 「起床された後、そのタスクがどれぐらいの時間を走行するかは、システ ム設計者が把握して、全タスクの詰め合わせを考えなければなりません」 ◼ RTOSは、決められた時間内にタスクが完了することを保証しない ⚫RTOSを使ったら必ず実時間システムになるわけではない ⚫実時間システムを作りやすくする道具

9.

実行時間の見積もりの難しさ ⚫μT-Kernelはシングルコア専用 ◼ 仮想メモリやスピンロックなどは、時間見積もりが難しいので、RTOSで はあまり使われないらしい ⚫時間見積もりは難しい ◼ 一見、定数時間で実行できそうなコードでも…… barの値に依らず、 定数時間で計算できそうなコード // uint8_t foo, bar; uint8_t shifted = foo << bar; PIC16F1ではループを用いた計算になる INCF bar, W GOTO L_1 L_0: LSLF foo, F L_1: DECFSZ WREG, F GOTO L_0 ; bar + 1 を W レジスタに転送 ; foo を 1 ビット左シフト ; W レジスタをデクリメントし、 ; 結果が 0 なら次の命令をスキップ

10.

RTOSとプリエンプティブ・マルチタスク ⚫プリエンプティブ・マルチタスク ◼ タスクの実行をOS側から強制的に打ち切って切り替える ◼ 起因:タイマ割り込み、高優先度タスクの発生など ⚫対義語:協調的マルチタスク (ノンプリエンプティブ・マルチタスク) ◼ タスクが自発的に次のタスクへCPUを明け渡すことでタスクを切り替える ◼ Yieldとも ◼ コルーチンで良く用いられる ⚫RTOSも汎用OSも、プリエンプティブ・マルチタスクが主流 ◼ 違いは、スケジューリングアルゴリズム

11.

RTOS:優先度スケジューリング ⚫優先度スケジューリング ◼ 現在実行中のタスクより優先度が高いタスクが実行可能になったら、即座 にそちらを実行する ◼ 最も高い優先順位を持つタスクが実行できない状態にならない限り、他の タスクはまったく実行されない ⚫μT-Kernelでの優先順位決定アルゴリズム ◼ 異なる優先度:高い優先度を持つタスクの方が高い優先順位を持つ ◼ 同じ優先度:先に実行可能状態になったタスクが高い優先順位を持つ タスクC(優先度1=高) 待ち 優先度はBと同じだが、 優先順位は低い タスクB(優先度1=高) タスクA(優先度2=低) 未完了の処理 時刻

12.

汎用OS:TSS ⚫TSS=Time Sharing System ⚫時分割でタスクを切り替えていく方式。汎用OSによくある https://edn.itmedia.co.jp/edn/articles/1403/18/news003_2.html

13.

「はりぼてOS」のスケジューラ 割り込み レベル0=高 レベル1=中 レベル2=低 待ち タイムスロット 20ms 10ms タスクA タスクB タスクC タイマ M スリープ タスクA 時刻 ⚫「はりぼてOS」のスケジューラはタイムスロット+レベルを使用 ⚫「レベル」が優先度スケジューリングの特徴を持つ ◼ レベルはマウスカーソルを快適に動かすために導入された ⚫タスク切り替えのタイミングはタイマ割り込み+タスクのスリープ 時だけなので、完全な優先度スケジューリングではない

14.

FreeRTOSのスケジューラは調整可能 ⚫FreeRTOSはスケジューリングアルゴリズムをカスタマイズ可能 ◼ 参考資料 “Mastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide” https://www.freertos.org/Documentation/RTOS_book.html ⚫configUSE_PREEMPTION ◼ 0:協調的マルチタスク、1:プリエンプティブ・マルチタスク ⚫configUSE_TIME_SLICING ⚫configIDLE_SHOULD_YIELD

15.

RTOSの7つの特徴 ⚫「RTOSとは何か」を理解できる7つの特徴 ◼ https://techfactory.itmedia.co.jp/tf/articles/1705/17/news004.html 1. 複数スレッド(タスク)の並行動作が可能 2. 最悪応答時間が決まっている 3. 最悪応答時間を保証する設計となっている 4. 仮想メモリは原則的にサポートされない 5. 複数のタスク間通信が用意される 6. マルチプロセッサ対応は必須ではない 7. 機能の取捨選択が可能

16.

OSとアプリケーション ⚫ Interface誌 p.31「RTOSの実行モードとメモリ管理」より ◼ 「RTOSの場合は全てが特権モードで動作する」 ◼ 「OSやアプリケーションが1つの実行オブジェクト」 ⚫汎用OSでは、割り込み(や、それに準ずる機能)でシステムコー ルを呼び出すことが多い ◼ 割り込みによってCPUを特権モードに切り替える ⚫RTOSでは、単なる関数呼び出しによりOSの機能を使う ◼ 動作モード変更やメモリ空間の変更を伴わない ⚫アプリを動的ロードする設計のRTOSもあるらしい ◼ https://twitter.com/tbistr99/status/1668219035379732480?s=20

17.

代表的なRTOS ⚫Interface誌2023年9月号より ⚫ITRON:日本国内、一部の利用にとどまる ⚫VxWorks:多くの実績をもち現在でも使われている ◼ NASAの火星探査用ロボットにも採用されているらしい ⚫Mbed OS:Arm Mbed用のOS ⚫CMSIS OS:Mbed OSのコアとなっているRTOS ⚫FreeRTOS:様々なCPUに対応したRTOS ◼ Amazonが2017年に買収