version 1.4, 2000/12/01 08:03:48 |
version 1.6, 2000/12/05 23:19:49 |
|
|
%#!make OX-RFC-101-ja.dvi |
%#!make OX-RFC-101-ja.dvi |
% $OpenXM: OpenXM/doc/OpenXM-specs/OX-RFC-101.tex,v 1.3 2000/11/30 10:15:24 ohara Exp $ |
% $OpenXM: OpenXM/doc/OpenXM-specs/OX-RFC-101.tex,v 1.5 2000/12/05 06:38:55 ohara Exp $ |
\documentclass{article} |
\documentclass{article} |
%%\IfFileExists{epsfig.sty}{\usepackage{epsfig}}{} |
%%\IfFileExists{epsfig.sty}{\usepackage{epsfig}}{} |
\usepackage{html} |
\usepackage{html} |
|
|
|
|
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 |
|
|
\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} |
Line 232 fork(2) で子プロセスを生成し、子プロセスは dup2(fd1, 0 |
|
Line 247 fork(2) で子プロセスを生成し、子プロセスは dup2(fd1, 0 |
|
|
|
ここでは、oxc のローカル関数 spawn について説明しよう。 |
ここでは、oxc のローカル関数 spawn について説明しよう。 |
|
|
spawn は計算サーバを起動し、少なくとも 2 個の引数を持つ。すなわち、 |
spawn は計算サーバを起動し、少なくとも 1 個の引数を持つ。この引数は |
\begin{verbatim} |
SM\_control\_spawn\_server で用いられる {\sl List} Argument と同一の形式で |
spawn(計算サーバ名, ポート番号, モード, ...) |
ある。すなわち、スタックに(右がトップ) |
\end{verbatim} |
\begin{tabular}{|c|c|c|} \hline |
という形式である。「モード」はなくてもよい。ここで、「計算サーバ名」は |
{\sl List} Argument & {\sl Integer32} 1 & {\sl String} ``spawn'' \\ |
CMO\_STRING 型のオブジェクト、「ポート番号」、「モード」は CMO\_INT32型 |
\hline |
のオブジェクトである。ローカル関数の実行は SM\_executeFunction による。 |
\end{tabular} |
すなわち各引数を順にスタックに積み、最後にSM\_executeFunction を実行する。 |
を積み、SM\_executeFunction をコントローラに送る。 |
SM\_executeStringByLocalParser は利用できないので注意する。 |
SM\_executeStringByLocalParser は利用できないので注意する。 |
|
|
spawn は、計算サーバの起動に成功したら (CMO\_INT32, サーバID) を、失 |
spawn は、計算サーバの起動に成功したら (CMO\_INT32, サーバID) を、失 |
Line 247 spawn は、計算サーバの起動に成功したら (CMO\_INT32, サ |
|
Line 262 spawn は、計算サーバの起動に成功したら (CMO\_INT32, サ |
|
かった場合にはエラーオブジェクトを積むことになる。コントロールサーバは |
かった場合にはエラーオブジェクトを積むことになる。コントロールサーバは |
access(2) を用いて PATH から計算サーバを探す。もし見つからなければ、fork |
access(2) を用いて PATH から計算サーバを探す。もし見つからなければ、fork |
をせずに、エラーオブジェクトをスタックに積む。 |
をせずに、エラーオブジェクトをスタックに積む。 |
|
|
|
|
|
|
|
|
*/ |
*/ |
|
|
/*&eg |
/*&eg |