リアルタイム・マルチタスクOS「INtime」をご存じだろうか。本稿ではWindows Embedded StandardとINtimeの2つのOSを組み合わせることで実現できる“リアルタイム制御システム”について、その概要から具体例(自動発券機)までを詳しく解説する。(編集部)
マイクロソフトが提供する組み込み向けWindowsソリューションには大きく、「Windows Embedded CE」と「Windows Embedded Standard」の2つがあります。
Windows Embedded CEは、小フットプリントで、リアルタイム性を実現するOSで、コストを極限まで追求しながらも高度な処理が求められるKIOSK端末や家電製品、産業用コントローラなどで採用が進んでいます。必要最小限のコンパクトなハードウェアプラットフォームを独自に開発でき、そのうえにWindowsの恩恵を得られるといったメリットがあります。
一方のWindows Embedded Standardは、PCアーキテクチャプラットフォームを使用することが特長のOSです。ベースとなっているPC向けの「Windows XP Professional」から用途に合わせて不要なコンポーネントを取り外し、軽量化が図れます。さらに、「EWF(Enhanced Write Filter)」によるファイル保護や、「HORM(Hibernate Once Resume Many)」による高速ブートなどの組み込みに特化した機能を備え、Windows XPベースで開発されたアプリケーションを手早く、高信頼な組み込みシステムに適用できます。
では、Windows Embedded CEとWindows Embedded Standardをどのように使い分ければよいでしょうか。
Windows Embedded CEは前述のように、必要最小限のハードウェアで製品単価を抑えることができます。ただし、ハードウェア設計やデバイスドライバ開発などの専門的知識とノウハウの蓄積はどうしても避けられません。
一方、Windows Embedded Standardの場合は、市販のPCプラットフォームと市販の拡張デバイスを採用するため、ハードウェア設計とハードウェア開発をある程度、もしくは完全に省略でき、“はじめての導入でも敷居が低い”といったメリットがあります。
この『デファクトスタンダードなPCプラットフォームを使用できる』という特長は、最新の超高速CPUを搭載したハイエンドPCから小型・安価なローエンドPCまで、コストとニーズに応じた幅広い選択肢の中から任意のプラットフォームを選定できるという“自由度の高さ”を意味します。また、何よりもシステム開発期間を大幅に短縮できるWindows Embedded Standardのソリューションは、商品開発スピードが重視される現代の市場ニーズにとてもマッチしているといえます。
ただし、Windows Embedded Standardは、Windows Embedded CEとは異なり、リアルタイムOSではありません。Windows Embedded CEのようなリアルタイム性能の確保が困難で、保証できる時間精度はせいぜい50ms程度です。つまり、Windows Embedded Standardを適用できる制御システムには限りがあるのです。
しかし、こうしたWindows Embedded Standardの欠点を補うソフトウェアが近年登場しています。それは、TenAsys社のリアルタイムOS「INtime」です(注)。
INtimeはPCプラットフォームへ向けた、新しい発想の“リアルタイム・マルチタスクOS”であり、最大の特長はWindowsと並列動作する第2のOSであることです。
1つのCPU内にWindows Embedded Standardと、リアルタイムOSであるINtimeの2つを動作させることで、Windows Embedded Standard単独では実現困難だったリアルタイム制御を可能にします。
INtimeはWindowsの欠点を補うことによって、単なる表示機や限られた制御用途に適用されていたWindowsを高次元の制御システムへと変ぼうさせます。
続いて、INtimeがどのようにしてWindowsとの共存を実現しているのか見ていきましょう。
INtimeは、Windows Embedded Standard 、Windows XP/Vistaを搭載するコンピュータに導入できます。一般的に、Windowsのアプリケーションの拡張子はEXEですが、INtimeのリアルタイムアプリケーションは、拡張子「RTA(Real Time Application)」となります。RTAは、INtimeのメモリ空間にロードされて、INtimeカーネルの管理の下、256段階の優先度設定を基にリアルタイム性を保証して動作します。
INtimeには2つのCPU動作モードがあります。
1つは、普段すべてのCPUコアをWindowsに与えておきながら、リアルタイム処理のディスパッチタイミングで、INtimeOSに環境を切り替える「共有モード」です。このCPU動作モードは、シングルコアCPUでも動作できることと、Windowsの処理パフォーマンスが最大であることが特長です。Windowsは最低優先度のリアルタイムスレッドとして1つにカプセル化され、INtimeによって管理されるので、リアルタイム処理が影響を受けることはありません。一般的な制御システムにおいては、このCPU動作モードで十分な効果が得られます。
もう1つのCPU動作モードは、INtimeとWindowsの動作をCPUコアで分離する「専有モード」です。このCPU動作モードでは、INtimeとWindowsが各CPUコアで完全に並列動作するので、最大のリアルタイム性能が発揮されます。ただし、CPUコアをINtimeOSが占拠するので、Windowsの使用できるCPUコアは少なくなります。
4つ以上のCPUコアを持つシステムであれば、INtimeOSを複数個並列に稼働させることも可能です(INtime 4.0以降)。表示系に2つ以上のコアは少々オーバースペック気味ですが、DSPのような負荷の高い処理を独立させたコア上で動作させることも可能なため、1台のPCでその性能を100%活用できます。
INtimeはリアルタイム制御の能力を持っていますが、その半面、表示系の機能を実装していません。表示系についてはWindowsアプリケーションで実現するというスタイルに基づいているためです。
このような構成を持つINtimeには、OS同士をまたいだプロセス間通信が必要となりますので、データ交換やスレッド調停を行うアプリケーションインターフェイス「NTX」のほかに、仮想Ethernet接続によるOS間ネットワーク通信手段が提供されています。NTXにより、共有メモリ空間、メールボックス、セマフォなどのオブジェクトを用いた同期や情報伝達手段をプログラミングできます。
Copyright © ITmedia, Inc. All Rights Reserved.