ちょっとだけソフトリアルタイム機能を試してみたいというとき、簡単に利用できるのが「cmd.exe」です。cmd.exeはコマンドプロンプトという認識がありますが、別のプロセスを起動するときのラッパとして利用することもでき、さまざまなパラメータが備わっています。
cmd.exeを経由してアプリケーションを起動すること、で簡単に動作するコアを指定できます。下記は「サンプル.exe」をコア3に限定して、プロセスの優先度をRealtimeで実行する場合のパラメータです。
cmd /c start "サンプル.exe" /Realtime /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のみが増加していることが分かります。
WindowsのCPU、プロセス、スレッドの詳細については、下記のマイクロソフトのドキュメントが大変参考になります。
Windows 10 IoT Enterpriseのソフトリアルタイム機能は、複数のコアの中からOSが利用するコアとアプリケーションが利用するコアを分離することが特徴となります。予約されたコアの中でスレッドやプロセスの優先度を設定しながらアプリケーションやドライバを開発することができます。
Windows 10 IoT Enterpriseはハードリアルタイムに対応していないOSですが、このソフトリアルタイム機能を利用することで開発者は自身のアプリケーションやドライバのスレッドが他のOSのスレッド要因によって停止することがなくなり、ある程度開発者が予測したスレッドコントロールができるようになります。
(連載完)
 仮想マシンなしでLinuxのGUIアプリも動作、IoT機器向けWindows10/11の最新機能
仮想マシンなしでLinuxのGUIアプリも動作、IoT機器向けWindows10/11の最新機能 ついに登場したWindows 11、IoT機器向けでは何が変わるのか
ついに登場したWindows 11、IoT機器向けでは何が変わるのか 組み込み機器でもサポート終了するWindows 7、Windows 10世代は何を使うべきか
組み込み機器でもサポート終了するWindows 7、Windows 10世代は何を使うべきか 組み込み機器のWindows 7からWindows 10への移行で考慮すべき互換性問題
組み込み機器のWindows 7からWindows 10への移行で考慮すべき互換性問題 いまだから知っておきたい! XP EmbeddedからStandard 7への移行ポイント【前編】
いまだから知っておきたい! XP EmbeddedからStandard 7への移行ポイント【前編】 いまだから知っておきたい! XP EmbeddedからStandard 7への移行ポイント【後編】
いまだから知っておきたい! XP EmbeddedからStandard 7への移行ポイント【後編】 Windows Embedded Standard 7 SP1でアップデートされた機能
Windows Embedded Standard 7 SP1でアップデートされた機能Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク