Windows環境と共存可能なRTOS「RTX/RTX64」の生存戦略リアルタイムOS列伝(26)(2/3 ページ)

» 2022年09月05日 07時00分 公開
[大原雄介MONOist]

ETSからコンセプトを進めてWindows環境とRTOS環境の共存へ

 続いてのRTXだが、これはArdenceというか、その改称前のVenturComの時代に開発されたRTOSである。コンセプトはETSからさらに一歩進めて、Windows環境とRTOS環境が共存する、というものである。具体的な実装がこちら(図2)。

図2 図2 概念図としては分かりやすいのだが、どのように通信を行っているのかとかがいまひとつ分かりづらい[クリックで拡大]

 まず、Windows NTのHALとは別にRTXのHALが搭載され、この上でRTXのカーネルが独自に動く形になる。ドライバ類も原則としてRTX用のものが別に用意され、これで動作することになるが、ごく一部のRTKAPIに対応したドライバはRTXカーネルを直接たたくことができる。アプリケーションは、RTX Server ConsoleなどRTX専用APIに対応したものは直接RTX Kernel上で動くが、通常はWin32アプリケーションの中でRTKAPIを呼び出す形で動作するという仕組みだ。ちなみに、CPUそのものはWin32向けとRTX向けが別々にパーティショニングされる形になる。

 図2はRTX 2016のものだが、もう少し昔のスライドで出て来た内部構造がこちら(図3)。Win32 ProcessとReal-time ProcessはドライバレベルのLPC(Local Procedure Call)で通信を行っているのが分かる。RTXカーネル(RTX RTSS)はプリエンプティブで、128レベルのプライオリティベースのスケジューラが搭載されており、コンテクストスイッチング速度は、動作周波数1GHzのPentium IIIの場合で以下のようになっている。

  • 2つのRTX Process間のスイッチング:0.4μs
  • 2つのRTX Thread間のスイッチング:0.4μs
  • RTX ThreadとWin32 Thread間のスイッチング:2μs
図3 図3 これは2006年のスライド。当時はまだRealtime ProcessもWin32 Processと並んでいる格好になっているのがちょっと目を引く違いである[クリックで拡大]

 RTXでProcess間とThread間のスイッチングに差がないのは、Pentium IIIではSMT(HyperThreading)に対応していないためで、恐らく現在のSMT対応CPUであれば、Thread間Switchingはもっと高速だろう。その他の処理速度の実測値がこちら(図4)。かなり高速なのがお分かりいただけるかと思う。

図4 図4 Interruptが平均2.4μ〜2.6μsなのに最大では10〜11μsとやや大きめなのは、まぁ仕方ないところ。これをなんとかしようとすると、APICに手を入れないと難しそうだ[クリックで拡大]

 VenturComはWindows NT 3.5に対応したRTXの最初のバージョンを1995年にリリースし、以降は2016年の最終版(RTX 2016)まで21年にわたってこのRTXを提供してきた(先述した通り、提供会社はVenturCom→Ardence→Citrix→IntervalZeroと変遷しているが)。このRTX 2016はサポートが2021年3月で終了しており、もう新規設計とかは不可能になっている。

Copyright © ITmedia, Inc. All Rights Reserved.