Windowsベースの組み込み機器開発に役立つ「ソフトリアルタイム機能」とはWindows 11時代に突入するIoT機器向けWindows(3)(2/2 ページ)

» 2022年03月23日 10時00分 公開
前のページへ 1|2       

アプリケーションをソフトリアルタイム用のコアで動作させる簡単な方法

 ちょっとだけソフトリアルタイム機能を試してみたいというとき、簡単に利用できるのが「cmd.exe」です。cmd.exeはコマンドプロンプトという認識がありますが、別のプロセスを起動するときのラッパとして利用することもでき、さまざまなパラメータが備わっています。

 cmd.exeを経由してアプリケーションを起動すること、で簡単に動作するコアを指定できます。下記は「サンプル.exe」をコア3に限定して、プロセスの優先度をRealtimeで実行する場合のパラメータです。

cmd /c start "サンプル.exe" /Realtime /affinity 8

【注】コア3で実行したい場合/affinityがなぜ8か?

 コアの指定は2進数のマスクで行います。ただし、/affinityで指定するのは、この2進数を16進数に変換した値になります。

例)
コア0指定 2進数 0000 0001 16進数 1
コア3指定 2進数 0000 0100 16進数 8
コア0、1指定 2進数 0000 0011 16進数 3

 上記で実行された結果が下記の図2になります。サンプル.exeは、mainスレッド内で計算をしながらループをし続ける簡単なアプリケーションです。通常実行した場合にはWindowsが4コアに処理を割り振りながら動作しますが、コア3に限定して実行しているためCPU利用率はコア3のみが増加していることが分かります。

図2 図2 ソフトリアルタイム用に予約したコア3でサンプルアプリケーションを実行した時のCPU利用状況[クリックで拡大]

 WindowsのCPU、プロセス、スレッドの詳細については、下記のマイクロソフトのドキュメントが大変参考になります。

⇒CPU Analysis



 Windows 10 IoT Enterpriseのソフトリアルタイム機能は、複数のコアの中からOSが利用するコアとアプリケーションが利用するコアを分離することが特徴となります。予約されたコアの中でスレッドやプロセスの優先度を設定しながらアプリケーションやドライバを開発することができます。

 Windows 10 IoT Enterpriseはハードリアルタイムに対応していないOSですが、このソフトリアルタイム機能を利用することで開発者は自身のアプリケーションやドライバのスレッドが他のOSのスレッド要因によって停止することがなくなり、ある程度開発者が予測したスレッドコントロールができるようになります。

(連載完)

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.