コア・クライアント/アプリケーション間の相互作用(基本編) |
|
この記事は不完全でかつ内容がすでに古いものになっています。
執筆未完了の項目は以下。
アプリケーションは、隔離されたcatbox訳注1 ディレクトリで実行されます。 そのディレクトリの中ではアプリケーションは、名前の衝突を気にせずに 一時ファイルを作れます。 入力ファイルと出力ファイルは、catbox の外に置かれます。 仮想ファイル名から実ファイル名への対応づけには、 catbox ディレクトリ内に置く シンボリックリンク・ファイルを使います。 このファイルの名前は仮想名であり、そのファイルには、実ファイル名を 持つタグが入っています。 (このやり方をしたのは、Windowsのファイルシステムにリンクがないからです。 )
コア・クライアントとアプリケーションの間の通信は、 catbox ディレクトリの中の XMLファイルを通じてなされます。 数個のファイルが使われています。
コア・クライアントが作成し、アプリケーションが読むファイル: (アプリケーション開始時に、一度だけ読むもの)
API実装が作成し、コア・クライアントが読むファイル:
API 実装は、タイマー(60Hz)を使っていて、リアルタイム・クロックは アプリケーションには提供されていません。 このタイマーは、数種類の用途に用いられます。
終了ステイタス(Exit status) コア・クライアントは[アプリケーションプロセスの終了]ステイタスを得るために、 wait() [システムコールを出]します。 boinc_finish() API を[アプリケーションが]よぶと、 [アプリケーションのプロセスは] exit(status)を出して終了します。
CPU 時間の集計: (注: Unixでは、子プロセスが終了するまでは、そのCPU 時間を親プロセスが得ることができません。 そのため、子プロセス自身のなかでCPU時間を測らざるをえません。 ) コア・クライアントは、WU CPU 時間を init_data.xml の中で渡します。 boinc_checkpoint_completed() と boinc_finish() APIは、 新しい WU CPU 時間を計算して、checkpoint_cpu.xml に書き出します。 コア・クライアントは、このファイルを読み終えたら消してしまいます。 [アプリケーションの]終了時にもし checkpoint_cpu.xml ファイルがなければ、 そのアプリケーションは boinc_finish() API を呼ぶ代わりに、 exit(0) を呼び出したことを意味します。 この場合、コア・クライアントは 子プロセスのCPU時間そのものを、 計測値として使います。
コア・クライアントは以下を維持管理します。
チェックポイントのタイミング
アプリケーション用のライブラリは、 time_until_checkpoint という[大域変数] を維持管理します。 タイマーハンドラがこの値を減算していきます。 boinc_time_to_checkpoint() APIは、 この値が0または負であれば、0 でない値 を返します。 boinc_checkpoint_completed() APIは、この変数をリセットします。
計算完了率(fraction done)とCPU消費累計(current CPU)の維持管理
これら2つの量は fraction_done.xml ファイルを通じて、アプリケーション用ライブラリから コア・クライアントに送られます。 初期化ファイルの中で渡された time_until_fraction_done_update パラメタが、どれだけの頻度でこのファイルが書き出されるべきかを決めています。 このファイルは、タイマハンドラーから書き出されます。
複数プログラムで構成されるアプリケーションでは、アクティブなアプリケーションだけが、 このファイルを書くことにしなければなりません。 boinc_child_start() と boinc_child_done() の2つのAPI関数は、 アプリケーション用ライブラリにこのファイルへの書き出し開始および停止を指示します。
TO DO: この動作はディスクとの間のデータ転送を発生させます。 ディスクアクセスを嫌う利用者のために、この[書き出し]間隔を伸ばす方法を考え出すか、 ディスクファイルを使わない方法を見つけたい。
最終更新時刻 00:46:59, 2006年08月12日(JST)
Copyright © 2012 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.
Copyright © 2012 Komori Hitoshi(je2bwm at jarl.com).
Japanese translation from English web pages on BOINC.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.