[BACK]Return to oxc.tex CVS log [TXT][DIR] Up to [local] / OpenXM / src / oxc

Annotation of OpenXM/src/oxc/oxc.tex, Revision 1.1

1.1     ! ohara       1: % $OpenXM$
        !             2:
        !             3: \documentclass[12pt]{jarticle}
        !             4: \title{新コントロールサーバについて}
        !             5: \def\To{$\Longrightarrow$}
        !             6:
        !             7: \begin{document}
        !             8: \maketitle
        !             9:
        !            10: \section{新コントロールサーバの目的}
        !            11:
        !            12: \begin{itemize}
        !            13: \item コントロールサーバのスタックマシン化
        !            14: \item サーバ起動方法を統一する。\\
        !            15:       \To OMproxy からコントロールサーバ部分を取り除く。
        !            16: \item (ssh を使った)リモートでの起動方法を規約化する
        !            17: \item コントロールサーバの起動と計算サーバの起動の分離
        !            18: \end{itemize}
        !            19:
        !            20: \section{スタックマシン化}
        !            21:
        !            22: いままで意味不明だったSM\_control\_* の位置づけがはっきりする。
        !            23:
        !            24: \newpage
        !            25:
        !            26: \section{計算サーバの起動の分離}
        !            27:
        !            28: メリット
        !            29:
        !            30: \begin{itemize}
        !            31: \item 起動手続きが単純になる。
        !            32: \item 一つのコントロールサーバから複数の計算サーバを起動可能に。\\
        !            33:       \To コントロールサーバの乱立を防ぐ。
        !            34: \end{itemize}
        !            35:
        !            36: デメリット
        !            37:
        !            38: \begin{itemize}
        !            39: \item SM\_control\_* のセマンティックスが変わる。
        !            40: \end{itemize}
        !            41:
        !            42: 例: SM\_control\_reset\_connection を考えてみると、新コントロールサーバ
        !            43: は複数の計算子プロセスを持つので、どのプロセスをリセットするか指定する必
        !            44: 要がある。
        !            45:
        !            46: \section{Java への対応}
        !            47:
        !            48: Java による計算サーバは次の問題がある。
        !            49: すなわち、Pure Java では、OpenXM 規約で定められた
        !            50: ファイルディスクリプタ 3,4 を読み書きできないので対策が必要。\\
        !            51: \To
        !            52: 標準入出力を利用するようにプログラミングし、
        !            53: 次のスクリプトで wrap する。エラーメッセージは、標準出力か、あるいは独自
        !            54: にウィンドウを開いて表示する。
        !            55:
        !            56: \begin{verbatim}
        !            57: #!/bin/sh
        !            58: java OMproxy 3>&0 4>&1
        !            59: \end{verbatim}
        !            60:
        !            61: \newpage
        !            62:
        !            63: \section{ssh による、コントロールサーバのリモート起動}
        !            64:
        !            65: ローカルでの実行形式の探索は次であった。
        !            66:
        !            67: \begin{enumerate}
        !            68: \item 環境変数 OpenXM\_HOME から探す。
        !            69: \item /usr/local/OpenXM/bin から探す。
        !            70: \item 環境変数 PATH から探す。
        !            71: \end{enumerate}
        !            72:
        !            73: ssh を介して起動する場合、利用可能な環境変数は\\
        !            74: remotehost:\$HOME/.ssh/environment にあらかじめ登録する必要がある。
        !            75: したがって、.ssh/environment における PATH の設定を
        !            76: \$OpemXM\_HOME/bin を含むものにしておくのが一番単純であると思われる。
        !            77: 計算サーバの起動はいままでどおりでよい。
        !            78:
        !            79: \bigskip
        !            80:
        !            81: \noindent
        !            82: 注意: 次は不可能です。
        !            83: \begin{verbatim}
        !            84: $ ssh remotehost 'PATH=\$PATH:\$OpenXM_HOME/bin' oxc
        !            85: PATH=$PATH:$OpenXM_HOME/bin: Command not found.
        !            86: \end{verbatim}
        !            87:
        !            88: \section{oxc の許すコマンドラインオプション}
        !            89:
        !            90: \begin{tabular}{|l|l|}
        !            91: \hline
        !            92: -h hostname & hostname はクライアントマシンのホスト名 \\
        !            93: \hline
        !            94: -p port     & ポート番号 \\
        !            95: \hline
        !            96: -c password & パスワード文字列 \\
        !            97: \hline
        !            98: -x          & xterm を用いて出力を表示する \\
        !            99: \hline
        !           100: \end{tabular}
        !           101:
        !           102: \bigskip
        !           103:
        !           104: ただしパスワードは以下の文字からなる任意長の文字列とする
        !           105: \begin{verbatim}
        !           106: %.,^_+-=/@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
        !           107: \end{verbatim}
        !           108:
        !           109: \newpage
        !           110:
        !           111: \section{コントロールサーバの起動手続き}
        !           112:
        !           113: クライアントからは、まず
        !           114: \begin{verbatim}
        !           115: execlp("ssh", remote_host, "-f", "oxc", "-h", host,
        !           116:        "-p", port, "-c", password, NULL);
        !           117: \end{verbatim}
        !           118: によって oxc を起動する。
        !           119: oxc は起動後ただちに host:port に接続しようとするので、
        !           120: クライアントはそれを listen, accept する。
        !           121: サーバは1バイト書いてから読む、クライアントは1バイト読んでから書く
        !           122: という形でバイトオーダの交換を行う。
        !           123:
        !           124: 以後はただの OX スタックマシン。
        !           125:
        !           126: \section{計算サーバの起動}
        !           127:
        !           128: \noindent
        !           129: (その1)
        !           130:
        !           131: 関数 oxc\_open を用いる。(SM\_executeFunction) \\
        !           132: 形式は oxc\_open(cmd, port) で cmd は計算サーバのファイル名である。
        !           133: 成功するとスタックに計算プロセスの pid を int32 で積む。
        !           134:
        !           135: \bigskip
        !           136:
        !           137: \noindent
        !           138: (その2)(ただし未実装)
        !           139:
        !           140: スタックマシン命令 SM\_control\_launch を用いる。
        !           141: スタックの状態は
        !           142:
        !           143: \begin{verbatim}
        !           144: (cmo_string, cmd)  <-- top
        !           145: (cmo_int32, port)
        !           146: \end{verbatim}
        !           147:
        !           148: でなければならない。成功するとスタックに計算プロセスの pid を int32 で積む。
        !           149:
        !           150: \newpage
        !           151:
        !           152:
        !           153: \section{現在の実装の問題点}
        !           154:
        !           155: \begin{itemize}
        !           156: \item 計算プロセスの管理。
        !           157: \item スタックマシン命令をどこまで実装するべきか。
        !           158: \item Mathcap 実装が不完全。\\
        !           159:       \To ox\_toolkit の問題。
        !           160: \item libgmp が必要。\\
        !           161:       \To ox\_toolkit の問題。
        !           162: \end{itemize}
        !           163:
        !           164: \end{document}

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