JPH08227403A - スペース効率に優れたプロセス間通信方法及び装置 - Google Patents

スペース効率に優れたプロセス間通信方法及び装置

Info

Publication number
JPH08227403A
JPH08227403A JP7207405A JP20740595A JPH08227403A JP H08227403 A JPH08227403 A JP H08227403A JP 7207405 A JP7207405 A JP 7207405A JP 20740595 A JP20740595 A JP 20740595A JP H08227403 A JPH08227403 A JP H08227403A
Authority
JP
Japan
Prior art keywords
procedure
buffer
argument
circuit
kernel
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
Application number
JP7207405A
Other languages
English (en)
Inventor
Panagiotis S Kougiouris
パナギオティス・エス・クーギオリス
Graham Hamilton
グラハム・ハミルトン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08227403A publication Critical patent/JPH08227403A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

(57)【要約】 【課題】 スペース効率の高いプロセス間通信方法及び
装置を提供する。 【構成】 第1のプロシージャが、この第1のプロシー
ジャと第2のプロシージャによって共用される第1のメ
モリスペース中に第1のバッファを割当てる。第1のプ
ロシージャは、第2のプロシージャと通信するための引
数を第1のバッファ中に整列させる、第2のプロシージ
ャのためのメッセージが現在渡されているということを
指示するとともに、第1のメモリスペース中の第1のバ
ッファに対する第1の参照を第2のプロシージャに渡
す。第2のプロシージャは、第1のプロシージャによる
メッセージの指示を検出した後、第1のバッファを参照
し、第1のバッファ中の引数をテンポラリ・バッファに
コピーする。次に、第2のプロシージャは、第1のバッ
ファを割当て解除する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータシステム
に関するものである。より詳しくは、本発明は、コンピ
ュータシステムにおけるプロセスの間通信に関する。
【0002】
【従来の技術】プロセス間通信は、現代のコンピュータ
システム設計の一つの基本的な部分である。プロセス間
通信は、通常、クライアントとサーバ・プロセスとの間
の通信を管理するコンピュータシステムのカーネルの呼
出し技法によって容易に行える。このようなプロセス間
通信に付随する問題の1つは、例えばクライアントタス
クは、サーバタスクを呼び出すとき引数(パラメータ)
をそのサーバタスクに渡すためにメモリの一定量を割当
て、そのメモリは通常何らかの引数がサーバから戻され
るまで使用状態に置かれるということである。すなわ
ち、制御及び処理がサーバ・アプリケーションに渡され
た後も、サーバからリターン引数が戻されるまで、依然
としてメモリがクライアント・アプリケーションで費消
される。このように、サーバタスクがクライアントから
制御を渡された時間の大半の間にわたって使用されるこ
とのなく一つのバッファが割当てられている。これは、
各スレッドにつき1つずつというように複数のバッファ
が割当てられるマルチスレッド環境においては、特に問
題となる。すなわち、多数のバッファが割当て状態のま
まに置かれ、その大部分が各スレッドの持続時間の間未
使用状態に保たれ、メモリ資源が不必要に費消される。
【0003】従来技術におけるプロセス間通信の典型的
な仕組みを図1に示す。典型的には、クライアントタス
ク(例えば図1の110)は、通常、クライアント・プ
ロセス及びカーネル・プロセスに利用可能なバッファま
たは他の保護メモリスペースである符号111で示すよ
うなある量のメモリスペースを割当て、そのバッファ領
域に引数を整列させる。本願において、「整列」とは、
クライアント・プロセスがサーバ・プロセスに渡される
引数、パラメータまたは他のデータをあるメモリエリア
に格納するプロセスを指す。セキュリティないしは安全
保護の理由から、このメモリエリアは、通常クライアン
ト・プロセス110及びオペレーティング・システム1
00のカーネルのみが利用可能である。
【0004】図1に示すサーバ・プロセス120に対す
るコールが起こると、カーネル100がそのコールを検
出し、制御はカーネルに渡される。この場合、クライア
ントは、通常ポインタまたは参照(reference )をメモ
リエリア(バッファ)111に渡し、その後、カーネル
はバッファ111に渡された引数にアクセスすることが
できる。次に、カーネル100は、そのメモリエリア1
11に対する参照を受け取り、メモリエリア111内に
ある引数をカーネル100のテンポラリ・メモリエリア
にコピーする。すると、カーネルがアクセス可能な第2
のメモリエリア101及びサーバルーチン120を用い
て、カーネル100からサーバ120へ通信することが
できる。テンポラリ・バッファ中の引数は、メモリエリ
ア(バッファ)121にコピーされる。次に、プロセス
120用のサーバルーチン・スレッドが生成され、カー
ネル100によってこのスレッドに対する参照が行われ
る。サーバ120は、カーネル100からのメモリエリ
ア121に対する参照を受け入れ、かつ引数を整列解除
する。
【0005】サーバ・プロセス120がアクティブのと
きは、カーネル100による呼出し後も、バッファ11
1はクライアント・プロセス110に割当てられた状態
になっている。一部の従来技術のアプリケーションにお
いては、引数を整列させるためのバッファは、長さが5
キロバイトのオーダーである。クライアントは、このメ
モリエリアをサーバ・プロセス120の実行期間中、オ
ープンでアクセス可能な状態に保つ。サーバ・プロセス
120の実行終了と同時に、上記のクライアント/サー
バ呼出しプロセスの逆のプロセスが行われ、その際、サ
ーバは、それ自身のバッファ121を用いて引数をカー
ネル100のメモリエリアに整列させるとともに、参照
がこのカーネル100のメモリエリアに渡される。最終
的には、リターン引数は、クライアント・プロセス11
0中の元のバッファ領域111内に戻る。典型的な従来
技術のシステムにおいては、この時になって初めて、ク
ライアント・プロセス及びサーバ・プロセスのバッファ
111及び121が両方とも割当て解除される。このよ
うに、これらのバッファは、カーネル100及びサーバ
・プロセス120がアクティブであり、またおそらくは
アイドルである(例えばI/O処理待ちの間)長い時間
にわたって、割当てられたまま、アイドル状態に保たれ
ることになる。これは、メモリ資源の無駄遣いである。
さらに、マルチスレッド環境においては、クライアント
・プロセス110及びサーバ・プロセス120が111
及び121のようなバッファを多数割当てて、対応する
呼び出された側のプロセスによって制御がリターンされ
るのを待つ間、それらのバッファを割当て状態に保つ場
合がある。これは、メモリ資源が大量かつかつ不必要に
費消される結果につながる。
【0006】
【発明が解決しようとする課題】コンピュータシステム
におけるスレッド数が増大するにつれて、このような通
信によって費消されるメモリの量が非常に重要な意味を
持つようになる。従って、本発明は、プロセス間通信に
おけるメモリ資源の使用に付随する従来技術の欠点を解
消するためになされたもので、その目的は、スペース効
率の高いプロセス間通信方法及び装置を提供することに
ある。
【0007】
【課題を解決するための手段】本発明は、コンピュータ
システムにおけるプロセス間通信用のコンピュータで実
行される方法及び装置にある。本発明においては、第1
のプロシージャが、この第1のプロシージャ(例えばク
ライアント・プロセス)と第2のプロシージャ(例えば
カーネルまたはサーバ・プロセス)によって共用される
第1のメモリスペース中に第1のバッファを割当てる。
次に、第1のプロシージャは、第2のプロシージャと通
信するための引数を第1のバッファ中に整列させる。ま
た、第1のプロシージャは、第2のプロシージャのため
のメッセージが現在渡されているということを指示する
とともに、第1のメモリスペース中の第1のバッファに
対する第1の参照を第2のプロシージャに渡す。第2の
プロシージャは、第1のプロシージャによるメッセージ
の指示を検出する。次に、第2のプロシージャは、第1
のバッファを参照し、第1のバッファ中の引数をテンポ
ラリ・バッファにコピーする。すると、第2のプロシー
ジャは、第1のバッファを割当て解除することができ
る。本発明の実施の形態においては、第1のバッファは
第2のプロシージャによる通信の受取りと同時に割当て
解除されるので、プロセス間通信がより効率的になる。
【0008】次に、第2のプロシージャは、テンポラリ
・バッファ中の引数を処理することができる。引数を処
理し終わったならば、第2のプロシージャは、リターン
引数を整列させるために、第1メのモリスペース中で第
2のバッファを割当てる。第2のプロシージャは、第1
のプロシージャにリターンし、これに第2のバッファに
対する第2の参照を渡す。第1のプロシージャは、この
第1のプロシージャへのリターンを検出し、第2のバッ
ファ中の引数を整列解除する。第1のプロシージャは、
第2のバッファを割当て解除し、実行を継続する。本発
明の実施の形態においては、第1のメモリスペースが第
1の数のバッファを参照する第1のプロシージャによる
第2のプロシージャの呼出しに先立って、第1のメモリ
スペースが第1のサイズに事前割当てされる。上記第1
の数の各バッファを第1または第2のプロシージャによ
って割当て、それらのバッファが第1または第2のプロ
シージャによって使用中であることを指示することも可
能である。上記第1の数の各バッファが第1のプロシー
ジャまたは第2のプロシージャによって使用中であるこ
との指示は、割当てフラグとバッファが使用中であるこ
とを示す値との間のアトミック・スワップによって行わ
れ、その際上記割当てフラグは上記第1の数のバッファ
の1つが使用中であるかどうかを示すために用いられ
る。
【0009】以下、本発明を添付図面に示す実施の形態
により詳細に説明する。これらの実施の形態は、例示説
明を目的とするものであり、本発明に対して制限的な意
味を有するものではない。なお、添付図面中、同じ参照
符号は同じ構成要素を示す。
【0010】
【実施の形態】本発明は、プロセス間通信、特にリモー
ト・プロシージャ呼出しを実装したコンピュータシステ
ムにおけるプロセス間通信のより効率的な方法を提供す
るものである。本発明は、特定の実施の形態との関連、
特に汎用プログラム・コンピュータシステムとの関連に
おいて説明するが、当業者には、本発明がその要旨及び
範囲を逸脱することなく様々なシステムで実施すること
可能なことは明白であろう。本発明は、一連のデータ構
造及びコンピュータシステム中で動作可能なコンピュー
タ・プログラムに実装される付随命令として実施され
る。このようなデータ構造は、図2のブロック図に示す
ようなコンピュータシステムで生成することができる。
【0011】図2において、符号200は、本発明の一
実施の形態が実装されるコンピュータシステムを示す。
コンピュータシステム200は、情報を伝達するための
バスまたはその他の通信手段201、バス201と結合
された情報を処理するための処理手段202を具備す
る。システム200は、さらに、情報及びプロセッサ2
02によって実行される命令を記憶するためのバス20
1に結合されたランダムアクセスメモリ(RAM)また
はその他の書換可能な記憶装置204(以下主メモリと
称する)を具備する。また、主メモリ204は、プロセ
ッサ202による命令実行の間、一時的変数またはその
他の中間情報を記憶するためにも使用することができ
る。さらに、システム200は、プロセッサ202用の
静的情報及び命令を記憶するためのバス201と結合さ
れたリードオンリーメモリ(ROM)及び/またはその
他の静的記憶装置206、及び磁気ディスクまたは光デ
ィスクとこれらに対応するディスクドライブのようなデ
ータ記憶装置207も具備している。データ記憶装置2
07は、情報及び命令を記憶するために、バス201と
結合されている。この記憶装置は、商業ベースで入手可
能なソフトウェア製品を用いて、その時現在定義済みの
問題記述についての情報を維持する以下に説明するデー
タベースの記憶に使用することも可能である。
【0012】コンピュータシステム200は、情報をコ
ンピュータのユーザに表示するために、バス201に接
続されたブラウン管(CRT)や液晶表示装置(LC
D)のような表示装置221を具備することもできる。
さらに、このような表示装置221は、表示装置221
上に表示される単一または複数のフレームまたは画像の
ような情報を記憶するフレームバッファ210を介して
バス201に接続することもできる。バス201には、
情報及びコマンド・セレクションをプロセッサ202に
伝達するための文字・数字キー及びその他のキーを含む
文字・数字入力装置222を接続することも可能であ
る。他のユーザ入力装置として、バス201には、方向
情報及びコマンド・セレクションをプロセッサ202に
伝達するとともに、表示装置221上のカーソルの動き
を制御するためのマウス、トラックボール、スタイラ
ス、あるいはカーソル方向キーのようなカーソル・コン
トロール223が接続されている。
【0013】ここで、コンピュータシステム200のコ
ンポーネント及び関連ハードウェアは、その一部または
全部を様々な態様で使用することができるが、各特定の
態様により、種々の目的に応じて、システムのどのよう
な構成でも使用することが可能であるということは理解
できよう。
【0014】一実施の形態においては、システム200
は、米国カリフォルニア州マウンテンビューのSun
Microsystems(登録商標)社の製造になる
SPARCstationブランドのワークステーショ
ンのようなSun Microsystems(登録商
標)のブランド・ファミリーのワークステーションの1
つである。プロセッサ202としては、上記Sun M
icrosystems(登録商標)社の製造になるS
PARCブランドのマイクロプロセッサの一種を用いる
ことができる。
【0015】以下の様々な実施の形態の説明において
は、高水準プログラミング言語(例えば、CまたはC+
+言語)で生成され、例えば、上記の米国カリフォルニ
ア州マウンテンビューのサン・マイクロシステムズ社よ
り入手可能なSPARCompilerによって実行時
にシステム200でコンパイル、リンクされた後、目的
コードとして実行される一連のルーチンに具体的に言及
する。詳しく言うと、本発明は、米国カリフォルニア州
マウンテンビューのSunSoft社から入手可能なS
olaris(登録商標)のスレッド・パッケージのよ
うな一部のソフトウェアライブラリと共に使用すること
ができる(Sun、Sun Microsystems
及びSolarisは、カリフォルニア州マウンテンビ
ューの Sun Microsystems社の登録商
標である。SPARC及びSPARCstation
は、スパーク・インターナショナル(SPARC In
ternational,Inc.)社の登録商標であ
り、サン・マイクロシステムズ(Sun Micros
ystems)社に専用実施権が許諾されている。しか
しながら、以下に説明する方法及び装置は、離散型の論
理デバイス、大規模集積回路(LSI)、特定用途向け
集積回路(ASIC)、またはその他の専用ハードウェ
アのような特殊目的のハードウェア装置に実装すること
も可能であるということは理解できよう。本願の説明
は、本願と同様の機能を有する装置にも等しく適用可能
である。
【0016】次に、本発明の実施の形態について図3以
降の図面を参照しつつ説明する。本発明の一実施の形態
においては、プロセス間通信は2つのプロセス間の共用
バッファスペースによって行われる。これらのプロセス
は、1つの例においては、クライアント・プロセスとカ
ーネルであり、他の場合においては、カーネルとサーバ
・プロセスである。このようにして、クライアントとサ
ーバ・プロセスの間の呼出しの時の引数の渡し操作のよ
うな通信を、以下に説明するメカニズムを用いて行うこ
とができる。クライアント・プロセス、カーネル及びサ
ーバを有するシステムにおいては、クライアントとサー
バの間の通信を行うために2つのバッファ領域が使用さ
れる。これについては、図3及び4により図式的に説明
する。図3に示すように、クライアント・プロセス31
0は、クライアント・プロセス310とカーネル・プロ
セス(ルーチン)300の間の通信に使用する複数のバ
ッファ(各々約5キロバイト)を割当てる。同様に、カ
ーネル・プロセス300とサーバ・プロセス320は、
同様のサイズの複数のバッファ321を介して通信す
る。クライアント/カーネル間及びカーネル/サーバ間
の通信には、「必要に応じて」、さらにバッファが割当
てられる。このように、第1のプロセスでバッファを割
当て、そのバッファの割当て状態を呼出しの間(通常呼
出しからのリターンまで)維持する従来技術と異り、本
発明の実施の形態においては、受け取り側のプロセスに
呼出し側のプロセスから情報を受け取り次第、バッファ
を割当て解除させる。この動作を図4に図式化して示
す。
【0017】例えば、図4に示すように、第1のプロセ
ス(例えば、図3の310)は、外部プロセスの呼出し
と同時に引数を整列させ、バッファを割当てた後、その
外部プロセスの呼出しを実行する。これは、図4のステ
ップ401に示されている。場合によっては、外部プロ
セスは、「リモート」と呼ばれる。すなわち、この場
合、外部プロセスは、第1のプロセス(クライアント)
のアドレス空間へのアクセスを持たず、逆に第1のプロ
セスも外部プロセスのアドレス空間へのアクセスがな
い。同様に、分散型環境においては、このリモート・プ
ロセスは、ローカル・プロセッサ、またはコンピュータ
システムのメモリ、あるいはリモートのコンピュータシ
ステムのリモート・プロセッサに常駐するものであって
もよい。図3に示すカーネル・プロセス300(別名
「核」)による呼出しの検出と同時に、クライアントに
より渡される引数を受け取るためのテンポラリ・バッフ
ァ(例えば図3の301)が割当てられる。クライアン
ト・バッファからカーネル内のテンポラリ・バッファに
引数がコピーされると同時に、クライアント・バッファ
は割当て解除される。このように、本実施の形態におい
ては呼出し期間の間ずっとクライアント・バッファの割
当て状態を維持するのではなく、クライアント・バッフ
ァは、カーネルが適切な引数を受け取り、コピーし終え
るまでしか使用されない。
【0018】カーネルに適切な引数がコピーされたなら
ば、カーネルは引数を渡す第2のプロセスのためのサー
バ・スレッドを得、カーネルとサーバの間の通信用に適
切なバッファ(例えば図3の321)が割当てられる。
引数がテンポラリ・バッファからサーバ・バッファへの
コピーされた後、制御はサーバ・プロセス320に渡さ
れる。このステップは、図4の402に示す。サーバ・
プロセス320による呼出しの検出と同時に、サーバ
は、サーバ・バッファ321から引数を受け取って整列
解除する。この時、サーバは、そのサーバ/カーネル・
バッファ321を割当て解除し、図4のステップ403
に示すように実行することができる。
【0019】サーバ・プロセスの実行終了と同時に、サ
ーバ・バッファは割当てられ、クライアント・プロシー
ジャへリターンするための引数を整列させることができ
る。次に、リターン引数は、サーバ/カーネル・バッフ
ァ321に整列させられ、サーバ・プロセス320から
のリターンが行われる。カーネル300によるリターン
の検出と同時に、カーネル内でテンポラリ・バッファが
再度割当てられ、そこにリターン引数がコピーされ、そ
の後、サーバ・バッファ321は割当て解除される。す
ると、カーネルは、サーバ・スレッドを解放し、カーネ
ル300とクライアント310の間の通信のためにクラ
イアント・バッファを割当てることができる。この点
で、カーネルは、ステップ404で引数を逆にクライア
ント/カーネル・バッファ311にコピーし、制御のク
ライアント310へのリターンが行われる。ステップ4
05におけるカーネルからクライアントへの制御のリタ
ーンが検出されると、クライアントは、バッファ中にあ
る引数を整列解除し、バッファが割当は解除される。次
に、クライアントは、サーバ・プロセス320からリタ
ーン引数がリターンされた後、実行を継続することがで
きる。バッファ321は、再び次のスレッドを実行可能
な状態になる。
【0020】このように、本発明においては、クライア
ントとサーバの間の通信を行うためのバッファが、「必
要に応じて」動的に割当てられる。バッファは、2つの
プロセス間の通信にとって必要でなくなると、「割当て
済みバッファ」フラグのクリアによって割当て解除され
る。これは、第2のプロセス(例えばサーバ)からのリ
ターンを待ってバッファを割当て解除する従来技術と対
照的な特徴である。現代のコンピュータシステムに共通
に用いられているようなマルチスレッド環境において
は、各呼出しスレッド毎の別個のバッファの割当てのた
め、及び呼出しの間これらのバッファを割当て状態に維
持するために多量のメモリ資源が費消される。通常、こ
のような従来の技術的情況においては、サーバ・プロセ
スへの呼出し期間の間、これらのバッファは使用されな
い状態に置かれる。このように、本発明は、第2のプロ
セス(例えば、サーバ・プロセス320)の実行の間に
必要とされない多数のスレッドにバッファを割当てるこ
とによる大量のメモリ使用を回避することによって、プ
ロセス間通信のためのより効率的な手段を提供するもの
である。従って、本発明の実施の形態においては、その
ような従来技術におけるプロセス間通信よりはるかに効
率的にメモリが使用される。
【0021】本発明の実施の形態では、このプロセス間
通信を容易にするための図5に示すようなデータ構造を
使用する。図5において、符号500は制御域を示す。
これは、例えば、クライアント/カーネル制御域(ある
いはカーネル/サーバまたは他のその他の通信領域)で
あってもよい。この領域は、2つのプロセスの間に必要
な通信を行うために用いられる。制御域500は、どち
らか通信を出す側のプロセスよってアクセスされるポイ
ンタを介して、複数の事前割当てされたバッファ513
〜519を参照する。これらは、プロセス間通信時にク
ライアント、カーネルまたはサーバ・プロセスによって
実際にデータが格納されるバッファ領域である。制御域
500は、現在割当てられているバッファ数を表す整数
値を入れる第1のフィールド501を有する。図5に示
す例においては、フィールド501は整数値4が書き込
まれており、現在4つのバッファ領域(513、51
5、517及び519)が割当てられていることを示し
ている。本発明の実施の形態においては、フィールド5
01は、最大値として32を書き込む(最大32のバッ
ファを参照する)ことができるが、これは単に設計上の
選択に関する問題であり、使用するバッファの数は32
より多くても少なくてもよい。
【0022】また、制御域500は、所与のバッファ領
域が現在割当てられているかどうかを示す割当てフラグ
を有する。図に示すように、フィールド502、50
4、506、508は、次のフィールド(ポインタまた
は参照)が現在あるスレッドに割当てられているバッフ
ァまたはメモリエリアを指示しているかどうかを示す
「alloc/dealloc」フラグを有する。フィ
ールド503、505、507、509等は、バッファ
自身へのポインタまたは参照であり、各々前のフィール
ドのalloc/deallocフラグと対応する。例
えば、フィールド502中のフラグの値は、フィールド
503中のポインタによって参照されたバッファ513
が現在割当てられているか、割当て解除されているかを
指示する。バッファ513〜519は、各々小さいメモ
リエリアからなり、例えば、本発明の実施の形態におい
ては、5キロバイトである。これらのバッファ領域は、
フィールド501を調べて制御域によって参照された中
で利用可能なバッファがあるかどうかを検知し、かつ各
alloc/deallocフラグ(例えば、502、
504等)を調べて、その調べている特定のバッファが
使用可能であるかどうかを決定することにより、クライ
アント、カーネルまたはサーバ・プロセスによって「必
要に応じて」割当てられる。
【0023】クライアント・プロセス(例えば図3の3
10)の初期化と同時に、第1のプロセス(例えばクラ
イアント)から第2のプロセス(例えばカーネル30
0)への何らかの通信時における使用のために制御域5
00が割当てられる。現在使用中のバッファ数が生成中
の全スレッドにとって不十分なときは、各々のバッファ
に使用される実メモリスペースも、「必要に応じて」オ
ペレーティング・システムから割当てられる。図8に示
すようなもう一つの実施の形態においては、nの全てバ
ッファ(n=32)に対してメモリを一度に割当てるこ
とが可能である(例えばクライアント・プロセスに入る
と同時に、またはスレッドの最初の生成と同時に)。
【0024】第2のプロシージャの呼出しが検出される
と、以下に図6により説明するようにしてバッファを割
当てることができる。この処理は、クライアント、カー
ネルまたはサーバが通信しているプロセスへ、あるいは
そのプロセスから引数を渡すためにバッファを割当てる
とき行うことができる。本発明の一実施の形態において
は、バッファは、第2のプロセスの呼出しの間に常に使
用可能である。本発明のもう一つの実施の形態において
は、クライアントは、共用バッファのいずれかを使用す
る前に、最小量のメモリ(例えば128バイト)以上の
メモリ量が必要かどうかを決定することも可能である。
【0025】上記のいずれの場合にも、プロセス600
は、ステップ602で開始され、まずカウンタを図5の
要素501のようなアレイA[0]中の第1の要素に等
しくセットする。インデックスは1に初期化される。次
に、ステップ604で、カウンタが0から許容最大バッ
ファ数である32までの指定範囲外であるかどうかが決
定される。この範囲外であれば、ステップ606で、割
当てプロセスからエラーがリターンされる。そうでなけ
れば、ステップ608で、カウンタが正確に0に等しい
かどうかが判断される。カウンタの内容0は、生成しよ
うとするスレッドに現在利用可能な使用されていないバ
ッファがないということを示し、プロセスはステップ6
10にリターンして、今回割当てに利用可能な空のバッ
ファはないということを指示する。この場合、プロセス
は、異常終了するか、バッファが利用可能になるまで待
つか、あるいはバッファを含む第2のメモリエリアを割
当てることができる。
【0026】さらにプロセス600の説明を続けると、
ステップ604でカウンタの内容が上記範囲外でないと
判断されるか、ステップ608で正確に0に等しくない
ことが検出された場合は、ステップ612で仮の値が0
に等しくセットされる。上に説明した実施の形態で使用
する規定においては、フィールド502、504等の1
つの中の整数ゼロ(0)は、制御域500の対応ポイン
タによって指示されるバッファが割当て済みであること
を示す。そのフィールドの整数1は、バッファが割当て
られていないということ指示する。ステップ612で
は、一時的変数TEMPが0に等しくセットされる。次
に、ステップ613で、A[index]中の割当てフ
ラグがTEMPとアトミック・スワップされ、割当てフ
ラグがクリアされる。本発明の実施の形態においては、
SPARCブランドのマイクロプロセッサ上で利用可能
なような「アトミック・スワップ」動作を使用する。こ
の動作は、原子的に、すなわち途中の割込み、据置きト
ラップ、またはシステム内の他のスレッドが割当てフラ
グA[index]にアクセスするのを許容することな
く行われる。このように、この領域にアクセスする他の
プロセスは、値がスワップされ終わるまで、ロックアウ
トされる。アトミック・スワップについては、例えば、
米国カリフォルニア州メンロパーク(Menlo Pa
rk)のSPARC International社か
ら入手可能なSPARCアーキテクチャ・マニュアル
(Architecture Manual)(バージ
ョン8、1992年刊)の102〜103ぺーじに記載
されている。
【0027】次に、ステップ614では、alloc/
dealloc(あるいはレジスタ)から取り出された
値(ステップ614ではTEMP変数)が1に等しいか
どうかが判断される。この値が1に等しい場合は、バッ
ファが割当てに利用可能であり、ステップ618で、バ
ッファのポインタが要求プロセスにリターンされる。1
に等しくない場合は、ステップ616で、カウンタが1
だけディクリメントされ、次のalloc/deall
ocを調べるためにインデックスが2だけインクリメン
トされる。ステップ608〜616は、制御域によって
参照された各バッファについてalloc/deall
ocフラグをチェックすることによって、利用可能なバ
ッファが検出されるまで続けられる。このように、2つ
のプロセス(例えば、クライアント/カーネルまたはカ
ーネル/サーバ)間の通信のために指定された通信領域
からのバッファの割当てを容易に行うことができる。こ
のプロセスは、図4によって上に説明した割当てステッ
プにとって特に役に立つ。
【0028】次に、バッファの割当て解除について図7
のプロセス700を参照して説明する。割当て解除プロ
セスは、ステップ702〜708では前述のプロセス6
00と同様に進行し、まず最初にバッファのポインタb
を受け取って、割当て済みバッファの数A[0]を取り
出し、ステップ702で、インデックスを1に初期化す
る。次に、ステップ704で、カウンタの内容が範囲内
にあるかどうかがチェックされ、範囲内になければ、ス
テップ706で、エラーを伴うプロセスからのリターン
が発生する。ステップ708では、制御域によって参照
された中で割当て済みでないバッファがあるかどうかが
判断される。割当て済みでないバッファがなければ、す
なわちカウンタの内容が0に等しければ、ステップ71
0でエラーがリターンされる。ステップ712では、制
御構造における参照により指示されたバッファが、割当
て解除しようとするバッファのポインタbに等しいかど
うかが判断される。これが等しければ、対応する割当て
フラグA[index]が1に等しくセットされ、バッ
ファが現在は割当て解除されていて、他のプロセスのた
めに試用可能であるということを指示する。次に、プロ
セスは、ステップ718で、動作が首尾よく終了したこ
とを示すリターン引数(例えばOK)と共にリターンす
る。上記の対応するポインタが、ステップ712での判
断に基づき、割当て解除しようとするバッファを指示し
ない場合は、ステップ714において、インデックスが
2だけインクリメントされ、カウンタが1だけディクリ
メントされる。ステップ708〜714は、割当て解除
しようとするバッファがステップ712で決定される
か、ステップ708でチェックしようとするバッファが
もはや残ったいなく(カウンタ=0)なるまで繰り返さ
れる。
【0029】次に、最後のプロセスとして、クライアン
トとカーネルの間、あるいはカーネルとサーバ・プロセ
スの間の通信のための共用メモリエリアの初期化のよう
な、本発明の一実施の形態における2つのプロセス間の
共用メモリエリア(図8のプロセス・フローチャート8
00ではメモリエリアAと称する)の初期化について説
明する。この場合も、前述の場合同様に、nのバッファ
全部の割当てをクライアント・プロセスに入ると同時に
行うこともできれば、各バッファに必要に応じて個別に
メモリを割当てることも可能である。図8に示すよう
に、ステップ802においては、制御域500の第1の
要素(例えば、501)における利用可能なバッファの
数A[0]がnに等しくセットされる。実施の形態にお
いてはn=32であるが、設計上の選択事項に従って任
意の数のバッファを使用することが可能である。次に、
対応するカウンタもnに等しくセットされ、インデック
ス変数が1に等しくセットされる。次に、ステップ80
4で、nの全てのバッファについてメモリがオペレーテ
ィング・システムから割当てられたかどうかどうかが判
断される。その結果がノーの場合、プロセス800はス
テップ808に進む。ステップ808では、対応するバ
ッファのための割当てフラグが1に等しくセットされ、
そのバッファが使用可能であることを指示する。さら
に、バッファAの対応参照[index]+1が、一部
のオペレーティング・システムでallocate_b
uffer()と命名されているようなメモリ割当て基
本要素に等しくセットされる。この例においては、関数
allocate_bufferは、例えば5キロバイ
ト長のメモリ領域を割当てることができるが、バッファ
のサイズは、設計上の選択事項により任意の大きさとす
ることが可能である。
【0030】ステップ808においてバッファ使用可能
であるという指示が出、そのバッファに適切なメモリが
割当てられたならば、インデックスが2だけインクリメ
ントされ、カウンタは1だけディクリメントされる。プ
ロセス・ステップ804〜810は、クライアントとカ
ーネルまたはカーネルとサーバのような2つのプロセス
間の共用メモリ領域で総数nのバッファが適切なスペー
スを割当てられたことが検出されるまで繰り返される
(割当てられるバッファの数がnに等しい場合)。ステ
ップ804でカウンタの内容が0に等しいことが検出さ
れた場合は、プロセスは終了し、ステップ806にリタ
ーンする。
【0031】このように、本発明による上記の技術を用
いることによって、2つのプロセスの間の通信のための
制御域とバッファを生成し、プロセス間通信に用いるこ
とができる。本発明は、所与の任意の時点でいくつかの
プロセス・スレッドがアクティブになり得るような情況
において特に有用であり、メモリの使用を従来技術にお
けるよりも数段効率的にすることができる。以上、本発
明に関する特定の実施の形態を特に図面を参照しつつ説
明したが、当業者には、本発明の要旨及び範囲から逸脱
することなく本発明の変更態様や修正態様を達成するこ
とが可能なことは明白であろう。従って、本発明は特許
請求の範囲の記載によってのみ限定されるものである。
【図面の簡単な説明】
【図1】 従来技術によるプロセス間通信の方法を示す
ブロック図である。
【図2】 本発明の実施の形態を実装することができる
コンピュータシステムを示すブロック図である。
【図3】 コンピュータシステムにおけるプロセス及び
それらの各プロセスに割当てられるバッファを示すブロ
ック図である。
【図4】 本発明の実施の形態におけるクライアント・
プロセス、カーネル及びサーバ・プロセス中の一連のス
テップを示す説明図である。
【図5】 プロセス間通信に使用されるバッファの詳細
な構造を示す説明図である。
【図6】 図6は、2つのプロセス間で通信するために
用いられる指定されたエリアの中でバッファを割当てる
ための方法を示すフローチャートである。
【図7】 2つのプロセス間で通信するための指定され
たエリアの中でバッファを割当て解除するための方法を
示すフローチャートである。
【図8】 メモリをプロセス間通信に割当てるための方
法を示すフローチャートである。
【符号の説明】
200 コンピュータシステム、201 バス、204
主メモリ、206 ROM、207 大容量記憶装
置、210 フレームバッファ、221 表示装置、2
22 キーボード、223 カーソル・コントロール、
224 ハードコピー装置。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 グラハム・ハミルトン アメリカ合衆国 94303 カリフォルニア 州・パロ アルト・デビッド コート・ 3143

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 a.クライアント・プロシージャが、そ
    のクライアント・プロシージャとカーネル・プロシージ
    ャによって共用される第1のメモリスペース中に第1の
    バッファを割当てるステップと、 b.上記クライアント・プロシージャが、リモート・プ
    ロシージャの呼出しのための引数を上記第1のバッファ
    に整列させるステップと、 c.上記クライアント・プロシージャが、上記カーネル
    ・プロシージャを介して上記リモート・プロシージャを
    呼出し、上記第1メモリスペースにおける上記第1のバ
    ッファに対する第1の参照を上記カーネル・プロシージ
    ャに渡すステップと、 d.上記カーネル・プロシージャが、上記クライアント
    ・プロシージャによる上記リモート・プロシージャの上
    記呼出しを検出し、そのカーネル・プロシージャと上記
    サーバ・プロシージャによって共用される第2のメモリ
    スペース中に第2のバッファを割当てるステップと、 e.上記カーネル・プロシージャが、上記第1のバッフ
    ァを参照し、上記第1のバッファ中の上記引数を上記第
    2のバッファにコピーするステップと、 f.上記カーネル・プロシージャが、上記第1のバッフ
    ァを割当て解除するステップと、 g.上記カーネル・プロシージャが、上記リモート・プ
    ロシージャを呼出し、上記第2のバッファに対する第2
    の参照をそのリモート・プロシージャに渡すステップ
    と、 h.上記リモート・プロシージャが、そのリモート・プ
    ロシージャの上記呼出しを検出し、上記第2のバッファ
    中の上記引数を整列解除するステップと、 i.上記リモート・プロシージャが上記第2のバッファ
    を割当て解除し、実行するステップと、を具備したコン
    ピュータシステムにおけるコンピュータ実装型のプロセ
    ス間通信方法。
  2. 【請求項2】 a.上記リモート・プロシージャの実行
    終了と同時に、そのリモート・プロシージャが上記第2
    のメモリスペース中に第3のバッファを割当てるステッ
    プと、 b.上記リモート・プロシージャが、そのリモート・プ
    ロシージャからリターンするために、上記第3のバッフ
    ァにリターン引数を整列させるステップと、 c.上記リモート・プロシージャが、上記カーネル・プ
    ロシージャにリターンし、そのカーネル・プロシージャ
    に上記第3のバッファに対する第3の参照を渡すステッ
    プと、 d.上記カーネル・プロシージャが、上記リモート・プ
    ロシージャの上記リターンを検出し、上記第1のメモリ
    スペースの中に第4のバッファを割当てるステップと、 e.上記カーネル・プロシージャが、上記第3のバッフ
    ァ中の上記リターン引数を上記第4のバッファにコピー
    するステップと、 f.上記カーネル・プロシージャが、上記第3のバッフ
    ァを割当て解除するステップと、 g.上記カーネル・プロシージャが、上記クライアント
    ・プロシージャにリターンし、上記第4のバッファに対
    する参照を上記クライアント・プロシージャに渡すステ
    ップと、 h.上記クライアント・プロシージャが、上記クライア
    ント・プロシージャへのリターンを検出し、上記第4の
    バッファ中の上記引数を整列解除するステップと、 i.上記クライアント・プロシージャが、上記第4のバ
    ッファを割当て解除すし、実行を続けるステップと、を
    さらに具備した請求項1記載の方法。
  3. 【請求項3】 a.第1のプロシージャが、その第1の
    プロシージャと第2のプロシージャによって共用される
    第1のメモリスペース中に第1のバッファを割当てるス
    テップと、 b.上記第1のプロシージャが、上記第2のプロシージ
    ャとの通信ための引数を上記第1のバッファに整列させ
    るステップと、 c.上記第1のプロシージャが、上記第2のプロシージ
    ャに関するメッセージを指示し、上記第1のメモリスペ
    ース中の上記第1のバッファに対する第1の参照をその
    第2のプロシージャに渡すステップと、 d.上記第2のプロシージャが、上記第1のプロシージ
    ャによる上記メッセージの上記指示を検出するステップ
    と、 e.上記第2のプロシージャが、上記第1のバッファを
    参照し、その第1のバッファ中の上記引数をテンポラリ
    ・バッファにコピーするステップと、 f.上記第2のプロシージャが、上記第1のバッファを
    割当て解除するステップと、を具備したコンピュータシ
    ステムにおけるコンピュータ実装型のプロセス間通信方
    法。
  4. 【請求項4】 a.上記第2のプロシージャが、上記テ
    ンポラリ・バッファ中の上記引数を処理するステップ
    と、 b.上記引数の処理の終了と同時に、上記第2のプロシ
    ージャが、上記第1のメモリスペース中に第2のバッフ
    ァを割当てるステップと、 c.上記第2のプロシージャが、その第2のプロシージ
    ャからリターンするために、リターン引数を上記第2の
    バッファに整列させるステップと、 d.上記第2のプロシージャが、上記第1のプロシージ
    ャにリターンし、その第1のプロシージャに上記第2の
    バッファに対する第2の参照を渡すステップと、 e.上記第1のプロシージャが、その第1のプロシージ
    ャへのリターンを検出し、上記第2のバッファ中の上記
    引数を整列解除するステップと、 f.上記第1のプロシージャが、上記第2のバッファを
    割当て解除し、実行を続けるステップと、をさらに具備
    した請求項3記載の方法。
  5. 【請求項5】 a.第1のプロシージャと第2のプロシ
    ージャとによって共用される第1のメモリスペース中に
    第1のバッファを割当てる第1の回路と、 b.上記第2のプロシージャと通信するために上記第1
    のプロシージャによって参照された引数を上記第1のバ
    ッファに整列させる第2の回路と、 c.上記第2のプロシージャに関するメッセージを指示
    し、上記第1のメモリスペース中の上記第1のバッファ
    に対する第1の参照を上記第1のプロシージャからその
    第2のプロシージャに渡す第3の回路と、 d.上記第1のプロシージャによる上記メッセージの上
    記指示を検出する第4の回路と、 e.上記第1のバッファを参照し、上記第1のバッファ
    中の上記引数を上記第2のプロシージャによって使用さ
    れるテンポラリ・バッファにコピーする第5の回路と、 f.上記第1のバッファを割当て解除する第6の回路
    と、を具備したプロセス間通信装置。
  6. 【請求項6】 a.上記テンポラリ・バッファ中の上記
    引数を処理する第7の回路と、 b.上記引数の処理終了と同時に動作して、上記第1の
    メモリスペース中に第2のバッファを割当てる第8の回
    路と、 c.上記第2のプロシージャからリターンするために上
    記第2のバッファにリターン引数を整列させる第9の回
    路と、 d.上記第1のプロシージャにリターンし、上記第2の
    バッファに対する第2の参照をその第1のプロシージャ
    に渡す第10の回路と、 e.上記第1のプロシージャへのリターンを検出し、上
    記第2のバッファ中の上記引数を整列解除する第11の
    回路と、 f.上記第2のバッファを割当て解除し、実行を続ける
    第12の回路と、をさらに具備した請求項5記載の装
    置。
  7. 【請求項7】 a.第1のプロシージャが、その第1の
    プロシージャと第2のプロシージャによって共用される
    第1のメモリスペース中に第1のバッファを割当てるス
    テップと、 b.上記第1のプロシージャが、上記第2のプロシージ
    ャとの通信引数を上記第1のバッファに整列させるステ
    ップと、 c.上記第1のプロシージャが、上記第2のプロシージ
    ャに関するメッセージを指示し、上記第1のメモリスペ
    ース中の上記第1のバッファに対する第1の参照をその
    第2のプロシージャに渡すステップと、 d.上記第2のプロシージャが、上記第1のプロシージ
    ャによる上記メッセージの上記指示を検出するステップ
    と、 e.上記第2のプロシージャが、上記第1のバッファを
    参照し、その第1のバッファ中の上記引数をテンポラリ
    ・バッファにコピーするステップと、 f.上記第2のプロシージャが、上記第1のバッファを
    割当て解除するステップと、を具備したプロセス間通信
    方法を実装したコンピュータシステム。
  8. 【請求項8】 a.上記第2のプロシージャが、上記テ
    ンポラリ・バッファ中の上記引数を処理するステップ
    と、 b.上記引数の処理の終了と同時に、上記第2のプロシ
    ージャが、上記第1のメモリスペース中に第2のバッフ
    ァを割当てるステップと、 c.上記第2のプロシージャが、その第2のプロシージ
    ャからリターンするために、リターン引数を上記第2の
    バッファに整列させるステップと、 d.上記第2のプロシージャが、上記第1のプロシージ
    ャにリターンし、その第1のプロシージャに上記第2の
    バッファに対する第2の参照を渡すステップと、 e.上記第1のプロシージャが、その第1のプロシージ
    ャへのリターンを検出し、上記第2のバッファ中の上記
    引数を整列解除するステップと、 f.上記第1のプロシージャが、上記第2のバッファを
    割当て解除し、実行を続けるステップと、をさらに具備
    した請求項7記載の方法を実装したコンピュータシステ
    ム。
  9. 【請求項9】 a.第1のプロシージャと第2のプロシ
    ージャによって共用された第1のメモリスペースの中に
    第1のバッファを割当てる第1の割当て回路と、 b.上記第1のプロシージャが、上記第2のプロシージ
    ャと通信する引数を上記第1のバッファに整列させるこ
    とを可能にする第1の整列回路と、 c.上記第1のプロシージャからのメッセージを上記第
    2のプロシージャに指示し、上記第1のメモリスペース
    中の上記第1のバッファに対する第1の参照を上記第2
    のプロシージャへ渡す第1のメッセージ指示回路と、 d.上記第2のプロシージャが上記第1のプロシージャ
    による上記メッセージの上記指示を検出することを可能
    にする第1のメッセージ検出回路と、 e.上記第2のプロシージャが上記第1のバッファを参
    照し、上記第1のバッファ中の上記引数をテンポラリ・
    バッファにコピーすることを可能にする第1の参照回路
    と、 f.上記第1のバッファ中の上記引数の上記テンポラリ
    ・バッファへのコピーの終了と同時に動作して、上記第
    2のプロシージャが上記第1のバッファを割当て解除す
    ることを可能にする第1の割当て解除回路と、を具備し
    たコンピュータシステム。
  10. 【請求項10】 a.上記第2のプロシージャが上記テ
    ンポラリ・バッファ中の上記引数を処理することを可能
    にする処理回路と、 b.上記引数の処理終了と同時に動作して、上記第2の
    プロシージャが上記第1のメモリスペースの中に第2の
    バッファを割当てることを可能にする第2の割当て回路
    と、 c.上記第2のプロシージャが、その第2のプロシージ
    ャからリターンするために、上記第2のバッファ中にリ
    ターン引数を整列させることを可能にする第2の整列回
    路と、 d.上記第2のプロシージャが上記第1のプロシージャ
    にリターンし、上記第2のバッファに対する第2の参照
    をその第1のプロシージャに渡すことを可能にするリタ
    ーン回路と、 e.上記第1のプロシージャがその第1のプロシージャ
    への上記リターンを検出し、上記第2のバッファ中の上
    記引数を整列解除することを可能にする第2の検出回路
    と、 f.上記第1のプロシージャが上記第2のバッファを割
    当て解除し、実行を続けることを可能にする第2の割当
    て解除回路と、をさらに具備した請求項9記載のコンピ
    ュータシステム。
JP7207405A 1994-07-22 1995-07-24 スペース効率に優れたプロセス間通信方法及び装置 Pending JPH08227403A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US27909394A 1994-07-22 1994-07-22
US279093 1994-07-22

Publications (1)

Publication Number Publication Date
JPH08227403A true JPH08227403A (ja) 1996-09-03

Family

ID=23067603

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7207405A Pending JPH08227403A (ja) 1994-07-22 1995-07-24 スペース効率に優れたプロセス間通信方法及び装置

Country Status (4)

Country Link
US (3) US5881286A (ja)
EP (1) EP0701205B1 (ja)
JP (1) JPH08227403A (ja)
DE (1) DE69530731D1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189607A (ja) * 2000-12-22 2002-07-05 Nec Corp メモリ管理方法及び情報処理装置

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249822B1 (en) * 1995-04-24 2001-06-19 Microsoft Corporation Remote procedure call method
US6226689B1 (en) * 1997-01-29 2001-05-01 Microsoft Corporation Method and mechanism for interprocess communication using client and server listening threads
US6209041B1 (en) * 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
CA2245963C (en) * 1998-08-26 2009-10-27 Qnx Software Systems Ltd. Distributed kernel operating system
AU1843300A (en) 1998-12-11 2000-06-26 Microsoft Corporation Accelerating a distributed component architecture over a network using a modified rpc communication
US6549934B1 (en) * 1999-03-01 2003-04-15 Microsoft Corporation Method and system for remote access to computer devices via client managed server buffers exclusively allocated to the client
US7058955B2 (en) * 2000-12-06 2006-06-06 Microsoft Corporation Method and system for passing messages between threads
US6904597B2 (en) * 2001-03-30 2005-06-07 Intel Corporation Inter-thread communications between different components using double buffer
US7093097B2 (en) * 2001-11-27 2006-08-15 International Business Machines Corporation Dynamic self-tuning memory management method and system
US7266622B2 (en) * 2002-03-25 2007-09-04 International Business Machines Corporation Method, computer program product, and system for automatic application buffering
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
US7640549B2 (en) * 2002-07-22 2009-12-29 Agilent Technologies, Inc. System and method for efficiently exchanging data among processes
US7082523B2 (en) * 2002-12-16 2006-07-25 Intel Corporation Bridging memory access across pre-boot and runtime phases
GB2412762B (en) * 2004-04-02 2009-01-28 Symbian Software Ltd Inter process communication in a computing device
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
EP1746503A1 (en) 2005-07-12 2007-01-24 Mitel Networks Corporation Dynamic mailbox size configuraration by self-modification based on historical behavior
US8091089B2 (en) 2005-09-22 2012-01-03 International Business Machines Corporation Apparatus, system, and method for dynamically allocating and adjusting meta-data repository resources for handling concurrent I/O requests to a meta-data repository
US8032900B2 (en) * 2006-08-02 2011-10-04 Microsoft Corporation Conducting client-server inter-process communication
US8332866B2 (en) * 2006-11-29 2012-12-11 Qualcomm Incorporated Methods, systems, and apparatus for object invocation across protection domain boundaries
US8209704B1 (en) * 2008-03-28 2012-06-26 Emc Corporation Techniques for user space and kernel space communication
US8228538B2 (en) * 2008-06-23 2012-07-24 Ricoh Company, Ltd. Performance of a locked print architecture
ATE543136T1 (de) * 2008-08-12 2012-02-15 Software Ag Verfahren und interprozess-kommunikationstreiber zum verwalten von anfragen eines datenbank- clients an einen datenbank-server
US8645967B2 (en) * 2011-08-30 2014-02-04 Microsoft Corporation Efficient secure data marshaling through at least one untrusted intermediate process
US9092281B2 (en) 2012-10-02 2015-07-28 Qualcomm Incorporated Fast remote procedure call
US20200110584A1 (en) * 2018-10-04 2020-04-09 Electronic Arts Inc. Automated code generation for functional testing of software applications
CN109918215B (zh) * 2019-03-05 2023-06-30 上海联影医疗科技股份有限公司 一种进程通信方法、系统、终端和存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430876A (en) * 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
US5218699A (en) * 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
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
WO1994011810A1 (en) * 1992-11-13 1994-05-26 Microsoft Corporation A method and system for marshalling interface pointers for remote procedure calls
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5434995A (en) * 1993-12-10 1995-07-18 Cray Research, Inc. Barrier synchronization for distributed memory massively parallel processing systems
US5491800A (en) * 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189607A (ja) * 2000-12-22 2002-07-05 Nec Corp メモリ管理方法及び情報処理装置

Also Published As

Publication number Publication date
US5881286A (en) 1999-03-09
US6131126A (en) 2000-10-10
EP0701205B1 (en) 2003-05-14
EP0701205A3 (en) 1999-12-22
DE69530731D1 (de) 2003-06-18
US6526494B1 (en) 2003-02-25
EP0701205A2 (en) 1996-03-13

Similar Documents

Publication Publication Date Title
JPH08227403A (ja) スペース効率に優れたプロセス間通信方法及び装置
Anderson et al. Scheduler activations: Effective kernel support for the user-level management of parallelism
Herlihy Wait-free synchronization
Anderson et al. Scheduler activations: Effective kernel support for the user-level management of parallelism
US6954933B2 (en) Method and apparatus for providing and integrating high-performance message queues in a user interface environment
US5701470A (en) System and method for space efficient object locking using a data subarray and pointers
JP3617852B2 (ja) 多重処理パイプラインデータ処理エミュレート方法
US8185895B2 (en) Method, apparatus and program storage device for providing an anchor pointer in an operating system context structure for improving the efficiency of accessing thread specific data
US20090100249A1 (en) Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
JP2004054933A (ja) メモリ割当ての延期方法及び装置
US11620215B2 (en) Multi-threaded pause-less replicating garbage collection
US6223335B1 (en) Platform independent double compare and swap operation
JPH0760380B2 (ja) プログラム呼び出し装置
US5893159A (en) Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US6349322B1 (en) Fast synchronization for programs written in the JAVA programming language
US6604185B1 (en) Distribution of address-translation-purge requests to multiple processors
US20080243887A1 (en) Exclusion control
US20080294864A1 (en) Memory class based heap partitioning
EP0769740B1 (en) Inter-object communication
US6895583B1 (en) Task control block for a computing environment
US6012129A (en) Apparatus and method allocating virtual memory upon demand
US5218678A (en) System and method for atomic access to an input/output device with direct memory access
US7360213B1 (en) Method for promotion and demotion between system calls and fast kernel calls
WO2001061471A2 (en) An implementation for nonblocking memory allocation
EP1221085A2 (en) Method and system for dynamic injection of execution logic into a windowed operating system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051025

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060309

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060411

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060801

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060816

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060908