[BACK]Return to OX-RFC-101.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / OpenXM-specs

Diff for /OpenXM/doc/OpenXM-specs/OX-RFC-101.tex between version 1.2 and 1.7

version 1.2, 2000/11/30 08:46:23 version 1.7, 2020/03/14 01:21:56
Line 1 
Line 1 
 %#!make OX-RFC-101-ja.dvi  %#!make OX-RFC-101-ja.dvi
 % $OpenXM: OpenXM/doc/OpenXM-specs/OX-RFC-101.tex,v 1.1 2000/11/30 02:41:36 takayama Exp $  % $OpenXM: OpenXM/doc/OpenXM-specs/OX-RFC-101.tex,v 1.6 2000/12/05 23:19:49 takayama Exp $
 \documentclass{article}  \documentclass{article}
 %%\IfFileExists{epsfig.sty}{\usepackage{epsfig}}{}  %%\IfFileExists{epsfig.sty}{\usepackage{epsfig}}{}
 \usepackage{html}  \usepackage{html}
 /*&jp  /*&jp
 \title{{\bf エンジン起動プロトコル, OpenXM RFC 101 Draft}}  \title{{\bf 潟吾活儀潟, OpenXM RFC 101 Draft}}
 \author{ 小原功任\thanks{{金沢大学理学部計算科学教室, \htmladdnormallink{http://omega.s.kanazawa-u.ac.jp/ohara/}{http://omega.s.kanazawa-u.ac.jp/ohara/}}}}  \author{ 絨篁\thanks{{羃√ぇ絖絖荐膊腱絖絎, \htmladdnormallink{http://omega.s.kanazawa-u.ac.jp/ohara/}{http://omega.s.kanazawa-u.ac.jp/ohara/}}}}
 \date{ 2000年, 11月30日}  \date{ 2000綛, 1130}
 */  */
 /*&eg  /*&eg
 \title{{\bf Protocol to Start Engines, OpenXM RFC 101 Draft}}  \title{{\bf Protocol to Start Engines, OpenXM RFC 101 Draft}}
Line 19 
Line 19 
 \section{Session Management}  \section{Session Management}
   
 /*&jp  /*&jp
 この文書では ``OpenXM RFC 100, OpenXM の設計と実装''\  吾с ``OpenXM RFC 100, OpenXM 荐荐絎茖''\
 \htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}  \htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}
 で定義されたコントロールサーバを置き換える新しいコントロールサーバの  у臂潟潟若泣若臀違潟潟若泣若
 仕様を説明する.  篁罕茯.
 */  */
   
 /*&eg  /*&eg
Line 37  a replacement of the control server defined in 
Line 37  a replacement of the control server defined in 
   
 /*&jp  /*&jp
   
 我々は新しいコントロールサーバを提案する。そのサンプル実装として oxc が  違潟潟若泣若罅泣潟絎茖 oxc
 提供される。新しいコントロールサーバは以下の点で従来のものと異なる。  箴違潟潟若泣若篁ヤ鴻уャ違
 \begin{enumerate}  \begin{enumerate}
 \item コントロールサーバは OpenXM スタックマシンであり、  \item 潟潟若泣若 OpenXM 鴻帥激潟с
 CMObject/Primitive をサポートする。  CMObject/Primitive 泣若
 \item 計算サーバの起動はスタックマシンコマンドを介して行う。  \item 荐膊泣若莎桁鴻帥激潟潟潟篁茵
 \item 一つのコントロールサーバから複数の計算サーバを起動できる。  \item 筝ゃ潟潟若泣若茲違荐膊泣若莎桁с
 \end{enumerate}  \end{enumerate}
   
 oxc の導入により、いままでのサーバの起動手順はコントロールサーバの起動と  oxc 絨ャ障障с泣若莎桁潟潟若泣若莎桁
 計算サーバの起動に分離される。コントロールサーバを起動するには次の手順を  荐膊泣若莎桁≪潟潟若泣若莎桁罨<
 取る。まず、適当なオプション(後述)をつけて、コントロールサーバを起動する  障綵激с(緇菴)ゃ潟潟若泣若莎桁
 と、コントロールサーバはソケットを作成し、connect する。クライアントは、  潟潟若泣若純宴篏connect ゃ≪潟
 listen, accept する。接続後、バイトオーダを決定する。バイトオーダの決定  listen, accept ・膓緇ゃ若羆阪ゃ若
 方法については、従来のものと変更はない。  羆阪号ゃ緇ャ紊眼
 OpenXM/doc/OpenXM-specs/control.tex を見よ。その後、コントロールサーバは  (OpenXM/doc/OpenXM-specs/control.tex 荀)緇潟潟若泣若
 待機状態にはいる。コントロールサーバは OpenXM スタックマシンであるから、  緇罘倶潟潟若泣若 OpenXM 鴻帥激潟с
 mathcap の交換などの手続きに入ってもよい。  mathcap 篋ゆ膓ャc
   
 \subsection{OpenXM control stack machine}  \subsection{OpenXM control stack machine}
   
 コントロールサーバは、次のスタックマシンコマンドを実装しなければならない。  潟潟若泣若罨<鴻帥激潟潟潟絎茖違
 それぞれのスタックコマンドの意味は、{\bf 以前のコントロールサーバとは異なる。}  鴻帥潟潟潟{\bf 篁ュ潟潟若泣若違}
   
 \begin{enumerate}  \begin{enumerate}
 \item  \item
 \begin{verbatim}  \begin{verbatim}
 SM_control_spawn_server  SM_control_spawn_server
 \end{verbatim}  \end{verbatim}
 新たに計算サーバを起動する。サーバの起動に成功すると、その ID を返す。  違荐膊泣若莎桁荐膊泣若莎桁 ID 菴
   
 Request:  Request:
 \begin{tabular}{|c|c|}  \hline  \begin{tabular}{|c|c|}  \hline
Line 76  Request:
Line 76  Request:
   
 Stack before the request:  Stack before the request:
 \begin{tabular}{|c|c|}  \hline  \begin{tabular}{|c|c|}  \hline
 {\sl Integer32} Port & {\sl String} ServerName \\  {\sl List} Argument \\
 \hline  \hline
 \end{tabular}  \end{tabular}
   
Line 88  Stack after the request: 
Line 88  Stack after the request: 
   
 Output: none.  Output: none.
   
   Argument:
   \begin{tabular}{|c|c|c|}  \hline
   {\sl List} Ports & {\sl String} ServerName & ...\\
   \hline
   \end{tabular}
   
   Ports:
   \begin{tabular}{|c|c|}  \hline
   {\sl Integer32} Port & ... \\
   \hline
   \end{tabular}
   
 \item  \item
 \begin{verbatim}  \begin{verbatim}
 SM_control_terminate_server  SM_control_terminate_server
 \end{verbatim}  \end{verbatim}
 指定された計算サーバに SIGKILL を送る。  絎荐膊泣若 SIGKILL
   
 Request:  Request:
 \begin{tabular}{|c|c|}  \hline  \begin{tabular}{|c|c|}  \hline
Line 112  Output: none.
Line 124  Output: none.
 \begin{verbatim}  \begin{verbatim}
 SM_control_kill  SM_control_kill
 \end{verbatim}  \end{verbatim}
 全ての計算サーバに SIGKILL を送る。  荐膊泣若 SIGKILL
   
 Request:  Request:
 \begin{tabular}{|c|c|}  \hline  \begin{tabular}{|c|c|}  \hline
Line 126  Output: none.
Line 138  Output: none.
 \begin{verbatim}  \begin{verbatim}
 SM_control_reset_connection_server  SM_control_reset_connection_server
 \end{verbatim}  \end{verbatim}
 指定された計算サーバに SIGUSR1 を送る。  絎荐膊泣若 SIGUSR1
   
 Request:  Request:
 \begin{tabular}{|c|c|}  \hline  \begin{tabular}{|c|c|}  \hline
Line 146  Output: none.
Line 158  Output: none.
 \begin{verbatim}  \begin{verbatim}
 SM_control_reset_connection  SM_control_reset_connection
 \end{verbatim}  \end{verbatim}
 全ての計算サーバに SIGUSR1 を送る。これは下位互換性のための措置である。  荐膊泣若 SIGUSR1 筝篏篋сェ臀с
   
 Request:  Request:
 \begin{tabular}{|c|c|}  \hline  \begin{tabular}{|c|c|}  \hline
Line 161  Output: none.
Line 173  Output: none.
 \bigskip  \bigskip
 \bigskip  \bigskip
   
   \subsection{OpenXM reset protocol}
   OX-RFC-100 羣
   
 \subsection{A sample implementation}  \subsection{A sample implementation}
   
 \subsubsection{Command Line Arguments}  \subsubsection{Command Line Arguments}
 コントロールサーバの実行形式は getopt(1) に ``c:p:h:x'' で指定するオプショ  潟潟若泣若絎茵綵√ getopt(3) ``c:p:h:x'' ф絎激
 ンを持つ。すなわち、  潟ゃ<
 \begin{verbatim}  \begin{verbatim}
 oxc -c [password] -h [hostname] -p [portnumber] -x  oxc -c [password] -h [hostname] -p [portnumber] -x
 \end{verbatim}  \end{verbatim}
   
 \subsubsection{Local Functions}  {\tt -h} сゃ≪潟鴻絎ゃ≪潟
   hostname:port 緇≦違
   
 コントロールサーバの各実装は、独自にローカル関数をサポートしてもよい。  {\tt -x} 激с潟-x 絎ょ医紊 DISPLAY
 実際、サンプル実装 oxc はローカル関数をサポートしている。  荐絎oxc 違腴(c潟)篏<祉若吾
   腴阪oxc 腴腮蕁医紊OpenXM\_XTERM ф絎
    xterm с
   
 ここでは、oxc のローカル関数 spawn について説明しよう。  激с {\tt -h} 絎劫ャ篏茵
   
 spawn は計算サーバを起動し、少なくとも 2 個の引数を持つ。すなわち、  \subsubsection{ゃ・膓}
   
   oxc 激с {\tt -h} 絎潟潟ゃ潟т
   鴻宴罔羣ュ緇с罘純ゃ茯
   障罔羣ュ若帥罨<綵√違
   \begin{tabular}{|c|c|c|c|c|}
   \hline
   {\sl int32} port & {\sl String} hostname & {\sl byte} 0 & {\sl String} password & {\sl byte} 0\\
   \hline
   \end{tabular}
   
   \medskip
   
   String C 鴻潟違сcmo\_string 激篁
   鴻潟違с
   
   \noindent
   若帥箴: \\
   port = 1324 = 0x052c, hostname = ``orange'', password = ``hogehoge''
   翫
 \begin{verbatim}  \begin{verbatim}
 spawn(計算サーバ名, ポート番号, モード, ...)  00 00 05 2c 00 00 00 07 6f 72 61 6e 67 65 00 00
   00 00 09 68 6f 67 65 68 6f 67 65 00
 \end{verbatim}  \end{verbatim}
 という形式である。「モード」はなくてもよい。ここで、「計算サーバ名」は  
 CMO\_STRING 型のオブジェクト、「ポート番号」、「モード」は CMO\_INT32型  
 のオブジェクトである。ローカル関数の実行は SM\_executeFunction による。  
 すなわち各引数を順にスタックに積み、最後にSM\_executeFunction を実行する。  
 SM\_executeStringByLocalParser は利用できないので注意する。  
   
 spawn は、計算サーバの起動に成功したら (CMO\_INT32, サーバID) を、失  隙莎桁祉鴻罨<с
 敗したらエラーオブジェクトをスタックに積む。例えば計算サーバが発見できな  
 かった場合にはエラーオブジェクトを積むことになる。コントロールサーバは  
 access(2) を用いて PATH から計算サーバを探す。もし見つからなければ、fork  
 をせずに、エラーオブジェクトをスタックに積む。  
   
   \begin{enumerate}
   \item
   ゃ≪潟 pipe(2) <ゃc鴻 fd0, fd1
   
   \item
   fork(2) у祉鴻絖祉鴻 dup2(fd1, 0) 絎茵
    荀祉鴻 fd0 絖祉鴻 0 ・膓
   \item
   絖祉鴻 exec("ssh remotehost controlserver") ≪若
   壕儀荀祉鴻 fd0 ≪若祉鴻 0 ・膓
   
   \item
   篆∴君≪若祉鴻罔羣ュ荀
   ≪若祉鴻罔羣ュ≪菴違鴻若c若帥
   茯粋昭≪若祉鴻若帥 connect(2) 絎茵
   \end{enumerate}
   
   
   \subsubsection{Local Functions}
   
   潟潟若泣若絎茖若∽違泣若
   絎泣潟絎茖 oxc 若∽違泣若
   
   сoxc 若∽ spawn ゃ茯
   
   spawn 荐膊泣若莎桁絨 1 綣違ゃ綣違
   SM\_control\_spawn\_server х {\sl List} Argument 筝綵√
   <鴻帥(劻)
   \begin{tabular}{|c|c|c|}  \hline
   {\sl List} Argument & {\sl Integer32} 1 & {\sl String} ``spawn'' \\
   \hline
   \end{tabular}
   腥帥SM\_executeFunction 潟潟若
   SM\_executeStringByLocalParser сф絵
   
   spawn 荐膊泣若莎桁 (CMO\_INT32, 泣若ID) 紊
   若吾с鴻帥腥箴域膊泣若肴с
   c翫若吾с腥潟潟若泣若
   access(2) PATH 荐膊泣若「荀ゃ違fork
   若吾с鴻帥腥
 */  */
   
 /*&eg  /*&eg

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>