=================================================================== RCS file: /home/cvs/OpenXM/doc/OpenXM-specs/control.tex,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- OpenXM/doc/OpenXM-specs/control.tex 2016/08/27 02:11:01 1.12 +++ OpenXM/doc/OpenXM-specs/control.tex 2020/03/14 01:21:56 1.13 @@ -1,22 +1,22 @@ -%% $OpenXM: OpenXM/doc/OpenXM-specs/control.tex,v 1.11 2016/08/22 09:23:31 takayama Exp $ +%% $OpenXM: OpenXM/doc/OpenXM-specs/control.tex,v 1.12 2016/08/27 02:11:01 takayama Exp $ \section{Session Management} \subsection{Control server} /*&jp -OpenXM では, 次に述べるような単純かつロバストなサーバの制御方法 -を採用している. +OpenXM с, 罨<菴違鴻膣ゃ鴻泣若九勝号 +。. -OpenXM サーバは論理的に 2 つの I/O channel をもつ: 一方は計算データ -用であり, 他方は計算制御用である. 制御 channel はサーバを制御する -ためのコマンドを送るために使われる. -サンプルサーバ ({\tt oxmain.c}) では, そのようなコントロールメッセージ -は別のプロセスが行っている. 以下, そのプロセスをコントロールサーバ -と呼ぶ. これに対して, 計算用サーバをエンジンと呼ぶ. -コントロールサーバとエンジンは同一のマシン上で動作する. -このため, コントロールサーバからエンジンに signal を送ることは容易である. -コントロールサーバ自体も OX スタックマシンであり -{\tt SM\_control\_*} コマンドを受け取る. それらはエンジンへの -signal 送信, engine process の終了などの request のためのコマンドである. +OpenXM 泣若茫 2 ゃ I/O channel : 筝鴻荐膊若 +с, 篁鴻荐膊九勝с. 九勝 channel 泣若九勝 +潟潟篏帥. +泣潟泣若 ({\tt oxmain.c}) с, 潟潟若<祉若 +ャ祉鴻茵c. 篁ヤ, 祉鴻潟潟若泣若 +若. 絲障, 荐膊泣若潟吾潟若. +潟潟若泣若潟吾潟筝激割у篏. +, 潟潟若泣若潟吾潟 signal 絎号с. +潟潟若泣若篏 OX 鴻帥激潟с +{\tt SM\_control\_*} 潟潟. 潟吾潟吾 +signal 篆, engine process 腟篋 request 潟潟с. */ /*&eg @@ -38,7 +38,7 @@ to send signals to a server or to terminate a server. \subsection{New OpenXM control servers} /*&jp -OpenXM RFC 101 Draft を見よ +OpenXM RFC 101 Draft 荀 \htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}. */ /*&eg @@ -49,46 +49,46 @@ See OpenXM RFC 101 Draft. \subsection{OpenXM reset protocol} /*&jp -クライアントはコントロールサーバ経由でいつでもエンジンに signal を -送ることができる. しかし, I/O 操作は通常バッファリングされている -ため, トラブルが生ずる場合がある. エンジンを安全にリセットするため -次が必要である. +ゃ≪潟潟潟若泣若腟宴сゃс潟吾潟 signal +с. , I/O 篏絽吾<潟違 +, 翫. 潟吾潟絎祉 +罨<綽荀с. \begin{enumerate} -\item 全ての OX メッセージは Java の意味で synchronized object である. +\item OX <祉若吾 Java 潟 synchronized object с. -\item エンジンのリセット後に送られるクライアントからの計算要求メッセージと -エンジンからの返答が正しく対応していなければならない. +\item 潟吾潟祉緇ゃ≪潟荐膊荀羆<祉若吾 +潟吾潟菴膈罩c鎛上違. \end{enumerate} -{\tt SM\_control\_reset\_connection} は, エンジンの安全なリセットを -行う一連の手続きを開始するための SM コマンドである. -クライアントから {\tt SM\_control\_reset\_connection} がコントロール -サーバに送られると, コントロールサーバは {\tt SIGUSR1} をエンジンに -送る. 以後の手続きは次の通りである. +{\tt SM\_control\_reset\_connection} , 潟吾潟絎祉 +茵筝c膓紮 SM 潟潟с. +ゃ≪潟 {\tt SM\_control\_reset\_connection} 潟潟若 +泣若, 潟潟若泣若 {\tt SIGUSR1} 潟吾潟 +. 篁ュ膓罨<с. \vskip 2mm \noindent -{\it クライアント側} +{\it ゃ≪潟} \begin{enumerate} -\item {\tt SM\_control\_reset\_connection} をコントロールサーバに -送った後, クライアントはリセット状態に入る. リセット状態では, -{\tt OX\_SYNC\_BALL} を受け取るまですべてのメッセージを読みとばす. -\item {\tt OX\_SYNC\_BALL} を受け取ったあと, クライアントは -{\tt OX\_SYNC\_BALL} をエンジンに送り, 通常状態に戻る. +\item {\tt SM\_control\_reset\_connection} 潟潟若泣若 +c緇, ゃ≪潟祉倶ャ. 祉倶с, +{\tt OX\_SYNC\_BALL} 障с鴻<祉若吾茯帥違. +\item {\tt OX\_SYNC\_BALL} c, ゃ≪潟 +{\tt OX\_SYNC\_BALL} 潟吾潟, 絽悟倶祉. \end{enumerate} \noindent -{\it エンジン側} +{\it 潟吾喝} \begin{enumerate} \item -{\tt SIGUSR1} をコントロールサーバから受け取ったら, エンジンは -リセット状態に入る. {\tt OX\_SYNC\_BALL} をクライアントに送る. -この時点でクライアントは既にリセット状態にあるので, この送信が -ブロックされることはない. -\item エンジンは -{\tt OX\_SYNC\_BALL} を受け取るまですべてのメッセージを読みとばす. -{\tt OX\_SYNC\_BALL} を受け取ったら通常状態に戻る. +{\tt SIGUSR1} 潟潟若泣若c, 潟吾潟 +祉倶ャ. {\tt OX\_SYNC\_BALL} ゃ≪潟. +鴻сゃ≪潟≪祉倶, 篆< +. +\item 潟吾潟 +{\tt OX\_SYNC\_BALL} 障с鴻<祉若吾茯帥違. +{\tt OX\_SYNC\_BALL} c絽悟倶祉. \end{enumerate} */ /*&eg @@ -145,12 +145,12 @@ and that the subsequent request from a client correctl corresponds to the response from the engine. */ /*&jp -図 \ref{reset} はデータの流れを示す. -{\tt OX\_SYNC\_BALL} は特殊な OX メッセージであり, -I/O stream に残るデータの終りを示す. -{\tt OX\_SYNC\_BALL} を読んだ後, それぞれの stream は空であり, -後に続くクライアントからのリクエストと, エンジンからの返答が -正しく対応する. + \ref{reset} 若帥羌腓冴. +{\tt OX\_SYNC\_BALL} 号 OX <祉若吾с, +I/O stream 罧若帥腟腓冴. +{\tt OX\_SYNC\_BALL} 茯緇, stream 腥冴с, +緇膓ゃ≪潟鴻, 潟吾潟菴膈 +罩c鎛上. */ \begin{figure}[htbp] \epsfxsize=10cm @@ -169,7 +169,7 @@ I/O stream に残るデータの終りを示す. SM_control_reset_connection \end{verbatim} /*&jp -コントロールサーバに, {\tt SIGUSR1} をエンジンに送るよう要求する. +潟潟若泣若, {\tt SIGUSR1} 潟吾潟荀羆. */ /*&eg It requests a control server to send {\tt SIGUSR1} to the engine. @@ -183,9 +183,9 @@ Request: \end{tabular} Result: none. \\ /*&jp - すべてエンジンは reset protocol を実装することが推奨されるが, -実装していない場合は, mathcap の第4引数の option list で -{\tt no\_ox\_reset} を送信すべきである (参照: oxpari). \\ + 鴻潟吾潟 reset protocol 絎茖ィ絅, +絎茖翫, mathcap 膃鐚綣違 option list +{\tt no\_ox\_reset} 篆<鴻с (: oxpari). \\ */ /*&eg All engines are encouraged to install the reset protocol, @@ -194,9 +194,9 @@ but when it is not implemented, (option list) of the mathcap (ref: oxpari). \\ */ /*&jp -注意: 古い実装(2000年以前)の control server, client では, -次の形式の result code が戻ることを仮定している場合がある. -これら古い実装は更新することが必要である. \\ +羈: ゃ絎茖(2000綛岩札) control server, client с, +罨<綵√ result code 祉篁絎翫. +ゃ絎茖贋違綽荀с. \\ */ /*&eg Note: Some old implementations of control servers and clients (before 2000) @@ -213,9 +213,9 @@ These obsolete implementations should be updated.\\ SM_control_kill \end{verbatim} /*&jp -サーバはこのメッセージを受信したら -%ただちに返答をおくり, -すべてのファイルをクローズして終了する. +泣若<祉若吾篆< +%<菴膈, +鴻<ゃ若冴腟篋. */ /*&eg It requests a control server to terminate the engine and the control server @@ -234,14 +234,14 @@ Result: none. \medbreak \noindent -//&jp {\bf 例}: (シリアル番号は省略してある.) +//&jp {\bf 箴}: (激≪垩ャ.) //&eg {\bf Example}: (serial numbers are omitted.) \begin{verbatim} 0 0 2 01 (OX_COMMAND) 0 0 4 06 (SM_control_reset_connection) \end{verbatim} -%//&jp Reset に対する返事. +%//&jp Reset 絲障菴篋. %//&eg Reply to the reset request %\begin{verbatim} %0 0 2 02 (OX_DATA) @@ -250,7 +250,7 @@ Result: none. %\end{verbatim} -//&jp 第1のチャンネルでは次の {\tt OX\_SYNC\_BALL} が交換されて同期が取られる. +//&jp 膃1c潟с罨< {\tt OX\_SYNC\_BALL} 篋ゆ. //&eg {\tt OX\_SYNC\_BALL} are exchanged on the data channel for synchronization. \begin{verbatim} @@ -260,10 +260,10 @@ Result: none. \subsection{Notification from servers} /*&jp -OpenXM サーバは, 可能であるかぎり寡黙である. -たとえばエラーをおこしても, エラーはサーバのエンジンスタックにつまれる -だけであり, サーバはクライアントが {\tt pop\_cmo} メッセージをおくらない -かぎり何も送信しない. +OpenXM 泣若, 純с絲♂с. +違若, 若泣若潟吾潟鴻帥ゃ障 +с, 泣若ゃ≪潟 {\tt pop\_cmo} <祉若吾 +篏篆<. */ /*&eg OpenXM servers try to be as quiet as possible. @@ -273,11 +273,11 @@ the engine does not send error packets unless the clie */ /*&jp -OpenXM はこの原則をやぶる例外的な方法を一つ用意している. -コントロールサーバは, -{\tt OX\_NOTIFY} ヘッダおよびそれにつづく {\tt OX\_DATA} パケットを送る -ことができる. -この機能は mathcap で禁止することも可能である. +OpenXM 吟箴紊号筝ょ. +潟潟若泣若, +{\tt OX\_NOTIFY} 潟ゃャ {\tt OX\_DATA} 宴 +с. +罘純 mathcap х罩≪純с. */ /*&eg OpenXM provides a method to notify events. @@ -286,13 +286,13 @@ This transmission may be prohibited by mathcap. */ /*&jp -この機能をどのように使うか例をあげて説明しよう. -{\tt Asir} の {\tt ox\_plot} サーバは, quit ボタンをもっている. -quit ボタンがおされると canvas が消滅するが, エンジン自体は存在を -つづける. この状態で描画命令がくると, -エンジンスタックに, ``canvas does not exist'' というエラーがつまれる. -エンジンがこのエラーが生じたことを緊急に知らせたいときに -{\tt OX\_NOTIFY} を用いる. +罘純篏帥箴茯. +{\tt Asir} {\tt ox\_plot} 泣若, quit 帥潟c. +quit 帥潟 canvas 羔羯, 潟吾活篏絖 +ゃャ. 倶ф糸巡擦, +潟吾潟鴻帥, ``canvas does not exist'' 若ゃ障. +潟吾潟若膩ャャ +{\tt OX\_NOTIFY} . */ /*&eg Let us explain how to use {\tt OX\_NOTIFY} by an example. @@ -307,20 +307,20 @@ the {\tt OX\_NOTIFY} message should be used. */ /*&jp -ここで, {\tt OX\_NOTIFY} をおくるのは, コントロールプロセスで -あることに注意しよう. -したがってエンジンはなんらかの方法で, コントロールサーバに -{\tt OX\_NOTIFY} をおくることを依頼しないといけない. -この方法は, OS によりいろいろな方法が可能だか, -たとえば, unix では -ファイル {\tt /tmp/.ox\_notify.pid} に touch することでこれを -一つの実現することが可能である. -ここで {\tt pid} はエンジンのプロセス番号である. -コントロールサーバはファイル {\tt /tmp/.ox\_notify.pid} が -touch されたことを検出したら, クライアントに -{\tt OX\_NOTIFY} パケットおよび {\tt OX\_DATA} で {\tt cmo\_null} を送る. -エンジンはファイルを用いてコントロールサーバに急を知らせる以外に, -共有メモリやシグナルを用いてしらせてもよい. +, {\tt OX\_NOTIFY} , 潟潟若祉鴻 +羈. +c潟吾潟号, 潟潟若泣若 +{\tt OX\_NOTIFY} 箴若. +号, OS 号純, +, unix с +<ゃ {\tt /tmp/.ox\_notify.pid} touch с +筝ゃ絎憗純с. + {\tt pid} 潟吾潟祉合垩с. +潟潟若泣若<ゃ {\tt /tmp/.ox\_notify.pid} +touch 罎冴, ゃ≪潟 +{\tt OX\_NOTIFY} 宴 {\tt OX\_DATA} {\tt cmo\_null} . +潟吾潟<ゃ潟潟若泣若ャャ篁ュ, +掩<≪激違. */ /*&eg Let us note that only the control process is allowed to send {\tt OX\_NOTIFY}.