バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回、CANoeが32bitFMUを要求する調査結果を確認。
どうらやCANoe内で2つのプロセスが動作しており、
FMUを処理する側のプロセスが32bitプロセスになっているようである。
今回はこれらの推測を裏付ける話をする。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
プロセスの確認
今回はCANoe内で2つのプロセスが動作してて、
それらが64bitプロセスと32bitプロセスがあるって根拠を教えてくれるだっけ?
そうだね。
というわけでCANoeを起動した状態で、タスクマネージャを起動。
起動した。
Vector CANoeのプロセスをツリー上にプロセスの依存関係が見れる。
確かにツリー上に開いた。
お!
「Vector CANoe/CANalyzer Runtime Kernel」
ってのが32bitプロセスっぽいぞ!
これがフクさんの言ってたランタイムカーネルってやつか?!
そうそう。
ここから描画用プロセスと計測/演算用のプロセスが分かれてて、
それぞれが64bitプロセスと32bitプロセスになっているだろう。
と予測したわけだ。
プロセス間通信の方法
プロセスが分れているってことは、プロセス間通信をしてるってことだよね?
これは流石にどうやってるかはわからないよねー。
プロセス間通信はPIPE、共有メモリといろいろあるが、
基本的には特定は難しい。
が、CANoeの設計思想から考えてTCP/IPでプロセス間通信をしていると仮説を立てた。
CANoeの設計思想?
設計思想の方は後で説明するとして、
ランタイムカーネルにTCP/IP用のListenポートがあるか確認してみよう。
どうすればわかるの?
タスクマネージャ上のランタイムカーネルのプロセスを右クリックして詳細を選ぶと、タスクマネージャの詳細タブに飛ぶんだけど、そこでプロセスIDというものがわかる。
そのプロセスIDをメモっとく。
メモった。
18552だったよ。
コマンドプロンプトを起動して以下のコマンドを実行。
> netstat -ao | find "18552"
お!
なんか該当する行があるみたいだよ!
これで、CANoeの2つのプロセスがTCP/IPで通信している可能性が高くなったというわけだ。
次はこれらの通信状況とか、さっき言ったCANoeの思想の部分の話だな。
まとめ
まとめだよ。
- CANoe内の描画プロセスと計測/演算プロセスの存在をタスクマネージャで確認。
- 計測/演算プロセスことランタイムカーネルが32bitプロセス。
- ランタイムカーネル側のプロセスIDを元にTCP/IPのListenポートを確認。
- netstatで該当プロセスにListenポートがあることを確認。
バックナンバーはこちら。
コメント