JPH06259387A - 手続き実行プロセス及びシステム - Google Patents
手続き実行プロセス及びシステムInfo
- Publication number
- JPH06259387A JPH06259387A JP917194A JP917194A JPH06259387A JP H06259387 A JPH06259387 A JP H06259387A JP 917194 A JP917194 A JP 917194A JP 917194 A JP917194 A JP 917194A JP H06259387 A JPH06259387 A JP H06259387A
- Authority
- JP
- Japan
- Prior art keywords
- procedure
- thread
- processing
- execution
- message buffer
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
(57)【要約】
【目的】 コンテキスト・スイッチングを必要とせずに
呼出し先プロセスを呼出すこと。 【構成】 外部手続き呼出し(XPC)は分散データ処
理環境内の1機能であって、呼出し元プロセスから見て
ローカル又は遠隔にある手続きを、プロセス(タスク)
間の完全なコンテキスト・スイッチングをローカル又は
遠隔で行うことを必要とせずに、呼出し、実行し、必要
な場合はその結果を呼出し元プロセスへ戻すことを可能
にする。これを達成するため、一のサブルーチンを分散
データ処理環境の各処理ノードと関連付けるとともに、
このサブルーチンが並列ジョブの各処理スレッド内で直
接的にアクセスされ且つ実行されるように、これをコー
ド化する。
呼出し先プロセスを呼出すこと。 【構成】 外部手続き呼出し(XPC)は分散データ処
理環境内の1機能であって、呼出し元プロセスから見て
ローカル又は遠隔にある手続きを、プロセス(タスク)
間の完全なコンテキスト・スイッチングをローカル又は
遠隔で行うことを必要とせずに、呼出し、実行し、必要
な場合はその結果を呼出し元プロセスへ戻すことを可能
にする。これを達成するため、一のサブルーチンを分散
データ処理環境の各処理ノードと関連付けるとともに、
このサブルーチンが並列ジョブの各処理スレッド内で直
接的にアクセスされ且つ実行されるように、これをコー
ド化する。
Description
【0001】
【産業上の利用分野】本発明は分散データ処理環境に係
り、更に詳細に説明すれば、プロセスのコンテキスト・
スイッチングを利用せずに、ローカル及び遠隔に位置す
る呼出し先プロセスについて対等(peer-to-peer)の手
続き呼出しを行うための技法に係る。ここで、「ローカ
ル」及び「遠隔」とは、例えば呼出し元プロセスから呼
出し先プロセスを見た場合の、両プロセス間の位置的関
係を言う。
り、更に詳細に説明すれば、プロセスのコンテキスト・
スイッチングを利用せずに、ローカル及び遠隔に位置す
る呼出し先プロセスについて対等(peer-to-peer)の手
続き呼出しを行うための技法に係る。ここで、「ローカ
ル」及び「遠隔」とは、例えば呼出し元プロセスから呼
出し先プロセスを見た場合の、両プロセス間の位置的関
係を言う。
【0002】
【従来の技術】並列動作環境では、手続き呼出しを行う
ための手段を設けることにより、定義済みの位置に格納
された、再使用可能なコードを必要に応じて実行するの
が普通である。この場合、呼出し先の手続きへパラメー
タをパスさせて、結果を戻すようにすることができる。
本明細書中で使用する「手続き」という用語は、通常の
用法に従っているが、特定の状況では、これを機能と呼
んだり、サブルーチンと呼ぶこともある。「プロセス」
と呼ばれるプログラムは、機能や、サブルーチンや、手
続きを含んでいる。
ための手段を設けることにより、定義済みの位置に格納
された、再使用可能なコードを必要に応じて実行するの
が普通である。この場合、呼出し先の手続きへパラメー
タをパスさせて、結果を戻すようにすることができる。
本明細書中で使用する「手続き」という用語は、通常の
用法に従っているが、特定の状況では、これを機能と呼
んだり、サブルーチンと呼ぶこともある。「プロセス」
と呼ばれるプログラムは、機能や、サブルーチンや、手
続きを含んでいる。
【0003】手続き呼出しを行うための周知の方法は、
「遠隔手続き呼出し(RPC:Remote Procedure Cal
l)」と呼ばれる。このRPCの本質的な役割は、分散
データ処理環境中の他のプロセッサ上に位置する手続き
を、プログラムが呼出すことを可能にすることにある。
例えば、プロセッサA上の或るプロセス(呼出し元)が
プロセッサB上の他のプロセス(呼出し先)を呼出す場
合、先ずプロセッサA上の呼出し元プロセスを中断し
て、プロセッサB上で手続き呼出しの実行を開始させ
る。次に、情報がパラメータの形式で呼出し元から呼出
し先へ転送され、そしてこの手続きの結果として情報が
戻される。かかるメッセージのパッシングやI/Oは、
アプリケーション・プログラムには見えない。遠隔手続
き呼出しは広範に使用されている技法であって、最近の
分散オペレーテイング・システムの基礎をなすものであ
る。
「遠隔手続き呼出し(RPC:Remote Procedure Cal
l)」と呼ばれる。このRPCの本質的な役割は、分散
データ処理環境中の他のプロセッサ上に位置する手続き
を、プログラムが呼出すことを可能にすることにある。
例えば、プロセッサA上の或るプロセス(呼出し元)が
プロセッサB上の他のプロセス(呼出し先)を呼出す場
合、先ずプロセッサA上の呼出し元プロセスを中断し
て、プロセッサB上で手続き呼出しの実行を開始させ
る。次に、情報がパラメータの形式で呼出し元から呼出
し先へ転送され、そしてこの手続きの結果として情報が
戻される。かかるメッセージのパッシングやI/Oは、
アプリケーション・プログラムには見えない。遠隔手続
き呼出しは広範に使用されている技法であって、最近の
分散オペレーテイング・システムの基礎をなすものであ
る。
【0004】呼出し元プロセスと呼出し先プロセスとは
互いに異なるプロセスであるから、たとえ或るRPCの
目標とする特定のプロセスが、このRPCを要求してい
るプロセスと同じプロセッサ(ローカル・プロセッサ)
上にあったとしても、このRPCを処理するには、これ
らのプロセス間で完全なコンテキスト・スイッチングを
行うことが必要となる。同様に、目標とするサーバ・プ
ロセスが異なるプロセッサ(遠隔プロセッサ)上にある
場合は、遠隔及びローカル・プロセッサ上のプロセス間
で完全なコンテキスト・スイッチングを行うことが必要
となる。プロセスの完全なコンテキスト・スイッチング
は、呼出し先プロセスがローカル又は遠隔のいずれにあ
ろうとも、相当な処理オーバヘッドを消費する。
互いに異なるプロセスであるから、たとえ或るRPCの
目標とする特定のプロセスが、このRPCを要求してい
るプロセスと同じプロセッサ(ローカル・プロセッサ)
上にあったとしても、このRPCを処理するには、これ
らのプロセス間で完全なコンテキスト・スイッチングを
行うことが必要となる。同様に、目標とするサーバ・プ
ロセスが異なるプロセッサ(遠隔プロセッサ)上にある
場合は、遠隔及びローカル・プロセッサ上のプロセス間
で完全なコンテキスト・スイッチングを行うことが必要
となる。プロセスの完全なコンテキスト・スイッチング
は、呼出し先プロセスがローカル又は遠隔のいずれにあ
ろうとも、相当な処理オーバヘッドを消費する。
【0005】
【発明が解決しようとする課題】従って、本発明の目的
は、一の手続きが呼出し元プロセスから見てローカル又
は遠隔のいずれに位置しようとも、プロセス間の完全な
コンテキスト・スイッチングを必要とせずに、かかる手
続きを呼出し、実行し、必要に応じてその実行結果を呼
出し元プロセスへ戻すことを可能にする、新規な手続き
呼出し技法を提供することにある。
は、一の手続きが呼出し元プロセスから見てローカル又
は遠隔のいずれに位置しようとも、プロセス間の完全な
コンテキスト・スイッチングを必要とせずに、かかる手
続きを呼出し、実行し、必要に応じてその実行結果を呼
出し元プロセスへ戻すことを可能にする、新規な手続き
呼出し技法を提供することにある。
【0006】
【課題を解決するための手段】簡術すると、本発明の第
1の側面は、並列ジョブを構成する複数のタスクの1つ
に関連する目標スレッドにおいて、一の手続きを実行す
るためのプロセスに係る。この手続き実行プロセスは、
複数のタスクを並列処理するための複数の処理ノードを
備えた、分散データ処理環境内で実現される。このプロ
セスは、以下のステップを含んでいる。 (a)前記分散データ処理環境の各処理ノードにおい
て、処理中の少なくとも1つのスレッドがタスクのコン
テキスト・スイッチングを必要とすることなく手続き呼
出し/実行用(call/execute procedure)コードを直接
的にアクセスすることができるように、この手続き呼出
し/実行用コードを各処理ノードと予め関連付けるステ
ップ。 (b)前記手続きを前記目標スレッドにおいて実行する
ことを要求する要求元スレッドを、1つの処理ノードで
実行するステップ。 (c)前記並列ジョブの異なるタスク間のコンテキスト
・スイッチングを利用することなく前記目標スレッド内
で前記手続きが実行されるように、前記目標スレッドを
処理中の処理ノードと予め関連付けられた前記手続き呼
出し/実行用コードをアクセスすることによって前記目
標スレッドにおいて前記手続きを実行するステップ。 本明細書中の「予め関連付ける」という用語は、予め関
連付けられた手続き呼出し/実行用コードがサブルーチ
ン呼出しを介してアクセス可能であるか、又はインライ
ン・コードとして利用可能であることを意味する。
1の側面は、並列ジョブを構成する複数のタスクの1つ
に関連する目標スレッドにおいて、一の手続きを実行す
るためのプロセスに係る。この手続き実行プロセスは、
複数のタスクを並列処理するための複数の処理ノードを
備えた、分散データ処理環境内で実現される。このプロ
セスは、以下のステップを含んでいる。 (a)前記分散データ処理環境の各処理ノードにおい
て、処理中の少なくとも1つのスレッドがタスクのコン
テキスト・スイッチングを必要とすることなく手続き呼
出し/実行用(call/execute procedure)コードを直接
的にアクセスすることができるように、この手続き呼出
し/実行用コードを各処理ノードと予め関連付けるステ
ップ。 (b)前記手続きを前記目標スレッドにおいて実行する
ことを要求する要求元スレッドを、1つの処理ノードで
実行するステップ。 (c)前記並列ジョブの異なるタスク間のコンテキスト
・スイッチングを利用することなく前記目標スレッド内
で前記手続きが実行されるように、前記目標スレッドを
処理中の処理ノードと予め関連付けられた前記手続き呼
出し/実行用コードをアクセスすることによって前記目
標スレッドにおいて前記手続きを実行するステップ。 本明細書中の「予め関連付ける」という用語は、予め関
連付けられた手続き呼出し/実行用コードがサブルーチ
ン呼出しを介してアクセス可能であるか、又はインライ
ン・コードとして利用可能であることを意味する。
【0007】本発明の第2の側面は、並列ジョブの複数
のスレッドのうち1つを構成する一の目標スレッドにお
いて、一の手続きを実行するためのプロセスに係る。こ
の手続き実行プロセスは、複数の処理ノードを備えた、
分散データ処理環境内で実現される。このプロセスは、
以下のステップを含んでいる。 (a)前記分散データ処理環境内の任意の処理ノードに
よって実行される前記並列ジョブの少なくとも1つのス
レッドが手続き呼出し/実行用コードを直接的にアクセ
スすることができるように(換言すれば、この手続き呼
出し/実行用コード又はそのコピーがこの処理ノードで
実行中の当該プロセス内で位置付けられるように)、こ
の手続き呼出し/実行用コードを前記分散データ処理環
境の各処理ノードと関連付けるステップ。 (b)前記並列ジョブの各スレッドに対し一の要求メッ
セージ・バッファ及び一の応答メッセージ・バッファを
割当てるステップ。 (c)前記手続きを前記目標スレッドにおいて実行する
ことを要求するパラメータを、要求元スレッドがその割
当て済みの要求メッセージ・バッファへロードすること
に応答して、前記目標スレッドを実行中の処理ノードに
関連する前記手続き呼出し/実行用コードを実行するス
テップ。 前記手続き呼出し/実行用コードを実行することは、前
記並列ジョブの異なるタスク間のコンテキスト・スイッ
チングを利用することなく前記手続きが実行されるよう
に、前記手続き呼出し/実行用コードを前記目標スレッ
ドの内部から処理することを含んでいる。
のスレッドのうち1つを構成する一の目標スレッドにお
いて、一の手続きを実行するためのプロセスに係る。こ
の手続き実行プロセスは、複数の処理ノードを備えた、
分散データ処理環境内で実現される。このプロセスは、
以下のステップを含んでいる。 (a)前記分散データ処理環境内の任意の処理ノードに
よって実行される前記並列ジョブの少なくとも1つのス
レッドが手続き呼出し/実行用コードを直接的にアクセ
スすることができるように(換言すれば、この手続き呼
出し/実行用コード又はそのコピーがこの処理ノードで
実行中の当該プロセス内で位置付けられるように)、こ
の手続き呼出し/実行用コードを前記分散データ処理環
境の各処理ノードと関連付けるステップ。 (b)前記並列ジョブの各スレッドに対し一の要求メッ
セージ・バッファ及び一の応答メッセージ・バッファを
割当てるステップ。 (c)前記手続きを前記目標スレッドにおいて実行する
ことを要求するパラメータを、要求元スレッドがその割
当て済みの要求メッセージ・バッファへロードすること
に応答して、前記目標スレッドを実行中の処理ノードに
関連する前記手続き呼出し/実行用コードを実行するス
テップ。 前記手続き呼出し/実行用コードを実行することは、前
記並列ジョブの異なるタスク間のコンテキスト・スイッ
チングを利用することなく前記手続きが実行されるよう
に、前記手続き呼出し/実行用コードを前記目標スレッ
ドの内部から処理することを含んでいる。
【0008】本発明の第3の側面は、一の目標スレッド
において一の手続きを実行するためのシステムに係る。
このシステムは、複数スレッドを有する並列ジョブを並
列処理するための複数の処理ノードを備えた、分散デー
タ処理環境を含んでいる。一のオペレーテイング・カー
ネルが、前記分散データ処理環境の各処理ノードに関連
する。前記分散データ処理環境の各カーネルには、手続
き呼出し用コードが保持されている。この手続き呼出し
用コードは、タスクのコンテキスト・スイッチングを必
要とせずに、実行中の任意のスレッドによって各処理ノ
ードにおいて直接的に呼出されるようになっている。前
記並列ジョブの各スレッドには、一意的な要求メッセー
ジ・バッファ及び一意的な応答メッセージ・バッファが
割当てられる。要求元スレッドによって一の手続き呼出
し要求を実行する場合、この要求元スレッドの要求メッ
セージ・バッファへパラメータをロードするため、ロー
ド機構が設けられる。遠隔処理を想定すると、これらの
ロード済みパラメータを前記目標スレッドの要求メッセ
ージ・バッファへ移動させるため、転送機構が設けられ
る。最後に、前記目標スレッドは、これらのパラメータ
を受け取るとき、タスクのコンテキスト・スイッチング
を必要とせずに前記目標スレッドの内部から前記手続き
呼出し用コードを実行するための手段を備えている。
において一の手続きを実行するためのシステムに係る。
このシステムは、複数スレッドを有する並列ジョブを並
列処理するための複数の処理ノードを備えた、分散デー
タ処理環境を含んでいる。一のオペレーテイング・カー
ネルが、前記分散データ処理環境の各処理ノードに関連
する。前記分散データ処理環境の各カーネルには、手続
き呼出し用コードが保持されている。この手続き呼出し
用コードは、タスクのコンテキスト・スイッチングを必
要とせずに、実行中の任意のスレッドによって各処理ノ
ードにおいて直接的に呼出されるようになっている。前
記並列ジョブの各スレッドには、一意的な要求メッセー
ジ・バッファ及び一意的な応答メッセージ・バッファが
割当てられる。要求元スレッドによって一の手続き呼出
し要求を実行する場合、この要求元スレッドの要求メッ
セージ・バッファへパラメータをロードするため、ロー
ド機構が設けられる。遠隔処理を想定すると、これらの
ロード済みパラメータを前記目標スレッドの要求メッセ
ージ・バッファへ移動させるため、転送機構が設けられ
る。最後に、前記目標スレッドは、これらのパラメータ
を受け取るとき、タスクのコンテキスト・スイッチング
を必要とせずに前記目標スレッドの内部から前記手続き
呼出し用コードを実行するための手段を備えている。
【0009】要するに、本発明に従って提供される新規
な外部手続き呼出し(XPC:eXternal Procedure Cal
l)は、プロセス間の完全なコンテキスト・スイッチン
グを行うというオーバヘッドがないことを除けば、標準
的な従来のRPCと同じ機能を達成するものである。X
PCがローカルで(すなわち、要求元スレッドを実行中
の処理ノードで)処理される場合、スレッドのコンテキ
スト・スイッチングですら必要ないのである。一方、X
PCが遠隔で処理される場合は、高々スレッドのコンテ
キスト・スイッチングが必要となるに過ぎないから、そ
の処理上のオーバヘッドは、RPCが必要とするような
完全なプロセスのコンテキスト・スイッチングのそれと
比較すると、極々小さいものである。基本的には、XP
Cは対等の手続き呼出しである。
な外部手続き呼出し(XPC:eXternal Procedure Cal
l)は、プロセス間の完全なコンテキスト・スイッチン
グを行うというオーバヘッドがないことを除けば、標準
的な従来のRPCと同じ機能を達成するものである。X
PCがローカルで(すなわち、要求元スレッドを実行中
の処理ノードで)処理される場合、スレッドのコンテキ
スト・スイッチングですら必要ないのである。一方、X
PCが遠隔で処理される場合は、高々スレッドのコンテ
キスト・スイッチングが必要となるに過ぎないから、そ
の処理上のオーバヘッドは、RPCが必要とするような
完全なプロセスのコンテキスト・スイッチングのそれと
比較すると、極々小さいものである。基本的には、XP
Cは対等の手続き呼出しである。
【0010】
【実施例】図1は、処理ノード12のアレイを備えた分
散データ処理環境10の簡略化した実施例を示す。各処
理ノード12は、ハードウエア、ハードウエアとソフト
ウエアの組み合わせ、又は主としてソフトウエア(例え
ば、仮想処理ノード)で実現することができる。これら
の処理ノード12は全体として分散プロセッサ環境10
を構成して、その環境内でデータ処理機能を実行できる
ようにする。標準的な1つの実施例では、各処理ノード
12は、CPU、通信インタフェース、メモリ及びクロ
ッキング機構を含む。
散データ処理環境10の簡略化した実施例を示す。各処
理ノード12は、ハードウエア、ハードウエアとソフト
ウエアの組み合わせ、又は主としてソフトウエア(例え
ば、仮想処理ノード)で実現することができる。これら
の処理ノード12は全体として分散プロセッサ環境10
を構成して、その環境内でデータ処理機能を実行できる
ようにする。標準的な1つの実施例では、各処理ノード
12は、CPU、通信インタフェース、メモリ及びクロ
ッキング機構を含む。
【0011】処理ノード12のアレイ内部で、これらの
処理ノード12は、高優先順位及び低優先順位のメッセ
ージを介して通信を行うのが普通である。例えば、図2
に示す4つの処理ノード12(処理スタック)の各々
は、データを互いに双方向的に転送できるように、通信
インタフェース16へそれぞれ結合されている。この実
施例では、各処理ノード12はソフトウエア要素18と
ハードウエア要素17を含み、これらの要素が全体とし
て1つの処理スタックを形成する。ソフトウエア要素1
8は、アプリケーション・プログラム22とカーネル
(制御システム)24を含む。各カーネル24は、これ
が一層大きなシステム、すなわち分散データ処理環境1
0の一部であることを固有的に理解している。カーネル
24は、複数の処理ノード12の間の情報の流れを制御
する。
処理ノード12は、高優先順位及び低優先順位のメッセ
ージを介して通信を行うのが普通である。例えば、図2
に示す4つの処理ノード12(処理スタック)の各々
は、データを互いに双方向的に転送できるように、通信
インタフェース16へそれぞれ結合されている。この実
施例では、各処理ノード12はソフトウエア要素18と
ハードウエア要素17を含み、これらの要素が全体とし
て1つの処理スタックを形成する。ソフトウエア要素1
8は、アプリケーション・プログラム22とカーネル
(制御システム)24を含む。各カーネル24は、これ
が一層大きなシステム、すなわち分散データ処理環境1
0の一部であることを固有的に理解している。カーネル
24は、複数の処理ノード12の間の情報の流れを制御
する。
【0012】図3に示すように、分散データ処理環境1
0中の各処理ノード12は、それぞれに対応する単一の
アドレス空間「ADR0」、「ADR1」、「ADR
2」及び「ADR3」を予め割当てられている。すなわ
ち、完全なアドレス空間は、多重スレッド化されている
のである。かかる環境を分散メモリ/並列データ処理環
境と呼ぶ。各カーネル/アプリケーション・インタフェ
ース19は、他の全ての処理ノードで利用可能なものと
同じグローバル機能を、その処理ノードが利用できるよ
うにする。所定のアドレス空間内でデータを実行する
と、そのアドレス空間に影響を与えるか、又はこのデー
タ内で指名されたオブジェクトのアドレス空間内で(す
なわち、図2の通信インタフェース16を介して)同等
の効果を生ぜしめることができる。
0中の各処理ノード12は、それぞれに対応する単一の
アドレス空間「ADR0」、「ADR1」、「ADR
2」及び「ADR3」を予め割当てられている。すなわ
ち、完全なアドレス空間は、多重スレッド化されている
のである。かかる環境を分散メモリ/並列データ処理環
境と呼ぶ。各カーネル/アプリケーション・インタフェ
ース19は、他の全ての処理ノードで利用可能なものと
同じグローバル機能を、その処理ノードが利用できるよ
うにする。所定のアドレス空間内でデータを実行する
と、そのアドレス空間に影響を与えるか、又はこのデー
タ内で指名されたオブジェクトのアドレス空間内で(す
なわち、図2の通信インタフェース16を介して)同等
の効果を生ぜしめることができる。
【0013】図1乃至図3の分散メモリ/並列データ処
理環境では、複数のタスクから成る各並列ジョブが、非
連続(disjoint)アドレス空間内で実行される。システ
ム要求は、これらの非連続アドレス空間内でこれらのタ
スクを制御するカーネルが、相互に割込み駆動式の対話
を行うことを必要とする。本発明の目標は、かかる要求
をローカルで処理する場合であろうと、遠隔に実行する
場合であろうと、かかる対話に使用するに適した、オー
バヘッドが小さい、対称的な機構を提供することにあ
る。従来の遠隔手続き呼出し(RPC)機構が不適当で
あると考えられる所以は、これらの機構が非効率的で且
つ非対称的であり、このためローカル及び遠隔における
サービス要求の処理が互いに異なった様式で行われる、
という点にある。
理環境では、複数のタスクから成る各並列ジョブが、非
連続(disjoint)アドレス空間内で実行される。システ
ム要求は、これらの非連続アドレス空間内でこれらのタ
スクを制御するカーネルが、相互に割込み駆動式の対話
を行うことを必要とする。本発明の目標は、かかる要求
をローカルで処理する場合であろうと、遠隔に実行する
場合であろうと、かかる対話に使用するに適した、オー
バヘッドが小さい、対称的な機構を提供することにあ
る。従来の遠隔手続き呼出し(RPC)機構が不適当で
あると考えられる所以は、これらの機構が非効率的で且
つ非対称的であり、このためローカル及び遠隔における
サービス要求の処理が互いに異なった様式で行われる、
という点にある。
【0014】本発明に従って提供される外部手続き呼出
し(XPC)は、呼出し元プロセス(要求元スレッド)
と同じか又は異なる一のプロセス(目標スレッド)を、
ローカル又は遠隔におけるプロセス(タスク)間の完全
なコンテキスト・スイッチングを必要とせずに、呼出
し、実行し、必要に応じてその実行結果を呼出し元プロ
セスへ戻すことを可能にするものである。これを達成す
るため、(呼出し先の手続きが同じプロセッサによって
ローカルに処理される場合は)呼出し元プロセスの内部
から、又は(呼出し先の手続きが遠隔的に処理される場
合は)遠隔プロセッサ上で実行中の遠隔プロセスの内部
から、一のサブルーチン呼出しを使用してこのサブルー
チン(以下、「位置独立コード(location independent
code)」ともいう)を呼出すことにより、前記呼出し
先の手続きを実行させる。もし、呼出し先の手続きを遠
隔で処理しなければならないのであれば、遠隔プロセス
が割込まれ、そして必要なサブルーチン呼出しを行うた
めに、例えばこの遠隔プロセス中の新しいスレッド(目
標スレッド)が得られる。一方、この呼出し先の手続き
をローカルで処理することができる場合は、スレッドの
コンテキスト・スイッチングですら必要とはならない。
というのは、この実行中プロセスの実行中スレッドは、
それ自体の環境中にあるそれ自体のスタック上で、この
サブルーチン呼出しを行うことができるからである。
し(XPC)は、呼出し元プロセス(要求元スレッド)
と同じか又は異なる一のプロセス(目標スレッド)を、
ローカル又は遠隔におけるプロセス(タスク)間の完全
なコンテキスト・スイッチングを必要とせずに、呼出
し、実行し、必要に応じてその実行結果を呼出し元プロ
セスへ戻すことを可能にするものである。これを達成す
るため、(呼出し先の手続きが同じプロセッサによって
ローカルに処理される場合は)呼出し元プロセスの内部
から、又は(呼出し先の手続きが遠隔的に処理される場
合は)遠隔プロセッサ上で実行中の遠隔プロセスの内部
から、一のサブルーチン呼出しを使用してこのサブルー
チン(以下、「位置独立コード(location independent
code)」ともいう)を呼出すことにより、前記呼出し
先の手続きを実行させる。もし、呼出し先の手続きを遠
隔で処理しなければならないのであれば、遠隔プロセス
が割込まれ、そして必要なサブルーチン呼出しを行うた
めに、例えばこの遠隔プロセス中の新しいスレッド(目
標スレッド)が得られる。一方、この呼出し先の手続き
をローカルで処理することができる場合は、スレッドの
コンテキスト・スイッチングですら必要とはならない。
というのは、この実行中プロセスの実行中スレッドは、
それ自体の環境中にあるそれ自体のスタック上で、この
サブルーチン呼出しを行うことができるからである。
【0015】かくて、XPCは、プロセス間の完全なコ
ンテキスト・スイッチングを行うというオーバヘッドな
しに、RPCと同じ目的を達成するものである(プロセ
ス間のコンテキスト・スイッチングが、多数のパラメー
タを格納することを要し、時間を浪費するためにシステ
ム性能を相当に低下させることは明らかである)。更
に、XPCが遠隔で処理される場合であっても、高々ス
レッドのコンテキスト・スイッチングが必要となるに過
ぎないから、その処理上のオーバヘッドは、RPCが必
要とするような完全なプロセスのコンテキスト・スイッ
チングのそれと比較すると、極々小さいものである。こ
れに対し、XPCがローカルで処理される場合は、スレ
ッドのコンテキスト・スイッチングですら必要ないか
ら、両者の性能上の相違は一層大きくなる。RPCがク
ライアント・プロセスからサーバ・プロセスへの手続き
呼出しであるのとは対照的に、XPCは基本的には対等
の手続き呼出しである。
ンテキスト・スイッチングを行うというオーバヘッドな
しに、RPCと同じ目的を達成するものである(プロセ
ス間のコンテキスト・スイッチングが、多数のパラメー
タを格納することを要し、時間を浪費するためにシステ
ム性能を相当に低下させることは明らかである)。更
に、XPCが遠隔で処理される場合であっても、高々ス
レッドのコンテキスト・スイッチングが必要となるに過
ぎないから、その処理上のオーバヘッドは、RPCが必
要とするような完全なプロセスのコンテキスト・スイッ
チングのそれと比較すると、極々小さいものである。こ
れに対し、XPCがローカルで処理される場合は、スレ
ッドのコンテキスト・スイッチングですら必要ないか
ら、両者の性能上の相違は一層大きくなる。RPCがク
ライアント・プロセスからサーバ・プロセスへの手続き
呼出しであるのとは対照的に、XPCは基本的には対等
の手続き呼出しである。
【0016】以下、図4乃至図8を参照しつつ、本発明
のXPC機能を具備するようにコード化されたシステム
を使用する、手続き呼出しの実現形態を説明する。
のXPC機能を具備するようにコード化されたシステム
を使用する、手続き呼出しの実現形態を説明する。
【0017】図4に示す分散データ処理システム30
は、第1(タスクA)の実行環境32及び第2(タスク
B)の実行環境34を含む。但し、これらの実行環境3
2及び34は、分散メモリ/並列データ処理システムに
おいてそれぞれ別個のアドレス位置を含むものと仮定す
る。実行環境32又は34に含まれるマイクロカーネル
33は、通信インタフェース36を介して、これらの実
行環境間の通信を制御する。また、タスクA及びBの各
々は、それぞれの実行環境32及び34の内部で処理す
べき複数のスレッドと、手続き呼出し/実行用の位置独
立コードのコピーとを保持するものと仮定する。
は、第1(タスクA)の実行環境32及び第2(タスク
B)の実行環境34を含む。但し、これらの実行環境3
2及び34は、分散メモリ/並列データ処理システムに
おいてそれぞれ別個のアドレス位置を含むものと仮定す
る。実行環境32又は34に含まれるマイクロカーネル
33は、通信インタフェース36を介して、これらの実
行環境間の通信を制御する。また、タスクA及びBの各
々は、それぞれの実行環境32及び34の内部で処理す
べき複数のスレッドと、手続き呼出し/実行用の位置独
立コードのコピーとを保持するものと仮定する。
【0018】例えば、タスクAの実行環境32が保持す
る要求元スレッド38は、タスクBの実行環境34に関
連する目標スレッド40の手続き呼出しを必要とする。
このシナリオでは、要求元スレッド38から目標スレッ
ド40への手続き呼出しは、呼出し先プロセスが、遠隔
で(すなわち、タスクAの実行環境32から遠隔にある
位置で)処理されている1つの例である。各スレッドに
対し、要求メッセージ・バッファ42及び応答メッセー
ジ・バッファ44を割当てることが望ましい。また、各
手続き呼出しトランザクションの状態を追跡するため
に、ステータス・ビット46が要求元スレッド38によ
って利用される。以下、本発明に従って利用される、こ
れらの要求メッセージ・バッファ42、応答メッセージ
・バッファ44及びステータス・ビット46を説明す
る。
る要求元スレッド38は、タスクBの実行環境34に関
連する目標スレッド40の手続き呼出しを必要とする。
このシナリオでは、要求元スレッド38から目標スレッ
ド40への手続き呼出しは、呼出し先プロセスが、遠隔
で(すなわち、タスクAの実行環境32から遠隔にある
位置で)処理されている1つの例である。各スレッドに
対し、要求メッセージ・バッファ42及び応答メッセー
ジ・バッファ44を割当てることが望ましい。また、各
手続き呼出しトランザクションの状態を追跡するため
に、ステータス・ビット46が要求元スレッド38によ
って利用される。以下、本発明に従って利用される、こ
れらの要求メッセージ・バッファ42、応答メッセージ
・バッファ44及びステータス・ビット46を説明す
る。
【0019】XPCによって利用されるメッセージの型
は、「要求メッセージ」及び「応答メッセージ」であ
り、これらのメッセージは、対応する要求メッセージ・
バッファ42及び応答メッセージ・バッファ44にそれ
ぞれ保持される。図5に示す要求メッセージのデータ構
造は、要求元スレッドの識別子と、トランザクション識
別子と、要求された機能と、この要求された機能のパラ
メータとを保持する。図6に示す応答メッセージのデー
タ構造は、要求元スレッドの識別子と、トランザクショ
ン識別子と、エラー戻りコード(適用可能な場合)と、
要求された機能によって生成されたデータ(存在する場
合)とを保持する。XPCでは、並列ジョブの各スレッ
ドは、一意的な要求メッセージ・バッファ42及び一意
的な応答メッセージ・バッファ44への参照を有する。
これらの要求メッセージ・バッファ42及び応答メッセ
ージ・バッファ44は予め割当てられているから、いつ
でも直ちに使用することができるようになっている。こ
れらの要求メッセージ及び応答メッセージの参照が必要
となるのは、プロセッサが要求機能から戻る前に応答が
到着するような状況で生じうる、レース条件を防止する
ためである。事実、ローカル・アドレス空間内で要求が
処理される場合は、プロセッサが要求機能から戻る前
に、生成済みの全てのデータは、常に適所に納まってい
る筈である。
は、「要求メッセージ」及び「応答メッセージ」であ
り、これらのメッセージは、対応する要求メッセージ・
バッファ42及び応答メッセージ・バッファ44にそれ
ぞれ保持される。図5に示す要求メッセージのデータ構
造は、要求元スレッドの識別子と、トランザクション識
別子と、要求された機能と、この要求された機能のパラ
メータとを保持する。図6に示す応答メッセージのデー
タ構造は、要求元スレッドの識別子と、トランザクショ
ン識別子と、エラー戻りコード(適用可能な場合)と、
要求された機能によって生成されたデータ(存在する場
合)とを保持する。XPCでは、並列ジョブの各スレッ
ドは、一意的な要求メッセージ・バッファ42及び一意
的な応答メッセージ・バッファ44への参照を有する。
これらの要求メッセージ・バッファ42及び応答メッセ
ージ・バッファ44は予め割当てられているから、いつ
でも直ちに使用することができるようになっている。こ
れらの要求メッセージ及び応答メッセージの参照が必要
となるのは、プロセッサが要求機能から戻る前に応答が
到着するような状況で生じうる、レース条件を防止する
ためである。事実、ローカル・アドレス空間内で要求が
処理される場合は、プロセッサが要求機能から戻る前
に、生成済みの全てのデータは、常に適所に納まってい
る筈である。
【0020】図7は、要求を行っているスレッドに関連
する1組のステータス・ビット46の1実施例を示す。
これらのステータス・ビットは当該トランザクションの
状態を記述するものであって、次のように定義される。 ReqInUse: 要求メッセージ・バッファがアクセ
スのためにオープンされている。 ReqDataReady: 要求メッセージ・バッファがパック
されている。 ResInUse: 応答メッセージ・バッファがアクセ
スのためにオープンされている。 WaitingForRes: 要求元が応答メッセージを待機して
いる。 WaitingForPost: 要求元が閉塞(ブロック)してお
り、通知(ポスト)を必要とする。
する1組のステータス・ビット46の1実施例を示す。
これらのステータス・ビットは当該トランザクションの
状態を記述するものであって、次のように定義される。 ReqInUse: 要求メッセージ・バッファがアクセ
スのためにオープンされている。 ReqDataReady: 要求メッセージ・バッファがパック
されている。 ResInUse: 応答メッセージ・バッファがアクセ
スのためにオープンされている。 WaitingForRes: 要求元が応答メッセージを待機して
いる。 WaitingForPost: 要求元が閉塞(ブロック)してお
り、通知(ポスト)を必要とする。
【0021】各スレッドごとに、関連する要求メッセー
ジ・バッファ42及び応答メッセージ・バッファ44へ
のポインタと、XPCの要求元の名前(位置独立コード
を実行すべき場合)とが保持される。本発明に従ったX
PC動作を利用するについては、要求メッセージをパッ
ケージ化し、手続き呼出しの要求を行い、適当な場合
は、この手続き呼出しの要求に対する応答を待機し且つ
評価することが必要となる。このため、例えば以下の原
始関数(primitive function)を利用することができ
る。 int VX ReadyReq( void **ReqBuf, int ReqLen );デー
タをパックすることができるように、要求メッセージ・
バッファへのアクセスを獲得する。メッセージの長さ
は、ここに記述されている「ReqLen」を超えてはならな
い。これは無閉塞(nonblocking)呼出しであり、要求
元コードによって行われる。 int VX SendReq( VTASKNO Task VXPC CODE Fx);XPC
に対し、データがレデイ状態にあって、指示された機能
を開始可能であることを通知する。これは無閉塞呼出し
であり、要求元コードによって行われる。 int VX RecvReq( VKO DHANDLE *ClientH, void **ReqB
uf, int +ReqLen );システムに対し、応答が予想される
ことを通知する。これは閉塞呼出しであり、要求元スレ
ッドによって行われる。しかし、目標スレッドは割込み
メッセージに応答する場合を除き実行されないから、閉
塞は存在しないはずである。 int VX ReadyRes( void **ResBuf, int ResLen );応答
メッセージ・バッファへのアクセスを獲得する。この応
答メッセージ・バッファは、現要求に対する応答を行う
ように準備される。これは無閉塞呼出しであり、目標ス
レッドによって呼出される。 int VX MakeSendRes( VKO DHANDLE ClientH,int Fx Rc
);当該要求を最初に処理するものとは異なるスレッド
によって、応答メッセージ・バッファへのアクセスを獲
得する。 int VX RecvRes( int *FxRc,void**ReqBuf,int *ReqLen
);これは戻りコードを捕捉し、応答メッセージ・バッ
ファへのアクセスを獲得する。これは本方法の主要な閉
塞呼出しであり、要求をマスクした後に要求元スレッド
によって呼出される。 int VX Done() この呼出しは、現トランザクションをクローズする。こ
の呼出しは、要求元及び目標プロセスの双方によって使
用される。
ジ・バッファ42及び応答メッセージ・バッファ44へ
のポインタと、XPCの要求元の名前(位置独立コード
を実行すべき場合)とが保持される。本発明に従ったX
PC動作を利用するについては、要求メッセージをパッ
ケージ化し、手続き呼出しの要求を行い、適当な場合
は、この手続き呼出しの要求に対する応答を待機し且つ
評価することが必要となる。このため、例えば以下の原
始関数(primitive function)を利用することができ
る。 int VX ReadyReq( void **ReqBuf, int ReqLen );デー
タをパックすることができるように、要求メッセージ・
バッファへのアクセスを獲得する。メッセージの長さ
は、ここに記述されている「ReqLen」を超えてはならな
い。これは無閉塞(nonblocking)呼出しであり、要求
元コードによって行われる。 int VX SendReq( VTASKNO Task VXPC CODE Fx);XPC
に対し、データがレデイ状態にあって、指示された機能
を開始可能であることを通知する。これは無閉塞呼出し
であり、要求元コードによって行われる。 int VX RecvReq( VKO DHANDLE *ClientH, void **ReqB
uf, int +ReqLen );システムに対し、応答が予想される
ことを通知する。これは閉塞呼出しであり、要求元スレ
ッドによって行われる。しかし、目標スレッドは割込み
メッセージに応答する場合を除き実行されないから、閉
塞は存在しないはずである。 int VX ReadyRes( void **ResBuf, int ResLen );応答
メッセージ・バッファへのアクセスを獲得する。この応
答メッセージ・バッファは、現要求に対する応答を行う
ように準備される。これは無閉塞呼出しであり、目標ス
レッドによって呼出される。 int VX MakeSendRes( VKO DHANDLE ClientH,int Fx Rc
);当該要求を最初に処理するものとは異なるスレッド
によって、応答メッセージ・バッファへのアクセスを獲
得する。 int VX RecvRes( int *FxRc,void**ReqBuf,int *ReqLen
);これは戻りコードを捕捉し、応答メッセージ・バッ
ファへのアクセスを獲得する。これは本方法の主要な閉
塞呼出しであり、要求をマスクした後に要求元スレッド
によって呼出される。 int VX Done() この呼出しは、現トランザクションをクローズする。こ
の呼出しは、要求元及び目標プロセスの双方によって使
用される。
【0022】本発明によれば、システム・プログラマ
は、前述の原始関数を利用して一の位置独立コード・シ
ーケンスを生成する。この位置独立コード・シーケンス
は、呼出し先の手続きを処理する際に、一の目標スレッ
ドによって呼出されるような実際のサブルーチンを構成
するものである。手続き呼出しを行うための位置独立コ
ード・シーケンスは、特定の実現形態ごとに変わること
があるが、当業者であればこれを容易に書くことができ
る筈である。図8には、手続き呼出し処理の概要が示さ
れている。
は、前述の原始関数を利用して一の位置独立コード・シ
ーケンスを生成する。この位置独立コード・シーケンス
は、呼出し先の手続きを処理する際に、一の目標スレッ
ドによって呼出されるような実際のサブルーチンを構成
するものである。手続き呼出しを行うための位置独立コ
ード・シーケンスは、特定の実現形態ごとに変わること
があるが、当業者であればこれを容易に書くことができ
る筈である。図8には、手続き呼出し処理の概要が示さ
れている。
【0023】最初は、XPCで書き込まれたコードを利
用するタスクの要求元スレッドにおいて要求が生ずる
(ステップ50)。かくて、全ての動作モード中、要求
された機能に対するパラメータが、XPCの基本呼出し
を行うスレッドに関連する要求メッセージ・バッファ内
でアセンブルされることになる(ステップ52)。この
時点で、位置独立コードに従った処理は、かかる要求が
ローカル又は遠隔のいずれで発行(フィールド)される
のか、ということに依存する。図8の点線ブロック53
の内容は、遠隔処理を想定したものである。
用するタスクの要求元スレッドにおいて要求が生ずる
(ステップ50)。かくて、全ての動作モード中、要求
された機能に対するパラメータが、XPCの基本呼出し
を行うスレッドに関連する要求メッセージ・バッファ内
でアセンブルされることになる(ステップ52)。この
時点で、位置独立コードに従った処理は、かかる要求が
ローカル又は遠隔のいずれで発行(フィールド)される
のか、ということに依存する。図8の点線ブロック53
の内容は、遠隔処理を想定したものである。
【0024】もし、この要求がローカルで発行されるの
であれば、その要求元スレッドによる実行のために、ス
テップ52から前記位置独立コードが直ちに呼出される
ことになろう(この場合、要求メッセージは既にその実
行環境内に存在するから、これを新たに送信又は受信す
る必要はない)。逆に、この要求が遠隔のカーネルによ
って発行されねばならないのであれば、要求元スレッド
の要求メッセージ・バッファ中にある要求メッセージが
かかる遠隔のカーネル、特に目標スレッドへ送信される
(ステップ54)。この要求メッセージは、再び、かか
る目標スレッドに関連する要求メッセージ・バッファで
受信されることになる(ステップ56)。この要求を目
標スレッドへ送信することは、割込み又はポーリングを
介して達成される。ローカル又は遠隔のいずれのケース
であろうとも、前記位置独立コード(これはXPCのコ
ード化機能から成り、分散データ処理システムの各カー
ネルに予め格納されている)の実行は、要求された機能
を実行するであろう処の、スレッドの要求メッセージ・
バッファに置かれたデータを使用して行われる。これ
は、ローカル・ケースについては要求元スレッドであ
り、遠隔ケースについてはXPC割込みスレッド、すな
わち目標スレッドである(ステップ58)。かくて、前
記位置独立コードは、ローカル・プロセスであろうと遠
隔プロセスであろうと、対称性を有するのである。
であれば、その要求元スレッドによる実行のために、ス
テップ52から前記位置独立コードが直ちに呼出される
ことになろう(この場合、要求メッセージは既にその実
行環境内に存在するから、これを新たに送信又は受信す
る必要はない)。逆に、この要求が遠隔のカーネルによ
って発行されねばならないのであれば、要求元スレッド
の要求メッセージ・バッファ中にある要求メッセージが
かかる遠隔のカーネル、特に目標スレッドへ送信される
(ステップ54)。この要求メッセージは、再び、かか
る目標スレッドに関連する要求メッセージ・バッファで
受信されることになる(ステップ56)。この要求を目
標スレッドへ送信することは、割込み又はポーリングを
介して達成される。ローカル又は遠隔のいずれのケース
であろうとも、前記位置独立コード(これはXPCのコ
ード化機能から成り、分散データ処理システムの各カー
ネルに予め格納されている)の実行は、要求された機能
を実行するであろう処の、スレッドの要求メッセージ・
バッファに置かれたデータを使用して行われる。これ
は、ローカル・ケースについては要求元スレッドであ
り、遠隔ケースについてはXPC割込みスレッド、すな
わち目標スレッドである(ステップ58)。かくて、前
記位置独立コードは、ローカル・プロセスであろうと遠
隔プロセスであろうと、対称性を有するのである。
【0025】位置独立コードは、XPCに基づく所定の
ルーチンの必要性に応じて、応答又はエラーを発生しな
いように、システム・プログラマによってプログラムす
ることができる。これは、かかる位置独立コードに対す
る最初の呼出しに従って、実行時に決定することができ
る。しかしながら、かかる位置独立コードが応答又はエ
ラーを発生する場合、データは、実行用スレッド(目標
スレッド)の応答メッセージ・バッファに置かれる。遠
隔ケースについては、この応答(又はエラー信号)は、
目標スレッドから要求元スレッドへ送信される(ステッ
プ60)。代替的に、データが応答メッセージ・バッフ
ァに置かれた後、位置独立コードは、それが呼出し元の
ローカル・スレッドを使用してデータを実行しているの
か(この場合、既にデータは正しい応答メッセージ・バ
ッファに置かれている)、又は遠隔のXPC割込みスレ
ッドを使用して実行しているのか(この場合、応答メッ
セージ・バッファは要求元スレッドへ送信される)を決
定するように、XPCシステムに通知することができ
る。
ルーチンの必要性に応じて、応答又はエラーを発生しな
いように、システム・プログラマによってプログラムす
ることができる。これは、かかる位置独立コードに対す
る最初の呼出しに従って、実行時に決定することができ
る。しかしながら、かかる位置独立コードが応答又はエ
ラーを発生する場合、データは、実行用スレッド(目標
スレッド)の応答メッセージ・バッファに置かれる。遠
隔ケースについては、この応答(又はエラー信号)は、
目標スレッドから要求元スレッドへ送信される(ステッ
プ60)。代替的に、データが応答メッセージ・バッフ
ァに置かれた後、位置独立コードは、それが呼出し元の
ローカル・スレッドを使用してデータを実行しているの
か(この場合、既にデータは正しい応答メッセージ・バ
ッファに置かれている)、又は遠隔のXPC割込みスレ
ッドを使用して実行しているのか(この場合、応答メッ
セージ・バッファは要求元スレッドへ送信される)を決
定するように、XPCシステムに通知することができ
る。
【0026】XPCを利用する位置独立コードにおい
て、要求元スレッドは実行時パラメータが応答を待機す
るようにするか、さもなければこの要求元スレッドは応
答を待機することなしに非同期的に実行を継続すること
ができる。もし、この要求元スレッドが応答を待機する
ようにコード化されていれば、この応答は、かかる要求
元スレッドの応答メッセージ・バッファに置かれる(ス
テップ62)。この場合は、当該コードのXPC部分が
クローズされることになろう(ステップ64)。一方、
この要求元が要求を行い且つ応答を待機することなしに
実行を継続するようにコード化されている場合には、目
標スレッドによって行われた全ての応答は、要求元スレ
ッドにおいて非同期的な例外を発生することになろう。
て、要求元スレッドは実行時パラメータが応答を待機す
るようにするか、さもなければこの要求元スレッドは応
答を待機することなしに非同期的に実行を継続すること
ができる。もし、この要求元スレッドが応答を待機する
ようにコード化されていれば、この応答は、かかる要求
元スレッドの応答メッセージ・バッファに置かれる(ス
テップ62)。この場合は、当該コードのXPC部分が
クローズされることになろう(ステップ64)。一方、
この要求元が要求を行い且つ応答を待機することなしに
実行を継続するようにコード化されている場合には、目
標スレッドによって行われた全ての応答は、要求元スレ
ッドにおいて非同期的な例外を発生することになろう。
【0027】正確を期すためには、要求元スレッドと位
置独立コードの両者が全ての応答に対するプロトコルに
関し一致するように、この要求元スレッドをコード化し
なければならない。位置独立コードも、同様の様式で、
エラーをコード化することができる。前述の方法によっ
て、エラー応答が要求元スレッドに到着する場合、これ
はXPC機能の呼出し元に対し、当該スレッドが待機す
るようにコード化されているか否かを戻している。この
XPC機能が非同期的な機能をプログラムするために使
用される場合、ローカル実行は、依然として正規のサブ
ルーチン・インタフェースを使用するであろうから、こ
の要求元スレッドへ制御が戻される前に要求が十分に処
理されることになろう。非同期である場合、この要求は
遠隔のカーネルに対するメッセージを含み、そしてメッ
セージが送信された直後にこの要求元スレッドへ制御が
戻される。かくて、任意のエラー又は応答は、この要求
元に対し非同期例外を発生しなければならない(これら
の例外は、XPC処理に直接関係のない機能を通してト
ラップすることができる)。
置独立コードの両者が全ての応答に対するプロトコルに
関し一致するように、この要求元スレッドをコード化し
なければならない。位置独立コードも、同様の様式で、
エラーをコード化することができる。前述の方法によっ
て、エラー応答が要求元スレッドに到着する場合、これ
はXPC機能の呼出し元に対し、当該スレッドが待機す
るようにコード化されているか否かを戻している。この
XPC機能が非同期的な機能をプログラムするために使
用される場合、ローカル実行は、依然として正規のサブ
ルーチン・インタフェースを使用するであろうから、こ
の要求元スレッドへ制御が戻される前に要求が十分に処
理されることになろう。非同期である場合、この要求は
遠隔のカーネルに対するメッセージを含み、そしてメッ
セージが送信された直後にこの要求元スレッドへ制御が
戻される。かくて、任意のエラー又は応答は、この要求
元に対し非同期例外を発生しなければならない(これら
の例外は、XPC処理に直接関係のない機能を通してト
ラップすることができる)。
【0028】本発明に従った要求元コードと位置独立
(目標)コードの、C言語によるサンプルを以下に示
す。このサンプルは、位置独立(目標)コードが、「 V
M SendReq」機能における最初の位置依存(要求元)コ
ードによって呼出されることを示すものである。
(目標)コードの、C言語によるサンプルを以下に示
す。このサンプルは、位置独立(目標)コードが、「 V
M SendReq」機能における最初の位置依存(要求元)コ
ードによって呼出されることを示すものである。
【0029】
【表1】
【0030】要するに本発明に従ったXPCコードは、
システム呼出しを行う要求元スレッドからのプロセスの
コンテキスト・スイッチングを必要としない。もし、必
要なサービスをローカルで与えることができるのであれ
ば、ローカル・カーネルは、サブルーチン呼出しインタ
フェースのみを使用して、これを行う。さもなければ、
割込みを発生するメッセージが、目標タスク及びアドレ
ス空間を制御するカーネルへ直接的に送信される。かか
る遠隔カーネルは、スレッドのそれと同等なコンテキス
ト(目標スレッド)をアクセスすることによって、要求
を発行する。割込み時にシステム状態を保存するのに必
要なものを除けば、遠隔ノードではコンテキスト・スイ
ッチングは行われない。要求元スレッドが応答の待機を
閉塞するように、XPCルーチンの同期動作をコード化
するか、或いは要求元スレッドが応答又はエラーメッセ
ージの戻りを待機しないで実行を継続するように、XP
Cルーチンの非同期的動作をコード化することができ
る。特定の様式(behavior)は、並列ジョブ用のシステ
ムを実現するためにXPCコードを使用するシステム・
プログラマによって決定される。XPCに基づく機能
は、実行時呼出し用パラメータに従って、いずれの様式
でも動作するようにプログラムすることができる。
システム呼出しを行う要求元スレッドからのプロセスの
コンテキスト・スイッチングを必要としない。もし、必
要なサービスをローカルで与えることができるのであれ
ば、ローカル・カーネルは、サブルーチン呼出しインタ
フェースのみを使用して、これを行う。さもなければ、
割込みを発生するメッセージが、目標タスク及びアドレ
ス空間を制御するカーネルへ直接的に送信される。かか
る遠隔カーネルは、スレッドのそれと同等なコンテキス
ト(目標スレッド)をアクセスすることによって、要求
を発行する。割込み時にシステム状態を保存するのに必
要なものを除けば、遠隔ノードではコンテキスト・スイ
ッチングは行われない。要求元スレッドが応答の待機を
閉塞するように、XPCルーチンの同期動作をコード化
するか、或いは要求元スレッドが応答又はエラーメッセ
ージの戻りを待機しないで実行を継続するように、XP
Cルーチンの非同期的動作をコード化することができ
る。特定の様式(behavior)は、並列ジョブ用のシステ
ムを実現するためにXPCコードを使用するシステム・
プログラマによって決定される。XPCに基づく機能
は、実行時呼出し用パラメータに従って、いずれの様式
でも動作するようにプログラムすることができる。
【0031】
【発明の効果】以上詳述したように、本発明に従った外
部手続き呼出し(XPC)は、プロセス間の完全なコン
テキスト・スイッチングを行うというオーバヘッドなし
に、標準的な遠隔手続き呼出し(RPC)と同じ機能を
達成するものである。XPCがローカルで処理される場
合は、スレッドのコンテキスト・スイッチングですら必
要とはならない。これに対し、XPCが遠隔で処理され
る場合には、高々スレッドのコンテキスト・スイッチン
グが必要となるに過ぎないから、その処理上のオーバヘ
ッドは、RPCが必要とするような完全なプロセスのコ
ンテキスト・スイッチングのそれと比較すると、極々小
さいものである。XPCは、基本的には、対等の手続き
呼出しである。
部手続き呼出し(XPC)は、プロセス間の完全なコン
テキスト・スイッチングを行うというオーバヘッドなし
に、標準的な遠隔手続き呼出し(RPC)と同じ機能を
達成するものである。XPCがローカルで処理される場
合は、スレッドのコンテキスト・スイッチングですら必
要とはならない。これに対し、XPCが遠隔で処理され
る場合には、高々スレッドのコンテキスト・スイッチン
グが必要となるに過ぎないから、その処理上のオーバヘ
ッドは、RPCが必要とするような完全なプロセスのコ
ンテキスト・スイッチングのそれと比較すると、極々小
さいものである。XPCは、基本的には、対等の手続き
呼出しである。
【図1】本発明を包含すべき分散データ処理環境の1実
施例を概略的に示す図である。
施例を概略的に示す図である。
【図2】本発明を包含すべき分散データ処理環境におい
て、通信インタフェースを通して相互接続される複数の
処理ノードを示す図である。
て、通信インタフェースを通して相互接続される複数の
処理ノードを示す図である。
【図3】本発明を利用すべき複数の分散メモリ/並列処
理ノードに対するアドレス空間割当ての1実施例を示す
図である。
理ノードに対するアドレス空間割当ての1実施例を示す
図である。
【図4】本発明に従った分散メモリ/並列データ処理シ
ステムの1実施例を部分的に示す図である。
ステムの1実施例を部分的に示す図である。
【図5】本発明に従った要求メッセージのデータ構造を
例示する図である。
例示する図である。
【図6】本発明に従った応答メッセージのデータ構造を
例示する図である。
例示する図である。
【図7】本発明に従ったステータス・ビットのデータ構
造を例示する図である。
造を例示する図である。
【図8】本発明に従った外部手続き呼出し(XPC)サ
ブルーチンによる要求処理の概要を示す図である。
ブルーチンによる要求処理の概要を示す図である。
10・・・・・分散データ処理環境 12・・・・・処理ノード 16・・・・・通信インタフェース 17・・・・・ソフトウエア構成要素 18・・・・・ハードウエア構成要素 19・・・・・カーネル/アプリケーション・インタフ
ェース 22・・・・・アプリケーション・プログラム 24・・・・・カーネル(制御システム)
ェース 22・・・・・アプリケーション・プログラム 24・・・・・カーネル(制御システム)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブレイク・ゴードン・フィッチ アメリカ合衆国ニューヨーク州、ニュー・ ロッシェル、アイカード・レーン 1番地 (72)発明者 フベルタス・フランク アメリカ合衆国ニューヨーク州、クロト ン・オン・ハドソン、ウェルズ・アヴェニ ュー 37−ビー番地
Claims (24)
- 【請求項1】並列ジョブの複数のタスクを並列処理する
ための複数の処理ノードを有し且つ前記タスクの各々が
複数の処理スレッドを有する分散データ処理環境におい
て、前記複数のタスクの1つに関連する一の目標スレッ
ドで一の手続きを実行するためのプロセスであって: (a)前記処理ノードの各々によって実行される少なく
とも1つのスレッドがタスクのコンテキスト・スイッチ
ングを必要とせずに手続き呼出し/実行用コードを直接
的にアクセスすることができるように、当該手続き呼出
し/実行用コードを前記処理ノードの各々と予め関連付
けるステップと; (b)前記手続きを前記目標スレッドで実行することを
要求する一の要求元スレッドを、前記処理ノードの1つ
で実行するステップと; (c)前記並列ジョブの異なるタスク間のコンテキスト
・スイッチングを利用せずに前記手続きが前記目標スレ
ッドで実行されるように、前記呼出し/実行手続きコー
ドを前記目標スレッド内で処理するステップと; を含む、手続き実行プロセス。 - 【請求項2】前記並列ジョブの潜在的な各要求元スレッ
ドに対し一の要求メッセージ・バッファを割当てるステ
ップをさらに含み、前記ステップ(b)が、前記手続き
を前記目標スレッドで実行することを要求するパラメー
タを、前記要求元スレッドに割当てられた要求メッセー
ジ・バッファにロードすることを含んでいる、請求項1
記載の手続き実行プロセス。 - 【請求項3】前記目標スレッドが前記要求元スレッドか
ら成り且つ前記手続きを実行するために前記要求元スレ
ッドを実行中の処理ノードでスレッドのコンテキスト・
スイッチングを必要としないように、前記手続きを前記
要求元スレッド内でローカルに実行するステップをさら
に含んでいる、請求項2記載の手続き実行プロセス。 - 【請求項4】前記並列ジョブの各処理スレッドへ一の応
答メッセージ・バッファを割当てるステップをさらに含
み、前記ステップ(c)が、前記手続きの実行結果を前
記要求元スレッドに割当てられた応答メッセージ・バッ
ファへロードすることを含んでいる、請求項3記載の手
続き実行プロセス。 - 【請求項5】前記ステップ(c)が、前記ステップ
(b)を実行する処理ノードから遠隔にある処理ノード
で生ずる、請求項2記載の手続き実行プロセス。 - 【請求項6】前記手続きの実行に係る前記要求元スレッ
ドの要求を前記目標スレッドへ通信するため、前記要求
元スレッドの要求メッセージ・バッファにロードされて
いるパラメータを、前記目標スレッドに割当てられた一
の要求メッセージ・バッファへ送信するステップをさら
に含んでいる、請求項5記載の手続き実行プロセス。 - 【請求項7】前記遠隔処理ノードにおける処理を中断す
るとともに、当該遠隔処理ノードに予め関連付けられた
前記手続き呼出し/実行用コードをアクセスするように
前記目標スレッドを実行するステップをさらに含んでい
る、請求項6記載の手続き実行プロセス。 - 【請求項8】前記ステップ(c)が、前記目標スレッド
に割当てられた前記要求メッセージ・バッファへ送信済
みのパラメータを使用して前記手続きを実行することを
含んでいる、請求項6記載の手続き実行プロセス。 - 【請求項9】前記並列ジョブの各処理スレッドへ一の応
答メッセージ・バッファを割当てるステップをさらに含
み、前記ステップ(c)が、前記手続きの実行結果を前
記要求元スレッドに割り当てられた応答メッセージ・バ
ッファへロードすることを含んでいる、請求項6記載の
手続き実行プロセス。 - 【請求項10】前記手続きの実行結果を、前記目標スレ
ッドに割当てられた応答メッセージ・バッファから前記
要求元スレッドに割当てられた応答メッセージ・バッフ
ァへ通信するステップをさらに含んでいる、請求項9記
載の手続き実行プロセス。 - 【請求項11】前記目標スレッドによる前記手続きの呼
出し及び処理を追跡するように、前記要求元スレッドに
関連する信号ビットを供給するステップをさらに含んで
いる、請求項6記載の手続き実行プロセス。 - 【請求項12】前記ステップ(c)において前記手続き
の実行が前記目標スレッドによって完了されるまで、前
記ステップ(b)における前記要求元スレッドの後続処
理を保留するステップをさらに含んでいる、請求項1記
載の手続き実行プロセス。 - 【請求項13】複数の処理ノードを有する分散データ処
理環境において、並列ジョブの複数のスレッドのうち1
つから成る一の目標スレッドで一の手続きを実行するた
めのプロセスであって: (a)手続き呼出し/実行用コードを一の前記処理ノー
ドで処理するとき前記複数のスレッドのうちの少なくと
も1つが当該手続き呼出し/実行用コードを直接的にア
クセスすることができるように、当該手続き呼出し/実
行用コードを前記処理ノードの各々と関連付けるステッ
プと; (b)前記複数のスレッドの各々に対し一意的な要求メ
ッセージ・バッファ及び一意的な応答メッセージ・バッ
ファを割当てるステップと; (c)一の要求元スレッドがその割当て済みの要求メッ
セージ・バッファへ前記手続きを前記目標スレッドで実
行することを要求するパラメータをロードすることに応
答して、前記並列ジョブの異なるタスク間のコンテキス
ト・スイッチングを利用せずに、前記目標スレッドを実
行中の処理ノードによって前記手続きが実行されるよう
に、当該処理ノードに関連する前記手続き呼出し/実行
用コードを前記目標スレッドの内部から実行するステッ
プと; を含む、手続き実行プロセス。 - 【請求項14】前記要求元スレッドを処理中の処理ノー
ド内で前記手続きをローカルに実行可能である場合、前
記目標スレッドが前記要求元スレッドから成り、前記並
列ジョブのスレッド間のコンテキスト・スイッチングが
必要でないようにした、請求項13記載の手続き実行プ
ロセス。 - 【請求項15】前記手続きの実行結果を、前記要求元ス
レッドに割当てられた応答メッセージ・バッファへロー
ドするステップをさらに含んでいる、請求項14記載の
手続き実行プロセス。 - 【請求項16】前記手続きの実行に係る前記要求元スレ
ッドの要求を前記目標スレッドへ通信するため、前記要
求元スレッドの要求メッセージ・バッファにロードされ
ているパラメータを、前記目標スレッドに割当てられた
一の要求メッセージ・バッファへ送信するステップをさ
らに含み、前記ステップ(c)が、前記要求元スレッド
を処理中の処理ノードから遠隔にある一の処理ノードで
生ずる、請求項13記載の手続き実行プロセス。 - 【請求項17】前記遠隔処理ノードにおける処理を中断
するとともに、当該遠隔処理ノードに関連する前記手続
き呼出し/実行用コードをアクセスするように前記目標
スレッドを実行するステップをさらに含んでいる、請求
項16記載の手続き実行プロセス。 - 【請求項18】前記手続きの実行結果を前記目標スレッ
ドに割当てられた応答メッセージ・バッファへロードす
るとともに、当該応答メッセージ・バッファから前記要
求元スレッドに割当てられた応答メッセージ・バッファ
へ前記手続きの実行結果を通信するステップをさらに含
んでいる、請求項16記載の手続き実行プロセス。 - 【請求項19】前記目標スレッドによる前記手続きの呼
び出し及び処理を追跡するように、前記要求元スレッド
に関連する信号ビットを供給するステップをさらに含ん
でいる、請求項13記載の手続き実行プロセス。 - 【請求項20】前記手続きの実行が前記目標スレッドに
よって完了されるまで、前記要求元スレッドの後続処理
を保留するステップをさらに含んでいる、請求項13記
載の手続き実行プロセス。 - 【請求項21】並列ジョブの複数のスレッドのうち1つ
から成る一の目標スレッドにおいて一の手続きを実行す
るためのシステムであって:前記並列ジョブを並列に処
理するための複数の処理ノードを有する分散データ処理
環境と;前記複数の処理ノードとそれぞれ関連する複数
のオペレーテイング・カーネルと;前記複数のオペレー
テイング・カーネルの各々と関連し且つタスクのコンテ
キスト・スイッチングを必要とせずに各処理ノード内で
実行される一のスレッドによって各処理ノードで直接的
に呼出し可能な手続き呼出しコードと;前記並列ジョブ
の各スレッドに対する一意的な要求メッセージ・バッフ
ァ及び一意的な応答メッセージ・バッファと;一の要求
元スレッドによって一の手続き呼出しを実行する際に、
当該要求元スレッドの要求メッセージ・バッファへパラ
メータをロードする手段と;前記要求元スレッドの要求
メッセージ・バッファから前記目標スレッドに関連する
一の要求メッセージ・バッファへ前記パラメータを送信
する手段と;前記パラメータを受信する際に、前記手続
き呼出しコードをタスクのコンテキスト・スイッチング
を必要とせずに前記目標スレッド内で実行する手段と;
を備えて成る、手続き実行システム。 - 【請求項22】前記手続きの実行結果を前記目標スレッ
ドの応答メッセージ・バッファへロードする手段をさら
に備えて成る、請求項21記載の手続き実行システム。 - 【請求項23】前記手続きの実行結果を、前記目標スレ
ッドに関連する前記応答メッセージ・バッファから前記
要求元スレッドの応答メッセージ・バッファへ転送する
手段をさらに備えて成る、請求項22記載の手続き実行
システム。 - 【請求項24】前記目標スレッドによる前記手続きの呼
出し及び処理を追跡するように前記要求元スレッドに関
連する信号ビット手段をさらに備えて成る、請求項21
記載の手続き実行システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US2639793A | 1993-03-04 | 1993-03-04 | |
US026397 | 1993-03-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06259387A true JPH06259387A (ja) | 1994-09-16 |
Family
ID=21831608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP917194A Pending JPH06259387A (ja) | 1993-03-04 | 1994-01-31 | 手続き実行プロセス及びシステム |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0614139A3 (ja) |
JP (1) | JPH06259387A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100730262B1 (ko) * | 2004-09-30 | 2007-06-20 | 산요덴키가부시키가이샤 | 래치 클럭 생성 회로 및 시리얼-패러럴 변환 회로 |
JP2013214168A (ja) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | 情報処理装置、演算装置および情報転送方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471526A (en) * | 1994-02-28 | 1995-11-28 | Telefonaktiebolaget L M Ericsson (Publ.) | Tracing with keys and locks on a telecommunication network |
CA2199108C (en) * | 1996-03-05 | 2002-04-23 | Hirotoshi Maegawa | Parallel distributed processing system and method of same |
US5778243A (en) * | 1996-07-03 | 1998-07-07 | International Business Machines Corporation | Multi-threaded cell for a memory |
US8135018B1 (en) | 2007-03-29 | 2012-03-13 | Qurio Holdings, Inc. | Message propagation in a distributed virtual world |
US8000328B1 (en) | 2007-05-22 | 2011-08-16 | Qurio Holdings, Inc. | Filtering messages in a distributed virtual world based on virtual space properties |
US9058090B1 (en) | 2008-06-02 | 2015-06-16 | Qurio Holdings, Inc. | Collaborative information sharing in a virtual world |
JP6461167B2 (ja) | 2014-01-21 | 2019-01-30 | オラクル・インターナショナル・コーポレイション | アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法 |
US10382537B2 (en) * | 2014-09-25 | 2019-08-13 | Oracle International Corporation | System and method for use of a global runtime in a multitenant application server environment |
US10732865B2 (en) * | 2015-09-23 | 2020-08-04 | Oracle International Corporation | Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces |
US11138017B2 (en) | 2016-09-16 | 2021-10-05 | Oracle International Corporation | System and method for partition administrative targeting in an application server environment |
US10952767B2 (en) | 2017-02-06 | 2021-03-23 | Covidien Lp | Connector clip for securing an introducer to a surgical fastener applying apparatus |
CN112583733A (zh) * | 2020-12-01 | 2021-03-30 | 北京三快在线科技有限公司 | 一种接口的流量整形方法、装置、存储介质及电子设备 |
-
1994
- 1994-01-27 EP EP94101189A patent/EP0614139A3/en not_active Withdrawn
- 1994-01-31 JP JP917194A patent/JPH06259387A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100730262B1 (ko) * | 2004-09-30 | 2007-06-20 | 산요덴키가부시키가이샤 | 래치 클럭 생성 회로 및 시리얼-패러럴 변환 회로 |
JP2013214168A (ja) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | 情報処理装置、演算装置および情報転送方法 |
US9003082B2 (en) | 2012-03-30 | 2015-04-07 | Fujitsu Limited | Information processing apparatus, arithmetic device, and information transferring method |
Also Published As
Publication number | Publication date |
---|---|
EP0614139A3 (en) | 1995-05-03 |
EP0614139A2 (en) | 1994-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6081846A (en) | Method and computer program product for reducing intra-system data copying during network packet processing | |
US5675796A (en) | Concurrency management component for use by a computer program during the transfer of a message | |
JP4690437B2 (ja) | ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム | |
US5818448A (en) | Apparatus and method for identifying server computer aggregation topologies | |
EP0790562B1 (en) | Computer system data I/O by reference among CPUs and I/O devices | |
KR100550197B1 (ko) | 버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를전송하기 위한 시스템 및 방법 | |
US6182108B1 (en) | Method and system for multi-threaded processing | |
US6163812A (en) | Adaptive fast path architecture for commercial operating systems and information server applications | |
EP0924607A2 (en) | Method and apparatus for fast local CORBA object references | |
US6112253A (en) | Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs | |
JPH0926890A (ja) | オブジェクトを管理するための方法、装置、および、データ構造 | |
US20070260920A1 (en) | Method of restoring communication state of process | |
US5954794A (en) | Computer system data I/O by reference among I/O devices and multiple memory units | |
JPH11312088A (ja) | プログラムの配布方法およびシステム | |
JPH06259387A (ja) | 手続き実行プロセス及びシステム | |
EP0790563A2 (en) | Computer system data I/O by reference among CPUs and multiple memory units | |
EP0789305A2 (en) | Computer system data I/O by reference among multiple data sources and sinks | |
US6986147B2 (en) | Method for transparent, location-independent, remote procedure calls in a heterogeneous network environment | |
EP0910017A2 (en) | Remote object activation in a distributed system | |
JPH10307732A (ja) | メッセージ伝送方法 | |
US6032267A (en) | Apparatus and method for efficient modularity in a parallel, fault tolerant, message based operating system | |
US6718399B1 (en) | Communications on a network | |
US6865579B1 (en) | Simplified thread control block design | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
US5392426A (en) | Method and apparatus for use in program operation, control and control block management and storage |