Annotation of OpenXM/doc/OpenXM-specs/OX-RFC-101.tex, Revision 1.2
1.2 ! ohara 1: %#!make OX-RFC-101-ja.dvi
! 2: % $OpenXM: OpenXM/doc/OpenXM-specs/OX-RFC-101.tex,v 1.1 2000/11/30 02:41:36 takayama Exp $
1.1 takayama 3: \documentclass{article}
4: %%\IfFileExists{epsfig.sty}{\usepackage{epsfig}}{}
5: \usepackage{html}
6: /*&jp
1.2 ! ohara 7: \title{{\bf エンジン起動プロトコル, OpenXM RFC 101 Draft}}
! 8: \author{ 小原功任\thanks{{金沢大学理学部計算科学教室, \htmladdnormallink{http://omega.s.kanazawa-u.ac.jp/ohara/}{http://omega.s.kanazawa-u.ac.jp/ohara/}}}}
! 9: \date{ 2000年, 11月30日}
1.1 takayama 10: */
11: /*&eg
12: \title{{\bf Protocol to Start Engines, OpenXM RFC 101 Draft}}
13: \author{ Katsuyoshi Ohara\thanks{Department of Computational Science, Kanazawa University, \htmladdnormallink{http://www.s.kanazawa.ac.jp}{http://www.s.kanazawa.ac.jp}}}
14: \date{ November 30, 2000 }
15: */
16:
17: \begin{document}
18: \maketitle
19: \section{Session Management}
20:
21: /*&jp
1.2 ! ohara 22: この文書では ``OpenXM RFC 100, OpenXM の設計と実装''\
1.1 takayama 23: \htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}
1.2 ! ohara 24: で定義されたコントロールサーバを置き換える新しいコントロールサーバの
! 25: 仕様を説明する.
1.1 takayama 26: */
27:
28: /*&eg
29: This document describes a new control server specification
30: which is intended to be
31: a replacement of the control server defined in
32: ``Design and implementation of OpenXM, OpenXM RFC 100''\
33: \htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}.
34: */
35:
36: \subsection{New OpenXM control servers}
37:
38: /*&jp
39:
1.2 ! ohara 40: 我々は新しいコントロールサーバを提案する。そのサンプル実装として oxc が
! 41: 提供される。新しいコントロールサーバは以下の点で従来のものと異なる。
1.1 takayama 42: \begin{enumerate}
1.2 ! ohara 43: \item コントロールサーバは OpenXM スタックマシンであり、
! 44: CMObject/Primitive をサポートする。
! 45: \item 計算サーバの起動はスタックマシンコマンドを介して行う。
! 46: \item 一つのコントロールサーバから複数の計算サーバを起動できる。
1.1 takayama 47: \end{enumerate}
48:
1.2 ! ohara 49: oxc の導入により、いままでのサーバの起動手順はコントロールサーバの起動と
! 50: 計算サーバの起動に分離される。コントロールサーバを起動するには次の手順を
! 51: 取る。まず、適当なオプション(後述)をつけて、コントロールサーバを起動する
! 52: と、コントロールサーバはソケットを作成し、connect する。クライアントは、
! 53: listen, accept する。接続後、バイトオーダを決定する。バイトオーダの決定
! 54: 方法については、従来のものと変更はない。
! 55: OpenXM/doc/OpenXM-specs/control.tex を見よ。その後、コントロールサーバは
! 56: 待機状態にはいる。コントロールサーバは OpenXM スタックマシンであるから、
! 57: mathcap の交換などの手続きに入ってもよい。
! 58:
! 59: \subsection{OpenXM control stack machine}
! 60:
! 61: コントロールサーバは、次のスタックマシンコマンドを実装しなければならない。
! 62: それぞれのスタックコマンドの意味は、{\bf 以前のコントロールサーバとは異なる。}
! 63:
! 64: \begin{enumerate}
! 65: \item
! 66: \begin{verbatim}
! 67: SM_control_spawn_server
1.1 takayama 68: \end{verbatim}
1.2 ! ohara 69: 新たに計算サーバを起動する。サーバの起動に成功すると、その ID を返す。
! 70:
! 71: Request:
! 72: \begin{tabular}{|c|c|} \hline
! 73: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_spawn\_server} \\
! 74: \hline
! 75: \end{tabular}
! 76:
! 77: Stack before the request:
! 78: \begin{tabular}{|c|c|} \hline
! 79: {\sl Integer32} Port & {\sl String} ServerName \\
! 80: \hline
! 81: \end{tabular}
! 82:
! 83: Stack after the request:
! 84: \begin{tabular}{|c|c|} \hline
! 85: {\sl Integer32} ServerID \\
! 86: \hline
! 87: \end{tabular}
! 88:
! 89: Output: none.
! 90:
! 91: \item
! 92: \begin{verbatim}
! 93: SM_control_terminate_server
! 94: \end{verbatim}
! 95: 指定された計算サーバに SIGKILL を送る。
! 96:
! 97: Request:
! 98: \begin{tabular}{|c|c|} \hline
! 99: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_terminate\_server} \\
! 100: \hline
! 101: \end{tabular}
! 102:
! 103: Stack before the request:
! 104: \begin{tabular}{|c|c|} \hline
! 105: {\sl Integer32} ServerID \\
! 106: \hline
! 107: \end{tabular}
! 108:
! 109: Output: none.
! 110:
! 111: \item
! 112: \begin{verbatim}
! 113: SM_control_kill
! 114: \end{verbatim}
! 115: 全ての計算サーバに SIGKILL を送る。
! 116:
! 117: Request:
! 118: \begin{tabular}{|c|c|} \hline
! 119: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_kill} \\
! 120: \hline
! 121: \end{tabular}
! 122:
! 123: Output: none.
! 124:
! 125: \item
! 126: \begin{verbatim}
! 127: SM_control_reset_connection_server
! 128: \end{verbatim}
! 129: 指定された計算サーバに SIGUSR1 を送る。
! 130:
! 131: Request:
! 132: \begin{tabular}{|c|c|} \hline
! 133: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_reset\_connection\_server} \\
! 134: \hline
! 135: \end{tabular}
! 136:
! 137: Stack before the request:
! 138: \begin{tabular}{|c|c|} \hline
! 139: {\sl Integer32} ServerID \\
! 140: \hline
! 141: \end{tabular}
! 142:
! 143: Output: none.
! 144:
! 145: \item
! 146: \begin{verbatim}
! 147: SM_control_reset_connection
! 148: \end{verbatim}
! 149: 全ての計算サーバに SIGUSR1 を送る。これは下位互換性のための措置である。
! 150:
! 151: Request:
! 152: \begin{tabular}{|c|c|} \hline
! 153: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_reset\_connection} \\
! 154: \hline
! 155: \end{tabular}
! 156:
! 157: Output: none.
! 158:
! 159: \end{enumerate}
! 160:
! 161: \bigskip
! 162: \bigskip
! 163:
! 164: \subsection{A sample implementation}
! 165:
! 166: \subsubsection{Command Line Arguments}
! 167: コントロールサーバの実行形式は getopt(1) に ``c:p:h:x'' で指定するオプショ
! 168: ンを持つ。すなわち、
! 169: \begin{verbatim}
! 170: oxc -c [password] -h [hostname] -p [portnumber] -x
! 171: \end{verbatim}
! 172:
! 173: \subsubsection{Local Functions}
! 174:
! 175: コントロールサーバの各実装は、独自にローカル関数をサポートしてもよい。
! 176: 実際、サンプル実装 oxc はローカル関数をサポートしている。
! 177:
! 178: ここでは、oxc のローカル関数 spawn について説明しよう。
! 179:
! 180: spawn は計算サーバを起動し、少なくとも 2 個の引数を持つ。すなわち、
! 181: \begin{verbatim}
! 182: spawn(計算サーバ名, ポート番号, モード, ...)
! 183: \end{verbatim}
! 184: という形式である。「モード」はなくてもよい。ここで、「計算サーバ名」は
! 185: CMO\_STRING 型のオブジェクト、「ポート番号」、「モード」は CMO\_INT32型
! 186: のオブジェクトである。ローカル関数の実行は SM\_executeFunction による。
! 187: すなわち各引数を順にスタックに積み、最後にSM\_executeFunction を実行する。
! 188: SM\_executeStringByLocalParser は利用できないので注意する。
! 189:
! 190: spawn は、計算サーバの起動に成功したら (CMO\_INT32, サーバID) を、失
! 191: 敗したらエラーオブジェクトをスタックに積む。例えば計算サーバが発見できな
! 192: かった場合にはエラーオブジェクトを積むことになる。コントロールサーバは
! 193: access(2) を用いて PATH から計算サーバを探す。もし見つからなければ、fork
! 194: をせずに、エラーオブジェクトをスタックに積む。
! 195:
1.1 takayama 196: */
197:
198: /*&eg
199:
200: This document has not yet been translated into English from Japanese.
201:
202: */
203:
204: \end{document}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>