Japan
サイト内の現在位置
VEOSの機能(その2)
no.0042020.10.30 ここでもう一つ、VEのプロセス管理についてforkを使って遊んでみます。VEで実行されるプログラム(この場合、VEでは親プロセスです)からfork関数を使い子プロセスを作成し、実行時間30秒後に終了させます。fig.6がこのプログラムのコードです。
子プロセスが終了した後も親プロセスはさらに30秒間継続して動いているという、その様子をfig.7-1からfig.7-4に再現します。
子プロセスは「I'm the child」とメッセージを送った後、child was 190667、190667 diedという簡単なメッセージを残して終了します。子プロセスの実行期間中、VEOSのpsは親子プロセスのpidとコマンド名を並べて表示します。
その後、再びpsを実行してみると親のpidとコマンド名だけが表示されていることが分かります。このようにVEOSはVEで実行されるプロセス、またその子プロセスの管理をLinuxのカーネルと同じように行っています。
ちなみにfig.8に示したように、VH側のpsでもVEの親子は2つの代理プロセスの形で親/子としてちゃんと見えていることがわかります。

(fork()で子プロセスを生成、これを30秒後に終了させます)

(子プロセスが生成されています)





つづいて、VEOSを介してVEがシステムコールをVHに送る動きについてみていきます。
VHでは、ユーザープログラムからカーネルへ何かリクエスト(メモリ領域の確保やIO処理など)が出されるとカーネルはシステムコールという形でリクエストを受け取ります。VEで動くプログラムも同じようにVH側のカーネルにリクエストを出すことができるようになっています。その流れは、ざっと次のようなものです。
・VEプロセスはシステムコールをVHにオフロード
・代理プロセスがシステムコールの要求を処理
(先のhello_getpid_ve.exeがgetpidを要求したような場合)
・代理プロセスは必要に応じてVEOSデーモンやLinuxに処理を依頼
先にも説明が出てきた通り、ve_execという代理プロセスはVEプロセスが出すシステムコールというリクエストをVEOSデーモンを通して、あるいはLinuxを通して処理しているのです。
ここまで確認してきたことをあらためて説明するため図(fig.9)にまとめておきます。

最後にプロセス間通信についてみてみます。VEで動くプロセスの間だけでなくVEとVHで動くプロセス間でも通信を行うことができます。VEプロセスのシステムコールをすべて代理プロセスが行うためVE-VHの間でもプロセス間通信が行えるのです。
以下、fig.10の通り、簡単なサンプルとして名前付きパイプFIFOを使ったVE-VH双方のプロセス間で通信を行ってみます。まず、VH側でmkfifoコマンドを使ってパイプFIFO用の特殊なファイルを作っておきます。VHでこのFIFO用特殊ファイルをcatで開きます。
次にVEで文字列を表示するプロセスと標準入出力のリダイレクト機能でFIFO用ファイルに出力するプロセスを実行します。FIFO(First In First out)とは、名前付きパイプと呼ばれます。この名前なしのプロセス間通信では、関係しないプロセスの間でデータのやり取り(ここでの例では’ Hello cat!\’という文字列データ)を行うことができます。
きわめて簡単なプロセス間通信の一例でしたが、VHとVEで実行されるプロセスが同じカーネル上に存在していることをあらわしています。



- ①ではVH側でcatコマンドを実行してfifo_pipeの中を表示させようとしていますが、VEでhello_pipe.exeコマンドを実行していないため何も表示されず、またcatコマンドは終了せず待ち続けます。
- ②ではVE上でhello_pipe.exeコマンドを実行し、fifo_pipeにリダイレクトしています。
- ③VH側で待ち続けていたcatコマンドはVE上の②の動作によって文字列を読み取り、表示後に終了します。
今回、VEOSの全てのコンポーネント、機能を紹介することはできませんでしたが、これら詳細についてはNEC Aurora Forumドキュメント紹介サイトにある「VEOS 概要設計」をご覧ください。VEのメモリ管理やユーザーモードDMA、サポートされるプロセス間通信など様々な情報が掲載されています。
普段、SX-Aurora TSUBASAを使って科学技術計算を行う際、ほとんどVEOSを意識することはないかもしれません。しかし、VHのリソース情報が必要となったようときにVEOSの仕組みについての情報が役に立つのではと考え、VEOSについて紹介しました。コードを書く際、参考にしていただければと願っています。
関連リンク
Aurora Forum Web Documentation
Table 2: VEOS > VEOS 概要設計 参照
最新資料/カタログはこちらからダウンロード
ご紹介資料、各種カタログをダウンロードいただけます。
My NEC登録が必要です
My NEC登録が必要です
