JP2005135382A - イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法 - Google Patents
イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法 Download PDFInfo
- Publication number
- JP2005135382A JP2005135382A JP2004240001A JP2004240001A JP2005135382A JP 2005135382 A JP2005135382 A JP 2005135382A JP 2004240001 A JP2004240001 A JP 2004240001A JP 2004240001 A JP2004240001 A JP 2004240001A JP 2005135382 A JP2005135382 A JP 2005135382A
- Authority
- JP
- Japan
- Prior art keywords
- peer
- shared memory
- queue
- processes
- header component
- 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
Images
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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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)
- Computer And Data Communications (AREA)
Abstract
【課題】プラットフォームに依存しないプロセス間の高速通信を容易にする。
【解決手段】このシステムは、ユーザのアドレス空間からキューをアンマップする。キュー内容は状態を初期化するためリセットされる。キューに供給された要素はプッシュされる。キュー先入れ/先出し(FIFO)のための要素はポップされる。キューからの要素は、キュー状態に影響を与えることなく返される。キュー内の要素内容はそのとき更新される。キューは、その後、排他的アクセスのためロックされる。このロックは解除され、キューへの変更が可能になる。システムは、また、キュー内の要素カウントと、プロセス間通信キューの論理名とを与える。各プロセス間通信キューによって保持される共有メモリベースのヘッダは、キューのクライアントのすべてが単一ソースからキュー情報へアクセスすることを可能にする。
【選択図】図1
【解決手段】このシステムは、ユーザのアドレス空間からキューをアンマップする。キュー内容は状態を初期化するためリセットされる。キューに供給された要素はプッシュされる。キュー先入れ/先出し(FIFO)のための要素はポップされる。キューからの要素は、キュー状態に影響を与えることなく返される。キュー内の要素内容はそのとき更新される。キューは、その後、排他的アクセスのためロックされる。このロックは解除され、キューへの変更が可能になる。システムは、また、キュー内の要素カウントと、プロセス間通信キューの論理名とを与える。各プロセス間通信キューによって保持される共有メモリベースのヘッダは、キューのクライアントのすべてが単一ソースからキュー情報へアクセスすることを可能にする。
【選択図】図1
Description
本発明は、プラットフォームに依存しない高速通信を容易にするシステムおよび方法に関する。より詳細には、本発明は、あらゆるプラットフォームでできるだけ最高速の通信を容易にするための、共有メモリベースのプロセス間通信(「IPC」)キューテンプレートに関する。
共有メモリは、1つ以上のプロセスがそれらの仮想アドレス空間のすべてに現れるメモリを介して通信することを可能にさせる。仮想メモリのページは、共有プロセスのページテーブルのそれぞれのページテーブルエントリにより参照される。それは、すべてのプロセスの仮想メモリ内で同じアドレスでなくても構わない。共有メモリ領域へのアクセスは、キーおよびアクセス権照合により制御される。一旦メモリが共有されると、プロセスがどのように共有メモリを使用しているかはチェックされない。プロセスは他の機構に頼らざるを得ない。2つのプロセスが同じ共有メモリセグメントをアタッチするとき、それらは、オペレーティングシステムに対し、それらのアドレス空間の一部を同じメモリへマッピングすることにより正常な制限を緩和することを伝える。IPCメッセージキューは一時的なメモリ領域であり、典型的に基礎にあるオペレーティングシステムによって与えられ、クライアントとサーバとの間の通信のため使用される。
セマフォは、リソースが現在他のスレッドまたはプロセスによって使用されているかどうかをチェックするために使用されるフラグである。その最も簡単な形式において、セマフォは、2つ以上のプロセスによってテストされ設定される値を有するメモリ内のロケーションである。テストおよび設定演算は、各プロセスに関する限り妨げられることがなく、すなわち自律的であり、一旦開始されると、それを止めることは不可能である。テストおよび設定演算の結果は、セマフォの現在値と設定値の加算であり、正と負のどちらにもなり得る。テストおよび設定演算の結果に応じて、あるプロセスは、別のプロセスによってセマフォの値が変更されるまでスリープ状態にならなければならない。例えば、あるプロセスがプリンタを使用したい場合、そのプロセスは、最初に、セマフォが設定されているかどうかを調べるためチェックすることにより、プリンタが使用可能であることを確認する必要がある。セマフォが設定されているならば、このプロセスは、現在プリンタを取得しているプロセスが終了するまで待たなければならない。しかし、プリンタが空いているならば、プロセスはセマフォを設定し、プリンタを使用開始し、そのプロセスが終了するまですべての他のプロセスへのアクセスを阻止する。
セマフォは、コードの重要なセクションが2つ以上のスレッドによって同時に実行されることを防止する、典型的な技術である。セマフォはモニタの一般形である。モニタは1つのスレッドだけが同時にオブジェクトをロックすることを可能にさせる。セマフォはN個のプロセスを許可する。ほぼ排他的な使用のためセマフォを取るプロセスは、ロックするごとに減少しアンロックするごとに増加するカウントダウン整数が組み込まれているので、セマフォのダウンオペレーションと呼ばれる。セマフォが完全に占有されているならば、セマフォを使用しようとする新しいスレッドは、あるスレッドがセマフォを加算することによりそのロックを解放するまで待機するであろう。セマフォを正常に機能させるため、フルのチェックと減算はすべて1つの妨げられないアトミック命令で実行されなければならない。Java(登録商標)仮想マシン(「JVM」)のモニタ命令は、セマフォをシミュレートするため必要なハードウェアサポートを提供する。
したがって、共有メモリマネージャにおいて、プロセス間通信キューテンプレートを使用するプロセス間で、高速通信を行うシステムおよび方法が必要である。
本発明は、プラットフォーム非依存の高速プロセス間通信のためのシステムおよび方法を対象とする。
本発明のシステムは、共有メモリベースのプロセス間通信キューを使用する。キュー内のデータは完全に保護され、すなわち、キューは、2つ以上のプロセスがキュー要素の内容を変更しようとするとき、各キュー要素の自動ロックを行う。このオペレーションは、プロセスとスレッドを通じて共有リソースを管理することからキューのクライアントを完全に解放する。システムは、また、トランスミッタとレシーバとの間で簡単に役割を逆転することができる。送信側と受信側の役割の逆転は、付加的なリソースを作成することなく実現される。システムは、さらに、イベントベースの通知スキームを使用する。プロセス間の通信のため、テンプレートは、要素のプッシュ/プル関数を待ち受け、これにより、キューの状態の変化を瞬時的に配信することができる。すなわち、この通知方法は、キューが望ましいプロセスが利用可能になるまでクライアントを待機させることができる。一旦利用可能になると、その望ましいプロセスのリソースは待機中のクライアントのため有効にされる。
システムは、また、システムクラッシュからの自動復旧の能力を含む。キューは、そのキューがサービスを提供しているクライアントに関する情報を常に保有する。いずれかのプロセスがクラッシュするか、または、キューの状態に影響する場合、自動検知能力はプロセスがシステムを動かなくすることを防止する。この検知は、共有セグメントにアタッチされたプロセスの数をチェックすることにより実現される。
システムは、供給された数の要素およびキューヘッダを保持するために必要なサイズの共有セグメントを作成することから始める。システムは、次に、ユーザのアドレス空間からキューをアンマップする。キュー内容は状態を初期化するためリセットされる。供給されたキューの要素はプッシュされる。キュー先入れ/先出し(FIFO)のための要素はポップされる。キューからの要素はキュー状態に影響を与えることなく返される。このキュー内の要素内容は次に更新される。キューはその後に排他的アクセスのためロックされる。このロックは適切に解除され、キューへの変更が可能になる。さらに、システムは、キュー内の要素数と、プロセス間通信キューの論理名を与える。各プロセス間通信キューにより保持される共有メモリベースのヘッダは、キューのすべてのクライアントが単一ソースからキュー情報へアクセスできるようにする。
本発明によれば、ピアベースのプロセス間通信のシステムが提供される。このシステムは複数のピアプロセスを含む。システムの各プロセスは、ピアプロセスのうちの2つのプロセス間で選択的なデータの通信を可能にするバスシステムを組み込む。システムは、また、共有データを選択的に記憶し、いずれのプロセスからもアクセス可能な共有メモリを含む。各プロセスは、共有メモリの内容に変更が加えられるときに少なくとも1つの他のプロセスに通知するため適合した手段を含む。その上、各プロセスは、他のプロセスによるアクセスから共有メモリを選択的にロックするための、ロッキング機構を具備する。
好ましい一実施形態によれば、システムの各プロセスはテンプレートジェネレータをさらに含み、テンプレートジェネレータは、そのプロセスに許容可能なフォーマットを指定するメッセージテンプレートを定義する。このプロセスは、また、メッセージテンプレートを少なくとも1つの他のプロセスへ通信するために適合した手段を含む。
さらに、本発明によれば、複数のピアプロセスを含むシステムで実行される、ピアベースのプロセス間通信の方法が提供される。この方法は、第1のプロセスと第2のプロセスとの間でデータを選択的に通信することにより始まる。次に、共有データは、いずれのプロセスからもアクセス可能な共有メモリに選択的に記憶される。1つ以上のプロセスは、その後に、共有メモリの内容に変更が加えられるときに通知される。共有メモリは、次に、プロセスのうちの1つによるアクセスから選択的にロックされる。
好ましい一実施形態では、この方法は、さらに、プロセスに許容可能なフォーマットを指定するメッセージテンプレートを生成する工程を含む。この方法は、また、メッセージテンプレートを複数のプロセスのうちの少なくとも1つの別のプロセスに通信する工程を含む。
本発明のさらに別の利点、態様、および特徴は、本発明を実施するため最も適したベストモードの一例としてのみ、本発明の好ましい実施形態が示され記載された以下の説明から、当業者に容易に理解されるであろう。本発明はその他の異なる実施形態が可能であり、そのいくつかの細部は、本発明の範囲から逸脱することなく、種々の明白な態様を変更可能であることが理解されるであろう。したがって、図面および解説は、本質的に例示であり、限定ではないとして考えられるであろう。
対象となる発明は、添付図面と併せて明らかにされ、発明の一部分を形成し、発明を限定することを目的としていない、特定の部分、および、部分への配置に関して説明されている。
本発明は、プロセス間の高速通信を容易にするためプロセス間通信(IPC)キューテンプレートに基づく共有メモリマネージャを提供するシステムおよび方法を対象とする。
ユーザ、送信側および受信側を有するシステムにおいて、IPCキューテンプレートに基づく共有メモリマネージャは、プロセス間の高速通信を実現し易くする。キューをテンプレート形式にすることにより、任意のメッセージフォーマットが使用できる。ユーザは、ユーザがテンプレートからメッセージを作成する時点で送信側と受信側の両方に知られている、メッセージフォーマットを提供する。テンプレートの使用は、キュー状態変化の瞬時的な通知および瞬時的な配信を行う。以下に記載されるテンプレートを使用して、共有メモリマネージャは、従来可能な方式よりも高速、効率的な方式で重要なオペレーションを実行する。
本発明によって考えられたIPCキューテンプレートは、複数の重要なオペレーションを実行する能力を備えている。図1を参照すると、対象となる発明で利用されるIPCキューテンプレートの主要なオペレーションを記述する階層的なフローチャートが示されている。これらの主要なオペレーションは、(1)キュー作成102と、(2)キュー削除104と、(3)要素プッシュ106と、(4)要素ポップ108と、(5)キュースロットのピーク110である。これらの主要なオペレーションは、最上位レベル階層として表現され、説明のためのフローがそこから下に記載されている。
キュー作成102のため、すなわち、キュー作成テンプレート102のため、テンプレートは、ステップ112でユーザから受信したパラメータを最初に検証するため構成されなければならない。ステップ112で有効なパラメータが存在しない場合、キュー作成102テンプレートは機能しない。ステップ112でパラメータが承認および検証の少なくとも一方をされたとき、キュー作成テンプレート102は、ステップ114でキュー要素を記憶するため共有セグメントを作成/ロックする。セグメントサイズは、キュー要素サイズおよび最大キュー要素数により決められる。キュー要素は、次に、キュー発見のため共有セグメントキュー名にリンクされる。キュー作成テンプレート102は、次に、ステップ116で共有セグメントヘッダを初期化する。共有セグメントヘッダは、次のプッシュスロット、次のポップスロット、キューサイズ、キュー名、要素数、および、類似した項目のための値を格納する。この共有セグメントは、キュー要素マネージメントのためリングバッファのような機能を果たす。
共有セグメントヘッダの初期化に続いて、キュー作成テンプレート102は、次に、ステップ114の作成/ロックが成功したかどうかをステップ118で判定することが必要である。ステップ118でロック成功であれば、キュー作成テンプレート102は、ステップ120へ進み、最大キューサイズおよび利用可能スロットが初期化される。キュー作成テンプレート102は、次に、ステップ112のキューパラメータの発信側に問い合わせ、ステップ122で発信側が最初のクライアントであるか否かを判定する。発信側が最初のクライアントであるならば、キュー作成テンプレート102はステップ126へ進み、クライアント数が1に設定される。発信側が最初のクライアントではない場合、キュー作成テンプレート102はステップ124へ進み、キュークライアント数が増加される。
再度図1の最上位レベルを参照すると、主要なオペレーションであるキュー削除テンプレート104の機能を説明するフローチャートが示されている。IPCテンプレートによって実行されるこの単純化したオペレーションには2つのステップが含まれる。第1のステップ128は、コネクションまたはクライアント数のリセットである。一旦リセットされると、キュー削除テンプレート104は、次に、ステップ130で、キュー名とリンクされた共有セグメントを削除可能である。
次に、対応したIPCキューテンプレートの要素プッシュ106オペレーションを参照すると、要素プッシュ106は、キューの状態、すなわち、キューがフル状態であるか否かをステップ132で判定することから始まる。キューがフル状態である場合、要素プッシュは、要素がポップされるまでステップ134で待機する。ステップ132でキューがフル状態ではないと判定されると、要素プッシュ106テンプレートは、ステップ136へ進み、第1の利用可能なキュースロットを識別する。この第1の利用可能なキュースロットの識別は、共有セグメントベースのリングバッファによって実現される。次に、ステップ138で、要素はユーザ空間からキュースロットへコピーされる。次のプッシュスロット番号は、要素のキュースロットへの追加を反映させて、対応して増加される。このように要素をプッシュすると、要素プッシュ106テンプレートは、次に、同じキューを待つ任意のクライアントに通知するためステップ140で信号を発する。この信号は、キュー共有セグメントに発生し、要素をポップするため同じキューにアクセスすることを待っている任意のクライアントに通知する。
要素のポップには、キュースロットからユーザ空間への要素の除去が含まれる。108を参照すると、要素ポップ108テンプレートのフローチャートが示されている。このプロセスは、まずキューの状態、すなわち、キューエンプティ状態142を判定する。キューがエンプティ状態である場合、要素ポップ108テンプレートは、ステップ144で、要素がプッシュされるまで待機する。すなわち、要素ポップ108テンプレートは、キューがフル状態であり、オープン状態のキュースロットがなくなるまで待機する。ステップ142においてキューがエンプティ状態ではない(キューがフル状態である)場合、要素ポップ108テンプレートはステップ146へ進み、共有セグメントベースのリングバッファの先頭を識別する。次に、要素は、ステップ148でキュースロットからユーザ空間へコピーされる。次のポップスロット番号は、その後に増加され、ステップ148で生じる状態の変化に対応する。次のスロットポップ番号を増加させた後、ポップ要素108テンプレートはステップ150へ進み、要素がキューからポップされたことを任意のクライアントにも通知するため信号を発する。この信号はキュー共有セグメントで生じ、キューからポップされる要素を待機している任意のクライアントに、実際に要素がキューからポップされた旨を通知する。
ここで検討されているIPCキューテンプレートの最後の基本オペレーションは、キュースロットのピーク110オペレーションテンプレートである。本質的に、スロットピーク110テンプレートは、ユーザが、もしあれば参照キュースロットの内容をその内容に影響を与えることなく見ることを可能にする。このテンプレートは、ステップ152で、リングバッファに有効なスロットが存在するか否かを簡単に判定する。有効なスロットが存在する場合、キュースロットのピーク110テンプレートは、キュー要素がユーザ空間へコピーされるステップ156へ進むように指示する。これに対して、ユーザがキューに無効なスロットを指定した場合、このテンプレートは、ステップ154でエラーリターンを指示する。
本発明の本実施形態に固有の幾つかの主要なオペレーションを説明したので、次に、上記の主要なオペレーションのIPCキューテンプレートに基づく共有メモリマネージャの階層構造が示されている、図2を参照する。共有メモリマネージャは、種々のプロセス間およびクライアント間で通信を容易に実現させるため多数のオペレーションを実行する能力を備えている。したがって、当業者は、以下の主要なオペレーションおよび添付のフローチャートが、本共有メモリマネージャを示された6例に限定するものではないことがわかるであろう。
最初に、インスタンス取得202オペレーションを参照すると、共有メモリマネージャは次のように動作する。共有メモリマネージャは、ステップ214で、呼び出し元に、共有メモリマネージャクラスのシングルトンインスタンスのリファレンスを供給する。呼び出し元に要求されたリファレンスが与えられると、共有メモリマネージャは、次に、ステップ216で、マネージャオブジェクトが既に作成されたかどうかを判定しなければならない。マネージャオブジェクトが予め作成されている場合、インスタンス取得202は、ステップ218へ進み、共有メモリマネージャリファレンスが返却される。インスタンス取得202オペレーションがマネージャオブジェクトは未だ作成されていないと判定した場合、インスタンス取得202オペレーションはステップ220で新しいインスタンスを作成する。共有メモリマネージャオブジェクトの作成中に、以下の属性、すなわち、セグメント名、IPCキー、ユーザ数、セマフォ名、セマフォキーを収容する要素タイプSTaSmmTableをもつIPCキューが作成される。
共有メモリマネージャがIPCキューテンプレートを使用して実行する第2のオペレーションは、共有セグメント作成204オペレーションである。ユーザが共有セグメントを作成するため、オペレーション204は、最初にステップ222でセグメント名から固有キーを生成しなければならない。共有セグメント作成204オペレーションは、次に、ステップ224で該当するセグメントの状態を判定しなければならない。セグメントが既に作成されている場合、セグメントサイズはステップ228で初期化される。一方、セグメントが未だ作成されていない場合、オペレーション204はステップ226へ進み、セグメントセマフォおよびミューテックスが初期化される。セグメントに対するセマフォおよびミューテックスの初期化に続いて、このオペレーションは、セグメントサイズが初期化されるステップ228で終了する。
図2に例示されている第3のオペレーションは、共有セグメントプッシュ206オペレーションである。このオペレーションは、最初に、ステップ230で共有セグメントリファレンスおよびIPCキュー名を格納するパラメータを承認する。ステップ230における承認後、オペレーション206は、ステップ232でIPCキュー名をIPCキューオブジェクトに変換する。共有メモリマネージャは、要求されたすべてのIPCキューのキャッシュを保持し、変換速度を高速化することができる。変換に続いて、共有セグメントプッシュ206オペレーションは、ステップ234でIPCキューリクエスト要素を生成する。このリクエスト要素は、セグメントサイズ、セグメント名、セグメントキー、および共有セグメント内の開始点を格納する。オペレーション206は、次に、ステップ236でリクエスト要素をリクエストキューへプッシュする。これは、次に、同じIPCキュー上の要求の処理を待機している任意のクライアントのための通知を生じさせる。
図2で検討されている第4のオペレーションは、共有セグメントポップ208オペレーションである。このオペレーションはステップ238でユーザからのパラメータを承認することから始まる。これらのパラメータは、典型的にIPCキュー名を含む。承認に続いて、オペレーション208は、ステップ240でIPCキュー名をIPCキューオブジェクトに変換する。これは、共有メモリマネージャが、より高速な変換を可能にするため要求されたすべてのIPCキューのキャッシュを保持する点で、上記の共有セグメントプッシュ206オペレーションと類似する。このオペレーション208は、ステップ242へ進み、IPCキュー上のポップ要求を発行する。しかし、キューに要素が存在しない場合、キューのポップ要求は、ステップ244へ進む前に、要素が同じキューにプッシュされるまで待機する。ステップ244において、要素のポップが処理される。これは、必然的に共有セグメント名および共有セグメントサイズの、共有セグメントオブジェクトへの変換を伴う。共有セグメントは、将来の共有セグメントポップ208オペレーションの間に、共有セグメントオブジェクトをより高速に生成できるようにするため、その共有セグメントに関連したすべてのプロセスのメモリマップを保持する。ユーザが簡単にアクセスできるようにするため、本発明によって考えられた共有メモリマネージャは、ステップ246で共有セグメントをユーザ空間にアタッチする。
IPCキューテンプレートの、検討されている共有メモリマネージャへの組み込みによって可能になった第5のオペレーションは、共有セグメントの待機210オペレーションである。このオペレーションは、ステップ248で、共有セグメントに関連付けられたマップされたセマフォを識別することから始まる。一般的に、このオペレーションは、クライアントがサーバによるクライアントの要求の実行を待っているときに利用される。マップされたセマフォを識別した後、オペレーション210は、ステップ250へ進み、共有セグメントセマフォを待つ。
IPCキューテンプレートの使用によって可能にされた第6のオペレーションは、共有セグメント通知212のオペレーションである。オペレーション212は、最初に、ステップ252で共有セグメントに関連付けられたマップされたセマフォを識別する。典型的に、このオペレーション212は、サーバが要求を受信し、クライアントにその要求の完了を通知しようとするときに使用される。マップされたセマフォを識別した後、共有セグメントセマフォは、ステップ254でクライアント通知のためシグナル操作される。
本発明は、ソースコード形式、オブジェクトコード形式、ソースコードとオブジェクトコードの中間コード形式(例えば、部分的にコンパイルされた形式)、または、本発明を実施する際に使用するために適したその他の形式のコンピュータプログラムに拡張される。コンピュータプログラムは、好適には、スタンドアロンのアプリケーション、ソフトウェアコンポーネント、スクリプト、または他のアプリケーションへのプラグインである。本発明を組み込むコンピュータプログラムは、有利には、コンピュータプログラムを搬送する能力を備えた任意のエンティティまたはデバイスである担体、例えば、ROM若しくはRAMのような記憶媒体、CD−ROMのような光学式記録媒体、或いは、フロッピー(登録商標)ディスクのような磁気記録媒体に具現化される。担体は、電気若しくは光ケーブルによって、又は無線によって、或いは、その他の手段によって搬送可能な、電気若しくは光信号のような任意の伝送可能な担体である。コンピュータプログラムは、好適には、サーバからインターネット経由でダウンロードされる。コンピュータプログラムは、また、集積回路に組み込むことも可能である。上述の本発明の原理を実質的にコンピュータに実行させるコードを収容するあらゆるこのような実施形態は、本発明の範囲に含まれる。
好ましい実施形態では、本発明はソフトウェアで実現されるが、当業者が容易に認めるように、本発明は、ハードウェアで実現してもよく、或いは、ソフトウェアとハードウェアの組み合わせで実現してもよい。好ましい実施形態を詳細に説明したが、添付の特許請求の範囲に定義されるような本発明の精神および範囲を逸脱することなく、様々の変更、置換、および修正をなし得る。本発明の本質を説明するために記載され、例示された部品の細部、素材および配列の様々な変更は、添付の特許請求の範囲に記載されるような本発明の原理および範囲内で当業者によってなされることが可能である。
Claims (36)
- ピアベースのプロセス間通信用システムであって、
前記システムは複数のピアプロセスを備え、
各プロセスは、前記複数のピアプロセスのうちの第1のプロセスと第2のプロセスとの間で選択的にデータを通信するバスシステムを含み、
前記システムは、前記複数のピアプロセスのそれぞれによってアクセス可能な共有データを選択的に記憶する共有メモリを備え、
各プロセスは、前記共有メモリの内容に変更が加えられるときに、前記複数のプロセスのうちの少なくとも1つのプロセスに通知するための通知手段を含み、
各プロセスは、少なくとも1つの他のプロセスによるアクセスから共有メモリを選択的にロックするロッキング機構を含む、ピアベースのプロセス間通信用システム。 - 各プロセスは、
そのプロセスに許容可能なフォーマットを指定するメッセージテンプレートを定義するテンプレートジェネレータと、
前記メッセージテンプレートを、前記複数のプロセスのうちの少なくとも1つの他のプロセスへ通信するための手段と、
をさらに備える、請求項1に記載のピアベースのプロセス間通信用システム。 - 前記メッセージテンプレートは、ヘッダコンポーネントをさらに備える、請求項2に記載のピアベースのプロセス間通信用システム。
- 前記ヘッダコンポーネントは、前記共有メモリ内の最大要素数を表す情報をさらに備える、請求項3に記載のピアベースのプロセス間通信用システム。
- 前記ヘッダコンポーネントは、前記共有メモリに要素を追加するときに使用される次の要素を表す情報をさらに備える、請求項3に記載のピアベースのプロセス間通信用システム。
- 前記ヘッダコンポーネントは、前記共有メモリから要素を取り出すときに使用される次の要素を表す情報をさらに備える、請求項3に記載のピアベースのプロセス間通信用システム。
- 前記ヘッダコンポーネントは、前記共有メモリ内で使用される要素数を表す情報をさらに備える、請求項3に記載のピアベースのプロセス間通信用システム。
- 前記共有メモリにアクセスする前記複数のプロセスの個数を判定するための手段をさらに備える、請求項1に記載のピアベースのプロセス間通信用システム。
- 前記共有メモリを初期化するため前記共有メモリをリセットするための手段をさらに備え、前記記憶された共有データが削除される、請求項1に記載のピアベースのプロセス間通信用システム。
- 複数のピアプロセスを含むシステムで実行されるピアベースのプロセス間通信の方法であって、
前記複数のピアプロセスのうちの第1のプロセスと第2のプロセスとの間でデータを選択的に通信する工程と、
前記複数のプロセスのうちのそれぞれのプロセスによりアクセス可能な共有メモリに、共有データを選択的に記憶する工程と、
前記共有メモリの内容に変更が加えられるときに、前記複数のプロセスのうちの少なくとも1つのプロセスに通知する工程と、
少なくとも1つの別のプロセスによるアクセスから前記共有メモリを選択的にロックする工程と、
を備える方法。 - あるプロセスに許容可能なフォーマットを指定するメッセージテンプレートを生成する工程と、
前記メッセージテンプレートを前記複数のプロセスのうちの少なくとも1つの別のプロセスに通信する工程と、
をさらに備える、請求項10に記載のピアベースのプロセス間通信の方法。 - 前記メッセージテンプレートはヘッダコンポーネントをさらに備える、請求項11に記載のピアベースのプロセス間通信の方法。
- 前記ヘッダコンポーネントは、前記共有メモリ内の最大要素数を表す情報をさらに備える、請求項12に記載のピアベースのプロセス間通信の方法。
- 前記ヘッダコンポーネントは、前記共有メモリに要素を追加するときに使用される次の要素を表す情報をさらに備える、請求項12に記載のピアベースのプロセス間通信の方法。
- 前記ヘッダコンポーネントは、前記共有メモリから要素を取り出すときに使用される次の要素を表す情報をさらに備える、請求項12に記載のピアベースのプロセス間通信の方法。
- 前記ヘッダコンポーネントは、前記共有メモリ内で使用される要素数を表す情報をさらに備える、請求項12に記載のピアベースのプロセス間通信の方法。
- 前記共有メモリにアクセスする前記複数のプロセスの個数を判定する工程をさらに備える、請求項10に記載のピアベースのプロセス間通信の方法。
- 前記共有メモリを初期化するため前記共有メモリをリセットする工程をさらに備え、前記記憶された共有データが削除される、請求項10に記載のピアベースのプロセス間通信の方法。
- 複数のピアプロセスのうちの第1のプロセスと第2のプロセスとの間でデータを選択的に通信する命令と、
前記複数のプロセスのうちのそれぞれのプロセスによりアクセス可能な共有メモリに、共有データを選択的に記憶する命令と、
前記共有メモリの内容に変更が加えられるときに、前記複数のプロセスのうちの少なくとも1つのプロセスに通知する命令と、
少なくとも1つの別のプロセスによるアクセスから前記共有メモリを選択的にロックする命令と、
を備える、ピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。 - あるプロセスに許容可能なフォーマットを指定するメッセージテンプレートを生成する命令と、
前記メッセージテンプレートを前記複数のプロセスのうちの少なくとも1つの別のプロセスに通信する命令と、
をさらに備える、請求項19に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。 - 前記メッセージテンプレートはヘッダコンポーネントをさらに備える、請求項20に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 前記ヘッダコンポーネントは前記共有メモリ内の最大要素数を表す情報をさらに備え、請求項21に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 前記ヘッダコンポーネントは、前記共有メモリに要素を追加するときに使用される次の要素を表す情報をさらに備える、請求項21に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 前記ヘッダコンポーネントは、前記共有メモリから要素を取り出すときに使用される次の要素を表す情報をさらに備える、請求項21に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 前記ヘッダコンポーネントは、前記共有メモリ内で使用される要素数を表す情報をさらに備える、請求項21に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 前記共有メモリにアクセスする前記複数のプロセスの個数を判定する命令をさらに備える、請求項19に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 前記共有メモリを初期化するため前記共有メモリをリセットする命令をさらに備え、前記記憶された共有データが削除される、請求項19に記載のピアベースのプロセス間通信の命令を記憶した、コンピュータ読み取り可能な媒体。
- 複数のピアプロセスを含むシステムで実行される、ピアベースのプロセス間通信のため、コンピュータにより実施される方法であって、
前記複数のピアプロセスのうちの第1のプロセスと第2のプロセスとの間で、データを選択的に通信する工程と、
前記複数のプロセスのうちのそれぞれのプロセスによりアクセス可能な共有メモリに、共有データを選択的に記憶する工程と、
前記共有メモリの内容に変更が加えられるときに、前記複数のプロセスのうちの少なくとも1つのプロセスに通知する工程と、
少なくとも1つの別のプロセスによるアクセスから、前記共有メモリを選択的にロックする工程と、
を備える方法。 - あるプロセスに許容可能なフォーマットを指定するメッセージテンプレートを生成する工程と、
前記メッセージテンプレートを、前記複数のプロセスのうちの少なくとも1つの別のプロセスに通信する工程と、
をさらに備える、請求項28に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。 - 前記メッセージテンプレートはヘッダコンポーネントをさらに備える、請求項29に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
- 前記ヘッダコンポーネントは前記共有メモリ内の最大要素数を表す情報をさらに備え、請求項30に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
- 前記ヘッダコンポーネントは、前記共有メモリに要素を追加するときに使用される次の要素を表すため適合した手段をさらに備える、請求項30に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
- 前記ヘッダコンポーネントは、前記共有メモリから要素を取り出すときに使用される、次の要素を表すため適合した手段をさらに備える、請求項30に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
- 前記ヘッダコンポーネントは、前記共有メモリ内で使用される要素数を示すため適合した手段をさらに備える、請求項30に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
- 前記共有メモリにアクセスする前記複数のプロセスの個数を判定する工程をさらに備える、請求項28に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
- 前記共有メモリを初期化するため前記共有メモリをリセットする工程をさらに備え、前記記憶された共有データが削除される、請求項28に記載のピアベースのプロセス間通信のため、コンピュータにより実施される方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US49620603P | 2003-08-19 | 2003-08-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005135382A true JP2005135382A (ja) | 2005-05-26 |
Family
ID=34652243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004240001A Pending JP2005135382A (ja) | 2003-08-19 | 2004-08-19 | イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7308688B2 (ja) |
JP (1) | JP2005135382A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009059310A (ja) * | 2007-09-03 | 2009-03-19 | Panasonic Corp | プログラム制御装置 |
US9652411B2 (en) | 2015-04-17 | 2017-05-16 | Kyocera Document Solutions Inc. | Image forming apparatus that transmits and receives information between platforms, recording medium, and method |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006036815A2 (en) * | 2004-09-22 | 2006-04-06 | Xyratex Technology Limited | Xml/soap interprocess intercontroller communication |
US7945677B2 (en) * | 2005-09-06 | 2011-05-17 | Sap Ag | Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions |
US20070094669A1 (en) * | 2005-10-25 | 2007-04-26 | Microsoft Corporation | Shared resource acquisition |
US8707323B2 (en) * | 2005-12-30 | 2014-04-22 | Sap Ag | Load balancing algorithm for servicing client requests |
CN100403739C (zh) * | 2006-02-14 | 2008-07-16 | 华为技术有限公司 | 基于链表的进程间消息传递方法 |
CN101414339B (zh) * | 2007-10-15 | 2012-05-23 | 北京瑞星信息技术有限公司 | 保护进程内存及确保驱动程序加载的安全性的方法 |
US8521966B2 (en) * | 2007-11-16 | 2013-08-27 | Vmware, Inc. | VM inter-process communications |
CN102355429A (zh) * | 2011-08-12 | 2012-02-15 | 北京思创银联科技股份有限公司 | 基于管道的多进程间消息通信方法 |
US10133596B2 (en) | 2012-03-16 | 2018-11-20 | Oracle International Corporation | System and method for supporting application interoperation in a transactional middleware environment |
US9146944B2 (en) | 2012-03-16 | 2015-09-29 | Oracle International Corporation | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls |
US9760584B2 (en) | 2012-03-16 | 2017-09-12 | Oracle International Corporation | Systems and methods for supporting inline delegation of middle-tier transaction logs to database |
CN105700962A (zh) * | 2014-11-26 | 2016-06-22 | 中兴通讯股份有限公司 | 数据更新处理方法及装置 |
US9342384B1 (en) | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US10909255B2 (en) | 2017-08-24 | 2021-02-02 | Data Republic Pty Ltd | Systems and methods to control data access and usage |
US10467151B2 (en) * | 2017-09-05 | 2019-11-05 | NGINX, Inc. | Using shared memory to transport data between server processes |
US11042424B1 (en) | 2018-04-24 | 2021-06-22 | F5 Networks, Inc. | Pipelined request processing using shared memory |
US11126482B1 (en) * | 2020-03-20 | 2021-09-21 | Microsoft Technology Licensing, Llc | Remote logging via telemetry |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5115499A (en) * | 1986-05-14 | 1992-05-19 | Sequoia Systems, Inc. | Shared computer resource allocation system having apparatus for informing a requesting computer of the identity and busy/idle status of shared resources by command code |
US5133053A (en) * | 1987-02-13 | 1992-07-21 | International Business Machines Corporation | Interprocess communication queue location transparency |
EP0490595B1 (en) * | 1990-12-14 | 1998-05-20 | Sun Microsystems, Inc. | Method for operating time critical processes in a window system environment |
US5617570A (en) * | 1993-11-03 | 1997-04-01 | Wang Laboratories, Inc. | Server for executing client operation calls, having a dispatcher, worker tasks, dispatcher shared memory area and worker control block with a task memory for each worker task and dispatcher/worker task semaphore communication |
US5916307A (en) * | 1996-06-05 | 1999-06-29 | New Era Of Networks, Inc. | Method and structure for balanced queue communication between nodes in a distributed computing application |
US6829769B2 (en) * | 2000-10-04 | 2004-12-07 | Microsoft Corporation | High performance interprocess communication |
US7012927B2 (en) * | 2001-02-06 | 2006-03-14 | Honeywell International Inc. | High level message priority assignment by a plurality of message-sending nodes sharing a signal bus |
US7333504B2 (en) * | 2001-03-08 | 2008-02-19 | Honeywell International Inc. | Simultaneous serial transmission of messages with data field arbitration |
-
2004
- 2004-08-19 JP JP2004240001A patent/JP2005135382A/ja active Pending
- 2004-08-19 US US10/921,530 patent/US7308688B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009059310A (ja) * | 2007-09-03 | 2009-03-19 | Panasonic Corp | プログラム制御装置 |
US8413163B2 (en) | 2007-09-03 | 2013-04-02 | Panasonic Corporation | Program control device including per-timeslot switching of thread execution |
US9652411B2 (en) | 2015-04-17 | 2017-05-16 | Kyocera Document Solutions Inc. | Image forming apparatus that transmits and receives information between platforms, recording medium, and method |
Also Published As
Publication number | Publication date |
---|---|
US20050044551A1 (en) | 2005-02-24 |
US7308688B2 (en) | 2007-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005135382A (ja) | イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法 | |
US6182108B1 (en) | Method and system for multi-threaded processing | |
US10248415B2 (en) | Dynamic code generation and memory management for component object model data constructs | |
US6401099B1 (en) | Asynchronous binding of named objects | |
US8478962B2 (en) | Tiered data management method and system for high performance data monitoring | |
US5574903A (en) | Method and apparatus for handling request regarding information stored in a file system | |
US6952736B1 (en) | Object-based locking mechanism | |
US6735770B1 (en) | Method and apparatus for high performance access to data in a message store | |
JP4620871B2 (ja) | マルチスレッドコンピュータシステムにおけるモニタ変換 | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
WO2005045738A2 (en) | Method and system for transacted file operations over a network | |
US7444634B2 (en) | Method and apparatus for providing dynamic locks for global resources | |
US8341733B2 (en) | Creating secured file views in a software partition | |
US6785714B1 (en) | System and method for employing slot level locking of a cache | |
US6615231B1 (en) | System and method for directing requests to specific processing | |
US20020194390A1 (en) | Efficient data buffering in a multithreaded environment | |
US20170026242A1 (en) | System and method for use of a non-blocking process with a resource pool in a computing environment | |
US20100058434A1 (en) | Hierarchical access control administration preview | |
US8738742B2 (en) | Tiered XML services in a content management system | |
US7647644B2 (en) | Entitlement designation in web services for remote portlets environment | |
KR101442369B1 (ko) | 듀얼 모드 리더 라이터 락 | |
CA2707249C (en) | Native interface optimization for read-only arrays | |
US20030093577A1 (en) | Method and apparatus for facilitating compact object headers | |
JP2008234120A (ja) | 情報処理装置 | |
US20110075217A1 (en) | Systems and methods for managing data in complex containers |