特定用途に特化したOS
作成日 | : | 2019/12/07 |
---|---|---|
最終更新日 | : | 2020/07/05 |
特定用途に特化したOS
作成日 | : | 2019/12/07 |
---|---|---|
最終更新日 | : | 2020/07/05 |
概要
本稿は、自作OS Advent Calendar 2019の7日目の記事です。 あくまでLangurの私見ですので偏見等混じっている可能性があります。
はじめに
本稿では様々な分野で利用される特定のアプリケーションに特化したOSを紹介します。 Langurの専門分野であるリアルタイム処理と無線センサネットワーク分野のOSを紹介 したいと思います。
リアルタイムOS
リアルタイムOSとはリアルタイムシステムを構築することが可能なOSです。 ここではリアルタイム性は実時間性のことを指します。
リアルタイムシステムは組込屋さんにはおなじみの概念ですが単純に処理が高速なことを 指すのではなく、ある一定の時間内に処理が完了することを担保するシステムです。 極端な話1分以内に確実に処理が完了することを保証できる仕組みを持っていればそれは リアルタイムシステムなのです。
近頃、リアルタイム性を単純に応答が早いことを指す即応性の意味で使われることが多く なっているように感じています。モーターによる車輪を駆動する制御を行う場合、特に 制動制御の際に実時間制を担保できないと事故が発生するシステムの制御にリアルタイム システムを構築不能なLinux上のインタプリタ型のスクリプト言語で構築しましたという話を聞くことが増え仰天 しています。
また、リアルタイムOSを使えば必ずしもリアルタイムシステムを作ることができるわけ ではなく、他のミドルウェアやハードウェアのアーキテクチャにも考慮する必要があり 悩ましいです。例えば、ファイルシステムは一般的にリアルタイム性はありませんし、 TCP/IPをはじめ多くの通信プロトコルもリアルタイム性はありません。これらが要件 として必要な場合はリアルタイム性を担保しなければならない部分を切り出して別の システムとして実装する必要があります。
リアルタイムOSはリアルタイムスケジューリング理論に則ったスケジューリングアルゴリズムを採用することも特徴的だと思います。 様々なアルゴリズムがあるので興味がある方は調べてみると面白いと思います。
一方で、リアルタイムOSは総じて軽量であることが多いのでファイルシステムやTCP/IP プロトコルスタックと組み合わせ、軽量なOSとして利用することも多いです。
リアルタイムOSとして国内で最も有名なのは恐らくITRON(μITRON)[1]でしょう。 ITRONは仕様が公開されているだけであり、単一のITRONというOSが存在しているわけでは なくITRONの仕様に準拠したOSの総称と言えます。最新版はμITRON4.0であり、実装のうち 入手がしやすいものとしてはTOPPERSプロジェクト[2]の成果物やHOS[3]でしょうか。 TOPPERSプロジェクトは他にも車載向けのOSEKやAUTOSERに準拠したOSやミドルウェアも 公開されており参考になります。
T-Kernel[4]についても触れるべきとは思いますがT-Engine専用ということもあり省略します。 近年人気のあるESP8266やESP32で利用可能なリアルタイムOSとしてFreeRTOS[5]もあります。
実はLinuxにもリアルタイム処理を実現可能にしたパッチがあたったものが存在していますが 挙動が大幅に変わる点と、ハードウェア周りも含めてシステムを考えないといけないので リアルタイム処理を実現する上ではかなりハードルが高い印象です。
無線センサネットワーク向けOS
様々なセンサを搭載し無線通信でデータを伝送する装置を無線センサノードと呼び、無線センサ ノードによって構築されるネットワークのことを無線センサネットワークと呼びます。無線センサ ノードは電源が取れない場所で電池駆動によって動作しつつ長期間観測することを求められます。 また、容易に電池交換できない場所に設置されることも多いので特に省電力性を求められます。
そのため、イベント駆動のスケジューリングアルゴリズムを採用しリアルタイム性を犠牲にしてでも 省電力性を目指す実装もある一方、センシングにリアルタイム性を要求される分野もあるので軽量な リアルタイムOSが採用される場合もあります。
無線センサノード向けのOSとしてはTinyOS[6]やContiki[7]などが有名かと思います。 TinyOSはSMART DUST Project[8]で開発されたOSで省電力性に特化する形で実装されています。また、 独自の言語で開発する形になる点が個人的には悩ましいところですが、目的に応じて言語を設計する ことはUNIXやOSASKもそうですし正当なのかもしれません。
Contikiは無線センサノード専用と言うよりは汎用の軽量OSです。現在ContikiからforkしたContiki-NG[9]というOSが 新しく開発されているようです。
国内で開発されたPAVENET OS[10]というものもあるようなのですが、残念ながらインターネット上でダウンロードできるサイトを見つけることができませんでした...
おわりに
今後IoTをキーワードに考えると無線センサノード向けのOSや汎用リアルタイムOSはもっと着目 されそうに感じています。非PC環境向けにも面白いOSはたくさんありますし、本稿では紹介しま せんでしたが、昔のOS...例えばCP/MとかMS-DOS等の今となっては軽量なOSの実装についても 興味を惹かれる部分が多々あります。先達の叡智を参考にXiaoも軽量リアルタイムOSを目指しつつ センサノード向けにも展開していけたらなと思っています。
参考文献
- TRON Forum, ITRONとは?, TRON PROJECT, 不明
- TOPPERS Project, Inc., TOPPERSプロジェクト, TOPPERSプロジェクト, 2000-2019
- Ryuz, Hyper Operating System, Hyper Operating System, 不明
- TRON PROJECT, T-Kernelとは?, TRON Forum, 不明
- Amazon Web Services, Inc., FreeRTOS, FreeRTOS, 不明
- TinyOS Alliance, TinyOS, TinyOS, 不明
- D. Adam, Contiki, Contiki, 不明
- P. Kris, K. Joe, B. Bernhard, M. Steve, MLB Co., SMART DUST, Kris Pister, 1997-2001
- Contiki-NG, Contiki-NG, Contiki-NG, 不明
- S. Saruwatari, M. Suzuki, H. Morikawa, PAVENET OS: A Compact Hard Real-Time Operating System for Precise Sampling in Wireless Sensor Networks, SICE Journal of Control, Measurement, and System Integration, vol. 5, no. 1, pp. 24-33, 2012