JPH10501083A - 別の環境で走行するプログラムから関数を呼び出す方法およびシステム - Google Patents

別の環境で走行するプログラムから関数を呼び出す方法およびシステム

Info

Publication number
JPH10501083A
JPH10501083A JP8520267A JP52026795A JPH10501083A JP H10501083 A JPH10501083 A JP H10501083A JP 8520267 A JP8520267 A JP 8520267A JP 52026795 A JP52026795 A JP 52026795A JP H10501083 A JPH10501083 A JP H10501083A
Authority
JP
Japan
Prior art keywords
function
request
environment
computer program
functions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8520267A
Other languages
English (en)
Other versions
JP2982976B2 (ja
Inventor
マー、アンソン
ブレーデイー、マイケル
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH10501083A publication Critical patent/JPH10501083A/ja
Application granted granted Critical
Publication of JP2982976B2 publication Critical patent/JP2982976B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 第1プログラミング言語で記述され、第1環境内で実行されるように設計されたコンピュータ・プログラム関数211、212を、第2プログラミング言語で記述され、第1環境内で実行不能であるコンピュータ・プログラム220からの要求として呼び出すことができるようにする方法を開示する。コンピュータ・プログラム220は、要求を供給し、その動作の中断および再開の能力を有する。要求は、待ち行列206に置かれ、第1環境で走行するスレッド204によって待ち行列206から除去される。コンピュータ・プログラム220が必要な環境を提供しないので、関数211、212をコンピュータ・プログラム220によって実行することはできない。

Description

【発明の詳細な説明】 別の環境で走行するプログラムから 関数を呼び出す方法およびシステム 発明の分野 本発明は、分散コンピューティングに関し、具体的には、Cプログラミング言 語で記述されず、C環境で実行されないコンピュータ・プログラムからの、Cプ ログラミング言語で記述された関数の呼出しに関する。さらに具体的に言うと、 本発明は、多重仮想記憶域(MVS)環境などのDCE(Distributed Computin g Environment、分散コンピューティング環境)以外の環境で走行するプログラ ムからのDCEサービスの使用に関する。発明の背景 分散コンピューティングにおける最近の進展が、OSF(Open Software Foun dation)のDCEの出現である。DCEの目的は、異機種計算機オペレーティン グ環境で、ある程度の透過的コンピューティングを提供することである。OSF は、C言語で記述されたポータブルなソース・コードと、このソース・コードの 移植を支援するための仕様を提供する。OSF DCEは、UNIX、MS−D OS、VMS、CRAYおよびSAA環境を含む多数のオペレーティング・シス テムに関して、使用可能であるか計画されている。その特徴には、共通の通信プ ロトコル、共通のシステム管理および共通のデータ・サービスが含まれる。具体 的に言うと、OSF DCEは、一般性を提供し、下記の主要な構成要素の統合 化を支援することを目的とする。 ・分散環境の複雑さを隠蔽するRPC(Remote Procedure Call,遠隔手続き呼 出し) ・位置、システム、ローカルな命名規則と独立に情報を使用するためのネーミン グ・ディレクトリ ・遠隔位置にあるファイルを透過的に使用するための分散ファイル・システム ・分散資源への許可されないアクセスを防止するためのセキュリテイ ・MS−DOSパーソナル・コンピュータによるDCEサービスへのアクセスを 提供するのを助けるPC統合化 ・システム管理機能 上で述べたように、DCEはC言語で記述され、OSFによってUNIXオペ レーティング・システム上で開発された。 MVSは、IBM Corporation社のシステム/370およびシス テム/390メインフレーム・コンピュータ上で走行するオペレーティング・シ ステムである。MVSは、これらの計算機用のアセンブラ(Asm)で記述され ている。 ほとんどのDCE関数はC言語で記述されているので、C で記述されたアプリケーションから簡単に呼び出すことができる。これらの関数 は、Cプログラム内の「main」関数の存在によって駆動されるCライブラリによ って確立された「C環境」から呼び出されることが想定されている。 「C環境」およびCプログラミング全般に関する情報は、カーニハン(B.W.K ernighan)およびリッチー(D.M.Ritchie)著、「The C Programming Language : Second Edition」、1988年、Prentice Hall刊(邦題「プログラミング言 語C第2版」、石田晴久訳、共立出版)に記載されている。 DCE関数では、アプリケーションが、リンクの慣例、スタックおよび回復ル ーチン群の使用法ならびに関数へ引数またはパラメータを渡す方法として期待さ れるものも含めて、この「C環境」で走行することが前提になっている。パラメ ータ渡しの相違を、異なる環境の例としてこれから説明する。 C関数では、パラメータが「値渡し」を使用して渡されると想定されている。 値渡しの場合、呼び出される関数には、元々の変数ではなく一次変数でパラメー タの値が与えられる。呼び出された関数は、呼出し元の関数の変数の値を直接に 変更することはできず、呼び出された関数の私的な一時コピーを変更することし かできない。呼出し元の関数の変数を変更する必要がある場合には、呼出し元が 、変更される変数のアドレスを提供しなければならず、呼び出される関数では、 そのパラメータをポインタとして宣言し、それを介して間接的に変数にアクセス しなければならない。 MVSでは、「参照渡し(call by reference)」を使用して関数に引数が渡 されると想定されている。参照渡しの場合、呼び出されるルーチンは、局所コピ ーではなく元々のパラメータへのアクセス権を有する。 Cで記述されていないアプリケーション、特に、370アセンブラで記述され たアプリケーションは、DCE関数で期待される環境を提供しない。システム/ 370コンピュータ用に記述されたこのようなアプリケーションの1例が、IB M Corporation社のCICS系列のトランザクション処理ソフトウ ェアである。 この問題は、上ではDCE関数に関して述べたが、C言語で記述された関数に アクセスしようとする、C言語で記述されていないすべてのソフトウェアについ ても存在する。 ある環境から別の環境の関数を呼び出すという問題に対する以前の解決は、特 定の環境と特定のアプリケーションに関する問題の解決を対象としてきた。すな わち、Cで記述された関数を呼び出す非Cアプリケーションの問題に対する一般 的な解決を提供しようとする試みはなかった。これらの解決には、C関数にとっ てC環境にみえるものを用意するためにまずセットアップ・ルーチンを呼び出す 非C呼出し元ルーチンが含まれる。その後、C関数が呼び出され、完了時に、非 C呼出し元ルーチンは、C関数の結果を集め、エラー状態などを解決するために 、クロージング・ルーチンを呼び出さなければならない。このような解決は、環 境設定のオーバーヘ ッドがあるので性能が低く、プログラミングが複雑でエラーも多い。 したがって、2つの環境(「C環境」と「非C環境」)の間のブリッジとして のインターフェースを提供して、特定の環境と特定のアプリケーションのための 特別のコードを必要とせずにDCEサービスを非DCE環境からアクセスできる ようにすると有利である。 環境間の以前のインターフェースは、ブートストラップ・モジュールまたは初 期設定モジュールにかなりの量のプログラミング・ロジックを有する。これらの 初期設定モジュールは、通常は、別の環境でその関数を利用しようとするアプリ ケーション(利用側)によって、メモリなどの資源を割り振られる。これらのイ ンターフェースは、利用側アプリケーションを停止させなければ簡単には停止さ せることができない。したがって、利用側アプリケーションを停止させずに異な る特性によってインターフェースをリフレッシュすることは不可能である。遮断 の後に、カスタマイズ・ファイルを使用して調整された異なる特性を有する状態 で再始動できるインターフェースを提供すると有利である。発明の開示 したがって、本発明は、第1プログラミング言語で記述され、第1環境で実行 されるように設計されたコンピュータ・プログラム関数を、第2プログラミング 言語で記述され、第 1環境で実行することができず、要求を供給し、動作の中断および再開の能力を 有するコンピュータ・プログラムから、要求として呼び出せるようにする方法で あって、前記第1環境で走行するスレッドを作成するステップと、前記要求のた めの待ち行列を提供するステップと、コンピュータ・プログラムから要求を受け 取るステップと、要求を待ち行列に置くステップと、スレッドによって前記要求 を待ち行列から除去するステップと、スレッド内で関数をロードし、実行するス テップとを含む方法を提供する。 好ましい実施例では、アプリケーション・プログラム自体が実行を継続する前 に関数が実行を完了するのをアプリケーション・プログラムが待つのではなく、 前記待ち行列に置くステップの後に、コンピュータ・プログラムを中断するステ ップと、前記実行するステップの後に、関数の完了時にコンピュータ・プログラ ムを再開するステップとが、この方法にさらに含まれる。アプリケーション・プ ログラムは、関数が実行を完了するのを待っている間に、処理を継続することが できる。 また、好ましい実施例では、第1プログラミング言語がCプログラミング言語 であり、第1環境がCプログラミング環境である。 この方法では、要求時に関数を個別にロードすることができるが、好ましい実 施例では、複数の関数が、関数のモジュールで提供され、関数のモジュールをロ ードした後、関数の 実行の前に、要求された関数のアドレスが、関数のモジュールから取得され、実 行するステップが、取得されたアドレスの呼出しからなる。関数のモジュールを 使用することによって、たとえば、セキュリティに関連するDCE関数などの関 数を単一モジュールに集め、その結果、ロードするステップの性能が向上すると いう長所がもたらされる。また、好ましい実施例では、複数のスレッドが用意さ れ、これらの複数のスレッドは、単一の待ち行列から要求を除去し、共通の関数 を共用する。やはり、複数のスレッドを使用して要求の処理のスループットを改 善することによって、性能が向上する。 好ましい実施例では、関数は、Cで記述されたDCE関数であり、アセンブラ (Asm)で記述されたコンピュータ・プログラムは、MVS環境で走行する。 本発明は、Cプログラミング言語で記述されたコンピュータ・プログラム関数 を、Cプログラミング言語で記述されず、C環境で実行されず、要求を供給し、 動作の中断および再開の能力を有するコンピュータ・プログラムからの要求とし て呼び出せるようにするためのデータ処理システムであって、C環境で走行する スレッドを作成するための手段と、要求のための待ち行列手段と、コンピュータ ・プログラムから要求を受け取るための手段と、待ち行列手段に要求を置くため の手段と、コンピュータ・プログラムを中断するための手段と、スレッドによる 待ち行列手段からの前記要求の除去のための手段と、スレッド内での関数のロー ドおよび実行のための手 段と、関数の完了時にコンピュータ・プログラムを再開するための手段とを含む システムも提供する。図面の簡単な説明 本発明の実施例を、例として示す添付の図面を参照して説明する。 第1図は、本発明のインターフェースのブロック図である。 第2図は、第1図のインターフェースの初期設定動作の流れ図である。 第3図は、第1図のインターフェースの要求処理動作の流れ図である。発明の詳細な説明 C言語で記述されたプログラムは、通常は、複数のプログラム内での使用のた めに記述された、プログラム内またはプログラミング片内で共通して使用される プログラミング片が、プログラミング片の出現ごとにプログラムのソース(人間 可読)コード内で完全にリストされないように構造化される。このようなプログ ラミング片を、関数と称し、ソース・コード内にこれらが現れる位置には、関数 の名前の参照だけがある。関数は、プログラム内の後方で完全にリストすること ができ、もしくは、ライブラリ内で完全にリストすることができ、このライブラ リは、後程プログラムをコンパイルする時またはプログラムをリンクする時に参 照される。関数のリス ティングは、独立のプログラムではなく、完全なプログラムから呼び出される必 要がある。 DCE関数 例1に、MVS環境から呼び出されることが所望されるDCE関数sec_login_ setup_identity()を示す。C関数の使用に精通している者であれば、例1に、関 数の実際のプログラミング・コードではなく、関数と入出力パラメータの使用の 構文が示されていることに気付くであろう。この関数の目的は、ユーザのネット ワーク識別を設定することである。この関数は、認証されたネットワーク動作を 実行するのに必要な局所環境のすべてを作成する。しかし、局所オペレーティン グ・システム環境は全く確立されず、したがって、呼出し元ルーチンによってそ のような環境が確立されることが期待される。この動作によって設定されるネッ トワーク識別は、もう1つのDCE関数sec_login_validate_identity()によっ て検証されるまでは使用できない。この関数および他のDCE関数に関する情報 は、「OSF DCE Appllcation Development Reference」、1993年、Prentice Hall刊に記載されている。 この関数の入力パラメータは次のとおりである。 principal 呼出し元プロセスに対応するレジストリ・アカウント上のPrinc ipal名を含む文字列を示すポインタ。 flags 新しいネットワーク信任状(credential)の使用方法に関する 情報を含むフラグの組。 この関数の出力パラメータは次のとおりである。 login_context ログイン・コンテキスト・データへの非透過的ハンドルを指 すポインタ。 status 完了状況を指すポインタ。 本発明のインターフェースは、DCE関数が期待する環境の設定に使用され、 また、必要な入出力パラメータの受け渡しに使用される。 Interface(インターフェース)の概要 このインターフェースは、非DCE環境とDCE環境の間のブリッジとして説 明できる。非DCE環境で走行するコード(Throwerコード)は、DCE要求を 作成する。このインターフェースの利用側(アプリケーション・プログラムなど )は、「Throwerコード」と、DCE環境で走行する対応する「Catcherコード」 の両方を提供する。このインターフェースは、ThrowerコードからCatcherコード へ制御を渡し、CatcherコードからThrowerコードへ制御を返すための機構を提供 する。このインターフェースを用いると、あらゆる種類と内容のパラメータを、 ThrowerコードとCatcherコードの間で渡せるようになり、また、C環境で走行す ることを期待するCatcherコードがC環境で走行することが保証される。 利用側によって供給される「Throwerコード」は、利用側コードが走行する特 定の非DCE環境用に記述される。この利用側記述コードに要求される機能は、 次のとおりである。 1.Bootstrap(ブートストラップ)モジュールのロードとこのモジュールへの 分岐 2.SUSPEND(中断)関数とRESUME(再開)関数の提供 3.Request Control Block(要求制御ブロック)の作成とInterfaceモジュール ・コードへの分岐 利用側が供給する「Catcher」コードは、非DCE環境が利用しようとする「 C」関数群であり、これらの関数へのエン トリ・ポイントを提供するためのヘッダを有する。このコードは、「fetchable (取出可能)」コンパイラ・オプション付きでコンパイルされるが、このオプシ ョンは、関数の実行が要求される場合、その時に、MVSオペレーティング・シ ステムが、その関数をメモリにロードでき、モジュールの大きさ、そのエントリ ・ポイントの場所などの情報を実行時に発見できることを意味する。しかし、M VSは、C環境が欠けているので、スタブ・モジュールを直接に呼び出すことは できない。 Interface構成要素 本発明のインターフェースは、多数のソフトウェア・パートからなり、これら のパートは、表1に一覧を示されたインターフェース初期設定に使用されるもの と、表2に一覧を示された要求処理に使用されるものに分割される。これらのパ ートの一部を、第1図に示す。 Interface初期設定 ここで第2図の流れ図を参照して、インターフェースの実施例の動作を、イン ターフェースの初期設定から説明する。 ステップ301で、Throwerコード220が、Bootstrapモジュール(第1図に は図示せず)をメモリにロードし、このモジュールに分岐する。ステップ302 で、Bootstrapモジュールが、Parameter List(パラメータ・リスト)を読み取 って、Bootstrapモジュールの動作をカストマイズする。Parameter Listには、 インターフェースをカストマイズするパラメ ータが含まれる。通常のParameter Listに含まれるパラメータを、表3に示す。 受け取った要求を処理するDCEスレッド204の数は、Parameter Listのパ ラメータである。このインターフェースが一時に処理する要求の最大サイズであ る要求待ち行列206の最大サイズも、Parameter Listに含まれる。 このインターフェースを異なる要件に合わせて調整またはカストマイズするた めに、ロードされるメインのInterfaceモジュール202を含むライブラリが、P arameter Listに含まれる。この調整は、後で説明する。 DCE環境で実行されるStubモジュール210をそこから ロードすることのできるライブラリは、Parameter Listに含まれる必要がある。 やはり、これを使用してこのインターフェースを調整またはカストマイズするこ とができる。頻繁に使用されるStubモジュール210は、ディスク記憶装置など へのアクセスなしに使用できるように、初期設定処理の一部として事前ロードす ることができる。このようなStubモジュール210の名前は、Parameter Listに 含まれる。 第2図の流れ図を参照すると、ステップ303で、Bootstrapモジュールがメ インのInterfaceモジュール202をロードする。ステップ304で、Bootstrap モジュールは、DCEスレッド204を作成することによって、メインのInterf aceモジュール202に制御を渡す。ステップ305で、Throwerコード220が 、Throwerコード220の「待機」に使用されるSUSPEND出口のアドレスと、Thro werコード220の「再開」に使用されるRESUME出口のアドレスとをInterfaceモ ジュール202に供給する。ステップ306で、Interfaceモジュール202は 、Throwerコード220からの要求を引数にして呼び出すことができるエントリ ・ポイントを、Throwerコード220に返す。 インターフェースの実施例の変形では、非同期初期設定が使用される。この場 合、初期設定が完了する前に、Throwerコード220に制御が返される。これに よって、Throwerコード220が、DCE環境が完全に確立されるのを待ちなが ら長期間拘束される必要がなくなる。 システム再始動か、インターフェース特性を変更するために異なるParameter Listを用いる再始動が要求されたかのいずれかの理由でインターフェースが再始 動されない限り、Bootstrapモジュールは、これ以上の目的のためには働かない 。 要求の処理 ここで第3図の流れ図を参照して、このインターフェースによる要求の処理を 説明する。ステップ401で、Throwerコード220がRequest Control Blockを 作成する。Request Control Blockは、インターフェースに要求を渡すのに使用 される。表4に、通常のRequest Control Blockの内容を示す。 ステップ402で、Throwerコード220が、実行が所望されるスタブ関数に 関する情報を含むRequest Control Blockを 指すポインタを引数にして、Interfaceモジュール202のエントリ・ポイント を呼び出す。ステップ403で、Interfaceモジュール202が、要求をFIF Oの要求待ち行列206に置く。ステップ404で、Interfaceモジュール20 2が、使用可能なDCEスレッド204にその要求を処理するように通知する。 ステップ405で、Interfaceモジュール202が、SUSPEND出口を呼び出す。こ のSUSPEND出口のアドレスは、ステップ305でThrowerコードによって供給され ている。 ステップ406で、通知されたDCEスレッド204が、FIFOの要求待ち 行列206から要求を除去する。ステップ407で、DCEスレッド204が、 ステップ402でThrowerコードによって供給されたポインタを使用してRequest Control Blockをアドレッシングする。ステップ408で、DCEスレッド20 4が、Request Control Blockから、スタブ関数211、212のIDとそれを 含むStubモジュール210の名前を判定する。ステップ409で、Stubモジュー ル210がまだロードされていない場合には、これをロードし、そのエントリ・ ポイントを記録する。Stubモジュール210がすでにロードされている場合、ス テップ411に進む。 Cで記述された1つまたは複数のスタブ関数211、212を含むStubモジュ ール210は、関数番号を引数にして呼び出すことができるエントリ・ポイント を有し、このエントリ・ポイントは、要求された関数の直接エントリ・ポイント を呼出し元に返す。Stubモジュールは、fetchableオプション 付きでコンパイルされるが、これは、関数の実行が要求される場合、その時に、 MVSオペレーティング・システムがその関数をメモリにロードでき、モジュー ルの大きさ、エントリ・ポイントの位置などの情報を実行時に発見できることを 意味する。しかし、MVSは、C環境が欠けているのでStubモジュールを直接に 呼び出すことができない。このようなstubモジュール210の例を、例2に示す 。 このコードには、必要な関数番号を引数にして、最初のエントリ・ポイント( EUVQLKUP)から進入する。このコードは、指定された関数番号のエントリ・ポイ ントが見つからない場合にはnull表示、そうでない場合にはその関数のエントリ ・ポイントを戻り値として終了する。 Stubモジュール210に含まれるスタブ関数211、212のそれぞれには、 これ以外のエントリ・ポイントがある。例では、これらを「stub_functionlのエ ントリ・ポイント」、「stub_function2のエントリ・ポイント」として示す。 ステップ411で、DCEスレッド204が、スタブ関数211、212のI Dを引数にしてStubモジュールのエントリ・ポイントを呼び出す。ステップ41 2で、Stubモジュール210が、ステップ411の呼出しからリターンし、要求 されたスタブ関数211、212のエントリ・ポイントをDCEスレッド204 に返す。 ステップ413で、DCEスレッド204が、通常のC関数を呼び出すのと同 じ形でスタブ関数211、212を呼び出し、Throwerコード220によって渡 された4バイト値からなる単一のパラメータを渡す。ステップ414で、スタブ 関数211、212が、「C」環境を有するDCEスレッド204内で走行し、 Throwerコード220から渡された4バイト値を介して、ThrowerのParameter Li stにアクセスする。ステ ップ415で、スタブ関数211、212が、必要なDCE関数を呼び出し、ス テップ416で、適当な戻りパラメータに結果を置き、ステップ413でこれを 呼び出したDCEスレッド204にリターンする。 ステップ417で、DCEスレッド204が、初期設定のステップ305でア ドレスを渡されたRESUME出口を呼び出す。ステップ418で、RESUME出口が、M VS POSTマクロを使ってThrowerタスクを覚醒させることによって、DC E要求が完了したことを待機中のThrowerタスクに示す。ステップ419で、新 たに覚醒されたThrowerコード220が、DCEスレッド204を休眠させ、Int erfaceモジュール202からの要求処理を求める別の要求を待つ。ステップ42 0で、Throwerコードが、ステップ405で進入したSUSPEND出口からリターンし 、Interfaceモジュール202に制御を渡し、ステップ421で、Interfaceモジ ュール202が、要求が完了したことを知らせ、ステップ402で開始された呼 び出しからリターンする。 初期設定中にこのインターフェースを調整する能力を、これから説明する。 インターフェースの調整 非DCE環境で走行するコードは、このインターフェースを遮断し、初期設定 コードを呼び出すことによって、再始動することができる。これを行う場合には 、異なるParameter Listを指定することによって、異なる版のインターフェースをロードすることが できる。表3に、Parameter Listの内容の例を示す。この遮断と再始動は、たと えば、Throwerタスク(アプリケーション・プログラム)を走行状態に保ちなが ら、更新された版のインターフェースを導入し、したがって、Throwerタスクの 可用性を最大にする時に望ましい。 要求の取消(cancel) 上で述べたように、Throwerコード220は、Interfaceモジュール202がTh rowerコード220の中断と再開を行うためのアドレス(SUSPENDとRESUME)を供 給する。要求が、Interfaceモジュール202によって受け取られ、要求待ち行 列206に置かれてDCEスレッド204による処理を待っている状態になった ならば、SUSPEND出口が呼び出され、利用側は、要求が完了した時までThrowerコ ード220を待つのに必要なすべての処置を行う。要求が待ち行列化された時か ら、要求が完了したことをDCEスレッド204が示すまで、DCEスレッド2 04の下で走行するStubモジュール210(「Catcher」コード)は、Throwerコ ード220によって供給されたパラメータ記憶域のいずれかをアクセスする可能 性を有する。 システム一貫性の必要があるので、Throwerコード220に属するパラメータ 記憶域は、Stubモジュール210の「Catcher」コードのすべてがそれにアクセ スしようとしないことが 明白になるまで、解放することも再割振りすることもできない。このことから、 Throwerコード220が要求の完了を待っている間に、Throwerコード220を終 了し、その記憶域を解放する必要がある場合に問題が発生する。さらに、DCE 環境での要求の取消は、非同期事象であるから、Throwerコード220が、まだ 走行中の要求に関するDCE取消を発行する場合であっても、洗練された同期化 ロジックがなければ、Throwerコード220は、要求が終了したか否かを知らな いはずである。 この問題を克服するために、DCEスレッド204の下で走行するStubモジュ ール210の「Catcher」コードがまだ走行している可能性がある場合であって も、Throwerコード220を除去できるようにする、プロトコルと一連の関数が 使用される。このプロトコルのほかに、この解決に本質的に含まれるのは、Inte rfaceモジュール202による「除去ウィンドウ」ロック機能の提供である。こ の機能によって、Stubモジュール210の「Catcher」コードが前のDCE要求 を取り消す要求を受け入れることができるか否かを示すための手段が提供される 。 除去プロトコル このプロトコルに適合するために、Throwerコード220は、SUSPEND出口の中 にいる場合に、パラメータ記憶域を解放する前に、まずInterfaceモジュール2 02から「同意」を得なけ ればならないことを保証しなければならない(たとえば、除去の処理中)。この 「同意」は、Interfaceモジュール202に取消要求を発行することによって得 られる。取消要求からの応答が満足なものである場合、Throwerコード220は 、除去を進めることができる。しかし、応答が満足でない場合、Throwerコード 220は、進行してはならない。この場合、Throwerコード220は、ある時間 だけ待った後に、取消要求を再試行することが好ましい。 Stubモジュール210の「Catcher」コードは、排除プロトコルに適合しなけ ればならない場合には、例3に示されるような構造になっていなければならない 。Stubモジュール210の「Catcher」コードは、「非取消」ウィンドウ内にあ るのでなければ、取消の候補とみなされる。Stubモジュール210の「Catcher 」コードは、setcancel関数を呼び出して取消をオフにセットしなければならな いことを指定することによって、そのようなウインドウに入ろうとしていること をInterfaceモジュール202に知らせる。同様に、Stubモジュール210の「C atcher」コードは、「Thrower」記憶域からまたはそこへのコピーを完了したな らば、setcancel(ON)関数を呼び出すことによってこれを取り消すことができる ことを示す。 好ましい実施例では、「Compare and Swap(比較と交換)」命令を使用して、 Stubモジュール210の「Catcher」コードの取消状況の変更が、Throwerコード 220とStubモジュール210の「Catcher」コードの間で同期化されることを 保証する。たとえば、setcancel(OFF)が発行される「前」に、インターフェース が取消要求を受け取り、処理する場合、その要求は、取消済みとしてマークされ 、Throwerコードは、そのパラメータ記憶域の解放を許可される。Stubモジュー ル210の「Catcher」コードによる後続のsetcancel(OFF)の呼び出しは、その 要求の取消をもたらし、Stubモジュール210の「Catcher」コードがこの事象 をトラップする回復ロジックを 有するのでない限り、制御は絶対にStubモジュール210の「Catcher」コード には戻らない。 しかし、Stubモジュール210の「Catcher」コードのsetcancel(OFF)要求が 処理された「後」にThrowerコード220の取消要求が処理される場合には、Stu bモジュール210の「Catcher」コードの要求は、「取消不能」としてすでにマ ークされており、Throwerコード220の取消要求は失敗する。

Claims (1)

  1. 【特許請求の範囲】 1.第1プログラミング言語で記述され、第1環境内で実行されるように設計さ れたコンピュータ・プログラム関数を、第2プログラミング言語で記述され、前 記第1環境内で実行不能であり、要求を供給し、その動作の中断および再開の能 力を有するコンピュータ・プログラムからの前記要求として呼び出すことができ るようにする方法であって、 前記第1環境内で走行するスレッドを作成するステップと、 前記要求のための待ち行列を提供するステップと、 前記コンピュータ・プログラムから前記要求を受け取るステップと、 前記要求を前記待ち行列に置くステップと、 前記スレッドによって前記待ち行列から前記要求を除去するステップと、 前記スレッド内で関数をロードし、実行するステップと を含む方法。 2.さらに、 前記待ち行列に置くステップの後に、前記コンピュータ・プログラムを中断す るステップと、 前記実行するステップの後に、関数の完了時に前記コンピュータ・プログラム を再開するステップと を含む、請求項1に記載の方法。 3.前記第1プログラミング言語が、Cプログラミング言語 であり、前記第1環境が、Cプログラミング環境であることを特徴とする、前記 請求項のいずれか一項に記載の方法。 4.複数の関数が、モジュールで提供され、前記関数をロードするステップが、 前記複数の関数を含むモジュールをロードするステップであることを特徴とする 、前記請求項のいずれか一項に記載の方法。 5.さらに、前記複数の関数を含むモジュールをロードした後、関数の実行の前 に、前記複数の関数を含むモジュールから要求された関数のアドレスを取得する ステップを含み、前記実行するステップが、取得されたアドレスの呼び出しによ ることを特徴とする、請求項4に記載の方法。 6.複数のスレッドが作成され、前記複数のスレッドが、単一の待ち行列からの 要求を除去し、共通の関数を共用することを特徴とする、前記請求項のいずれか 一項に記載の方法。 7.前記スレッドを作成するステップが、要求される関数をロードするステップ も含むことを特徴とする、前記請求項のいずれか一項に記載の方法。 8.前記関数が、DCE関数であることを特徴とする、前記請求項のいずれか一 項に記載の方法。 9.前記コンピュータ・プログラムが、MVS環境で走行することを特徴とする 、前記請求項のいずれか一項に記載の方法。 10.前記要求の提供が、要求データを指すポインタの提供を含むことを特徴と する、前記請求項のいずれか一項に記載 の方法。 11.前記スレッド内での関数の実行の前に、 関数を取り消してはならないことの表示をセットするように前記コンピュータ ・プログラムによって要求された場合に、関数を取り消してはならないことの表 示をセットするステップと、 前記コンピュータ・プログラムによって供給された必要なパラメータを、前記 コンピュータ・プログラムに割り振られた記憶域から、前記関数に割り振られた 記憶域へコピーするステップと、 前記関数を取り消してはならないことの表示をクリアするように前記コンピュ ータ・プログラムによって要求された場合に、前記関数を取り消してはならない ことの表示をクリアするステップと を含み、さらに、前記スレッド内での関数の完了の前に、 前記関数を取り消してはならないことの表示をセットするように前記コンピュ ータ・プログラムによって要求された場合に、前記関数を取り消してはならない ことの表示をセットするステップと、 前記関数によって供給された返されたパラメータを、前記関数に割り振られた 記憶域から、前記コンピュータ・プログラムに割り振られた記憶域へコピーする ステップと、 前記関数を取り消してはならないことの表示をクリアするように前記コンピュ ータ・プログラムによって要求された場 合に、前記関数を取り消してはならないことの表示をクリアするステップと を含む、前記請求項のいずれか一項に記載の方法。 12.第1プログラミング言語で記述され、第1環境で実行されるように設計さ れたコンピュータ・プログラム関数を、第2プログラミング言語で記述され、前 記第1環境で実行不能であり、要求を供給し、それ自体の動作の中断および再開 の能力を有するコンピュータ・プログラムからの前記要求として呼び出せるよう にするためのデータ処理システムであって、 C環境で走行するスレッドを作成するための手段と、 要求のための待ち行列手段と、 前記コンピュータ・プログラムから要求を受け取るための手段と、 前記待ち行列手段に要求を置くための手段と、 前記スレッドによって前記待ち行列手段から前記要求を除去するための手段と 、 前記スレッド内での関数のロードと実行のための手段と を含むシステム。 13.さらに、 前記コンピュータ・プログラムを中断するための手段と、 前記関数の完了時に前記コンピュータ・プログラムを再開するための手段と を含む、請求項12に記載のシステム。 14.前記第1プログラミング言語が、Cプログラミング言語であり、前記第1 環境が、Cプログラミング環境であることを特徴とする、請求項12または請求 項13に記載のシステム。 15.複数のスレッドが作成され、前記複数のスレッドが、単一の待ち行列手段 からの要求を除去し、共通の関数を共用することを特徴とする、請求項12ない し請求項14のいずれか一項に記載のシステム。 16.前記関数が、DCE関数であり、前記コンピュータ・プログラムが、MV S環境で走行することを特徴とする、請求項12ないし請求項15のいずれか一 項に記載のシステム。
JP8520267A 1994-12-23 1995-05-18 別の環境で走行するプログラムから関数を呼び出す方法およびシステム Expired - Lifetime JP2982976B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9426201.1 1994-12-23
GB9426201A GB2296351A (en) 1994-12-23 1994-12-23 Calling functions from programs running in another environment
PCT/GB1995/001121 WO1996020441A1 (en) 1994-12-23 1995-05-18 Method and system of calling functions from programs running in another environment

Publications (2)

Publication Number Publication Date
JPH10501083A true JPH10501083A (ja) 1998-01-27
JP2982976B2 JP2982976B2 (ja) 1999-11-29

Family

ID=10766575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8520267A Expired - Lifetime JP2982976B2 (ja) 1994-12-23 1995-05-18 別の環境で走行するプログラムから関数を呼び出す方法およびシステム

Country Status (4)

Country Link
EP (1) EP0799447A1 (ja)
JP (1) JP2982976B2 (ja)
GB (1) GB2296351A (ja)
WO (1) WO1996020441A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11338720A (ja) * 1998-05-28 1999-12-10 Nec Software Ltd クライアントサーバ間通信制御方法及び装置及び記録媒体
JP2000047888A (ja) * 1998-07-31 2000-02-18 Digital Vision Laboratories:Kk コンピュータ、並列分散システムおよび機能呼び出し方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2520543B2 (ja) * 1991-09-06 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの実行を管理する方法及びシステム
US5497463A (en) * 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11338720A (ja) * 1998-05-28 1999-12-10 Nec Software Ltd クライアントサーバ間通信制御方法及び装置及び記録媒体
JP2000047888A (ja) * 1998-07-31 2000-02-18 Digital Vision Laboratories:Kk コンピュータ、並列分散システムおよび機能呼び出し方法

Also Published As

Publication number Publication date
GB2296351A (en) 1996-06-26
GB9426201D0 (en) 1995-02-22
JP2982976B2 (ja) 1999-11-29
EP0799447A1 (en) 1997-10-08
WO1996020441A1 (en) 1996-07-04

Similar Documents

Publication Publication Date Title
KR100898315B1 (ko) 인핸스드 런타임 호스팅
CN100392598C (zh) 操作系统
EP2296089B1 (en) Operating systems
US5666533A (en) Program execution management using process enclaves which define the scope of high-level language semantics and threads improving cooperation between processes written in multiple languages
US6848106B1 (en) Snapshot restore of application chains and applications
US6917963B1 (en) Snapshot image for the application state of unshareable and shareable data
EP2132640B1 (en) Abstracting operating environment from operating system
US6763518B2 (en) Automatic client/server translation and execution of non-native applications
US8539499B1 (en) Symmetric multiprocessing with virtual CPU and VSMP technology
GB2302966A (en) Transaction processing with a reduced-kernel operating system
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
US7546600B2 (en) Method of assigning virtual process identifier to process within process domain
JP2982976B2 (ja) 別の環境で走行するプログラムから関数を呼び出す方法およびシステム
JP2006522971A (ja) オペレーティングシステム
CA2234796C (en) Portable object-oriented operating system
US20200401415A1 (en) Operating system architecture for microkernel generations support
Hildebrand A microkernel POSIX OS for realtime embedded systems
Cohn et al. Basing Micro-kernel Abstractions on High-Level Language Models
Gupta et al. Operating system
Malaika et al. A tale of a transaction monitor
Wyman et al. zAAPs and zIIPs: Increasing the strategic value of System z
Wickham et al. Preliminary comparison between the single-threaded and multi-threaded RHODOS microkernel
Van Looy The IBM AS/400 A technical introduction
Wang User Interface
Server 5FIFTH