JP2006338666A - 分散カーネルオペレーティングシステム - Google Patents

分散カーネルオペレーティングシステム Download PDF

Info

Publication number
JP2006338666A
JP2006338666A JP2006148467A JP2006148467A JP2006338666A JP 2006338666 A JP2006338666 A JP 2006338666A JP 2006148467 A JP2006148467 A JP 2006148467A JP 2006148467 A JP2006148467 A JP 2006148467A JP 2006338666 A JP2006338666 A JP 2006338666A
Authority
JP
Japan
Prior art keywords
node
local
remote
connection
connection identifier
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.)
Withdrawn
Application number
JP2006148467A
Other languages
English (en)
Inventor
Andrew Boyd
ボイド アンドリュー
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.)
QNX Software Systems GmbH
Original Assignee
QNX Software Systems GmbH
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 QNX Software Systems GmbH filed Critical QNX Software Systems GmbH
Publication of JP2006338666A publication Critical patent/JP2006338666A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】分散メッセージパッシングオペレーティングシステムのノード間の通信を管理する、より信頼性のある方法を提供する。
【解決手段】本発明による方法は、ローカルノードによってリモートノードに対する伝送要求を生成し、ローカルノードによって初期パケットをリモートノードに伝送し(502)、ここで初期パケットが、リモートノードを示すローカルノード記述子とローカル接続識別子とを含み、リモートノードによって初期パケットを受信し、リモートノードによってローカルノード記述子に関連する受信接続構造を生成すること、初期パケットの受信に応答して、伝送接続を確立するために、該ローカルノードに確認パケットを伝送し、ここで確認パケットが、ローカルノード記述子とローカル接続識別子とローカルノードを示すリモートノード記述子とリモート接続識別子とを含み、およびローカルノードによって確認パケットを受信することを包含する。
【選択図】図5

Description

本発明は一般に、コンピュータシステムのネットワークに関し、より詳細には、コンピュータシステムのネットワークを介した、分散オペレーティングシステムに関する。
オペレーティングシステム(OS)は、コンピュータリソースの制御および管理をするシステムソフトウェアである。通常のOSは、アプリケーションソフトウェアとコンピュータのハードウェアとの間の通信を可能にする。OSによって、アプリケーションは、ハードウェアにアクセスすることができ、ディスクアクセス、メモリ管理、タスクのスケジューリング、およびユーザインターフェーシングなど、コンピュータの基本的システム動作にアクセスすることができる。付け加えて、OSはまた、ネットワーク接続を提供する。
コンピュータのネットワーク化は、ファイル、およびいくつかの相互接続されたコンピュータの間の周辺機器を共有するメカニズムを提供する。理想的には、コンピュータネットワークによって、全てのコンピュータおよびアプリケーションが、ネットワークの全てのリソースへのアクセスを有することができるべきであり、集合的リソースを最適化するべきである。この結果を達成するために、分散オペレーティングシステムが開発されている。通常の分散OSは、しかしながら、様々な制約を被る。第1に、分散OSは、多層化されたシステムであり得る。すなわち、ローカル環境のための一つの層、およびネットワーク環境のための別個の層である。これは、開発者およびユーザによって学習されるべき、二つの異なるオペレーティングシステムという結果になる。付け加えて、ローカルおよびネットワーク層を用いたインターフェースが著しく異なるゆえに、アプリケーションプログラムは、一つの層または他の層にて動作するように書き込まれ得るが、両方にて動作するように書き込まれることはできない。つまり、アプリケーションプログラムのネットワークバージョンは、個々のコンピュータ上では実行し得ず、スタンドアローンバージョンもまたネットワーク上では実行し得ない。
付け加えて、ネットワークソフトウェアは、クライアントコンピュータおよびサーバを異なる機械として扱う。ユーザが、中央コンピュータを用いて、ファイルを多数のリモートコンピュータに提供させたい場合、次いで中央コンピュータは、サーバとして指定され、リモートコンピュータはクライアントとして指定される。これはネットワークの柔軟性を制限し得る。というのは、サーバおよびクライアントコンピュータは、オペレーティングシステムによって異なる性能を与えられているからである。例えば、二つのコンピュータが互いにファイルを共有することは可能であり得ず、というのも、一つはサーバとして指定されなければならず、もう一つはクライアントとして指定されなければならないからである。通常、サーバは、クライアントに格納されたファイルにアクセスし得ない。
コンピュータネットワークシステムは、リソースおよび構成の特定のセットを扱うように設計され、および最適化されている。例えば、メインフレームコンピュータシステムは、大きなメモリ記憶装置およびプリンタのセットを有するメインフレームコンピュータを含み得る。より小さいターミナルまたはコンピュータは、ネットワークおよびソフトウェアに特定の方法において、クライアントとして、このメインフレームにアクセスし得る。そのようなコンピュータシステムは、インターネットなどの通信開発を活用するための柔軟性を有し得ない。
メッセージパッシング(message passing)分散オペレーティングシステムは、これらの問題を克服するために開発されている。例示的なメッセージパッシングオペレーティングシステムは、van der Veenら(「van der Veenら」)による、特許文献1に記載され、その開示はここにおいて援用される。van der Veenらは、インターネット通信リンクを含む柔軟なネットワーク環境、および、スタンドアローンコンピュータに適用され得る、単一レベルの構成を用いた分散オペレーティングシステムを記載する。これは、メッセージパッシングオペレーティングシステムの使用、および、オフ−ノード(off−node)メッセージを命令および受信することが可能であるネットワークマネージャに、オフ−ノードメッセージを送信することによって、なされる。
付け加えて、このシステムにおけるプロセス間制御(IPC)は信頼性があるべきである。不都合なことに、一部の以前の分散オペレーティングシステムは、(1)過渡的な通信障害および迅速なノード再ブートを確実に扱う、(2)リンク信頼性に適合する送信プロトコルを提供する、(3)送信がメディアの任意の組み合わせを介して生じることを可能にする性能がないことによって決定される、送信実行制限を被る。ノードはしばしば、インターネットなどの、サードパーティ通信ネットワークを介して接続され得るゆえ、ノード間の物理的通信線の統合を保証することは不可能であり得る。過渡的通信障害は、クライアントのプロセスをロックし得、リソースを無駄にし、システム全体の実行を阻害してしまう。
それゆえ、過渡的通信障害および迅速なノードの再ブートの間の処理の信頼性を改善し得、ならびに、様々なポリシーに通信リンクの任意の組み合わせを介してインプリメントさせるために、リンク信頼性に適合し、および/またはメディア選択を取り出す、順応性のあるプロトコルを介して、データ送信の実行を改善し得る、分散メッセージパッシングオペレーティングシステムのノード間の通信を管理する信頼性のある方法の必要性が存在する。
米国特許第6,697,876号明細書
(1)過渡的な通信障害および迅速なノード再ブートを確実に扱う、(2)リンク信頼性に適合する送信プロトコルを提供する、(3)送信がメディアの任意の組み合わせを介して生じることを可能にする性能がないことによって決定される、送信実行制限を克服するための分散オペレーティングシステムにおける通信を管理する方法である。ここで記載されるシステムおよび方法は、高性能メッセージ伝達およびマルチインターフェース管理およびサポートを提供する、任意の信頼性のあるノード間(node−to−node)セッションプロトコルを提供する。これは、ノード間における多数のインターフェースをダイナミックに活用し得る単一の接続を介して、オペレーティングシステムの二つのノード間における全てのデータを伝送することによって、なされる。様々なメディア選択ポリシーはまた、ユーザに、特定のデータ送信のためのインターフェースを特定させるようにインプリメントされ得る。
本発明の他のシステム、方法、特性、および利点は、以下の図面および詳細な記載の検証にて、当業者にあきらかになる。全てのそのような追加的なシステム、方法、特性、および利点は、本記載内に含まれ、本発明の範囲内であり、および、以下の請求の範囲によって保護されることが意図される。
本発明はさらに以下の手段を提供する。
(項目1)
分散オペレーティングシステムのノード間の接続を確立する方法であって、
ローカルノードによって、リモートノードに対する伝送要求を生成することと、
該ローカルノードによって、初期パケットを該リモートノードに伝送することであって、該初期パケットが、
該リモートノードを示すローカルノード記述子と、
ローカル接続識別子と
を含む、ことと、
該リモートノードによって、該初期パケットを受信することと、
該リモートノードによって、該ローカルノード記述子に関連する受信接続構造を生成することと、
該初期パケットの受信に応答して、該伝送接続を確立するために、該ローカルノードに、確認パケットを伝送することであって、該確認パケットが、
該ローカルノード記述子と、
該ローカル接続識別子と、
該ローカルノードを示すリモートノード記述子と、
リモート接続識別子と
を含む、ことと、
該ローカルノードによって、該確認パケットを受信することと
を包含する、方法。
(項目2)
上記ローカル接続識別子および上記リモート接続識別子が、単調に増加するカウンターを含む、項目1に記載の方法。
(項目3)
上記ローカルノードが、
上記リモートノードに対する複数の伝送要求を生成するステップと、
該複数の伝送要求を順々に提供するステップと
を実行することをさらに包含する、項目1に記載の方法。
(項目4)
上記ローカルノードが、
上記ローカルノード記述子および上記ローカル接続識別子を格納することが可能な伝送接続構造を生成するステップを
実行することをさらに包含する、項目1に記載の方法。
(項目5)
上記ローカルノードによって、上記複数の伝送要求の待ち行列を生成することと、
上記伝送接続構造に伝送要求の該待ち行列を格納することと
をさらに包含する、項目4に記載の方法。
(項目6)
閾値期間の満了の後、上記リモートノードをポーリングすることをさらに包含する、項目1に記載の方法。
(項目7)
該ポーリングへの応答が受信されない場合、上記伝送接続を無効にすることをさらに包含する、項目6に記載の方法。
(項目8)
上記受信接続構造が、上記ローカルノード記述子、上記ローカル接続識別子、上記リモートノード記述子、および上記リモート接続識別子を格納することが可能である、項目1に記載の方法。
(項目9)
コンピュータ可読媒体上において具体化される分散オペレーティングシステムであって、
ローカルプロセッサ上で走るローカルスレッドを含むローカルノードであって、メッセージをパスし、メッセージを受信するように動作可能である、ローカルノードと、
複数のネットワークを介して、該ローカルノードと通信するリモートノードであって、該リモートノードが、リモートプロセッサ上で走るリモートスレッドを含み、メッセージをパスし、メッセージを受信するように動作可能である、リモートノードと
を備え、
該ローカルノードが、
該ローカルスレッドから伝送要求を受信することに応答して、該リモートノードとのノード間接続を確立するようにさらに動作可能であって、該ノード間接続がローカル接続識別子およびリモート接続識別子に関連され、該ローカル接続識別子が該ローカルノードに関連され、該リモート接続識別子が該リモートノードに関連され、
該複数のネットワークインターフェースを介して、該ローカルノードから該リモートノードへパスするメッセージを管理するように、および、
該リモートノードからメッセージを受信し、該ローカルスレッドへ該メッセージを転送するように
さらに動作可能であり、
該リモートノードが、
該ローカルノードとの該ノード間接続を確立するように、および、
該ローカルノードからメッセージを受信し、該リモートスレッドへメッセージを転送するように
さらに動作可能である、分散オペレーティングシステム。
(項目10)
上記ローカル接続識別子および上記リモート接続識別子が、単調に増加するカウンターを含む、項目9に記載のオペレーティングシステム。
(項目11)
上記ローカルノードが、
上記リモートノードに対して、複数の伝送要求を生成するように、および、
該複数の伝送要求を順々に提供するように
さらに動作可能である、項目9に記載のオペレーティングシステム。
(項目12)
上記ローカルノードが、
上記ローカル接続識別子を格納することが可能な伝送接続構造を生成するように
さらに動作可能である、項目9に記載のオペレーティングシステム。
(項目13)
上記ローカルノードが、
上記複数の伝送要求の待ち行列を生成するように、および、
上記伝送接続構造内に、伝送要求の該待ち行列を格納するように
さらに動作可能である、項目12に記載のオペレーティングシステム。
(項目14)
上記ローカルノードが、閾値期間の満了の後、上記リモートノードをポーリングするようにさらに動作可能である、項目9に記載のオペレーティングシステム。
(項目15)
上記ローカルノードが、該ポーリングへの応答が受信されない場合、上記ノード間接続を無効にするようにさらに動作可能である、項目14に記載のオペレーティングシステム。
(項目16)
上記リモートノードが、上記ローカル接続識別子および上記リモート接続識別子を格納することが可能である受信接続構造を生成するようにさらに動作可能である、項目9に記載のオペレーティングシステム。
(項目17)
上記ノード間接続が、上記ローカルノードから上記リモートノードへ初期パケットを伝送することによって確立され、該初期パケットが上記ローカル接続識別子を含む、項目9に記載のオペレーティングシステム。
(項目18)
上記ノード間接続が、上記初期パケットに応答して、上記リモートノードから上記ローカルノードへ確認パケットを伝送することによって確立され、該確認パケットが上記リモート接続識別子を含む、項目17に記載のオペレーティングシステム。
(項目19)
コンピュータ可読媒体上において具体化される分散オペレーティングシステムであって、
ローカルプロセッサ上で走るローカルスレッドを含むローカルノードであって、ローカルノードからメッセージをパスし、ローカルノードにおいてメッセージを受信するように動作可能である、ローカルノードと、
複数のネットワークインターフェースを介して、該ローカルノードと通信するリモートノードであって、該リモートノードが、リモートプロセッサ上で走るリモートスレッドを含み、該リモートノードからメッセージをパスし、該リモートノードにおいてメッセージを受信するように動作可能である、リモートノードと
を備え、
該ローカルノードは、
該ローカルスレッドから伝送要求を受信することに応答して、該リモートノードとのノード間接続を確立するように、
該複数のネットワークインターフェースを介して、該ローカルノードから該リモートノードへパスするメッセージを管理するように、および、
該リモートノードからメッセージを受信し、該ローカルスレッドへ該メッセージを転送するように
さらに動作可能であり、
該リモートノードは、
該ローカルノードとの該ノード間接続を確立するように、および
該ローカルノードからメッセージを受信し、該リモートスレッドへメッセージを転送するように
さらに動作可能であり、
該ノード間接続は、
ローカルノードによって、リモートノードに対して伝送要求を生成し、該ローカルノードによって、初期パケットを、該リモートノードに伝送することであって、該初期パケットが、
該リモートノードを示すローカルノード記述子と、
ローカル接続識別子と
を含む、ことと、
該リモートノードによって、該初期パケットを受信することと、
該リモートノードによって、該ローカルノード記述子に関連する受信接続構造を生成することと、
該リモートノードによって、および、該初期パケットの受信に応答して、該伝送接続を確立するために、該ローカルノードに、確認パケットを伝送することであって、該確認パケットが、
該ローカルノード記述子と、
該ローカル接続識別子と、
該ローカルノードを示すリモートノード記述子と、
リモート接続識別子と
を含む、ことと、
該ローカルノードによって、該確認パケットを受信することと
を包含する、
分散オペレーティングシステム。
(項目20)
上記ローカル接続識別子および上記リモート接続識別子が、単調に増加するカウンターを含む、項目19に記載のオペレーティングシステム。
(項目21)
上記ローカルノードが、
上記リモートノードに対して、複数の伝送要求を生成するように、および、
該複数の伝送要求を順々に提供するように
さらに動作可能である、項目19に記載のオペレーティングシステム。
(項目22)
上記ローカルノードが、
上記ローカルノード記述子および上記ローカル接続識別子を格納することが可能な伝送接続構造を生成するように
さらに動作可能である、項目19に記載のオペレーティングシステム。
(項目23)
上記ローカルノードが、
該ローカルノードによって、上記複数の伝送要求の待ち行列を生成するように、および、
上記伝送接続構造において、伝送要求の該待ち行列を格納するように
さらに動作可能である、項目22に記載のオペレーティングシステム。
(項目24)
上記ローカルノードが、閾値期間の満了の後、上記リモートノードをポーリングするようにさらに動作可能である、項目19に記載のオペレーティングシステム。
(項目25)
上記ローカルノードが、該ポーリングへの応答が受信されない場合、上記ノード間接続を無効にするようにさらに動作可能である、項目24に記載のオペレーティングシステム。
(項目26)
上記受信接続構造が、上記ローカルノード記述子、上記ローカル接続識別子、上記リモートノード記述子、および上記リモート接続識別子を格納することが可能である、項目19に記載の方法。
(項目27)
分散メッセージパッシングオペレーティングシステムのノード間の通信を管理する方法であって、該方法は、
ローカルノードにおいて、リモートノードへデータを伝送するために、伝送要求を生成することであって、該ローカルノードおよび該リモートノードが、第1のインターフェースおよび第2のインターフェースの両方を介して通信することが可能である、ことと、
該ローカルノードとリモートノードとの間の接続を確立することであって、該接続がローカル接続識別子およびリモート接続識別子に関連され、該ローカル接続識別子が該ローカルノードに関連され、該リモート接続識別子が該リモートノードに関連される、ことと、
該接続を介してデータを伝送することと、
該ローカルノードによって、および、該データを伝送した後、該第1のインターフェースおよび第2のインターフェースの両方を介して、ポーリングパケットを該リモートノードに伝送することであって、該ポーリングパケットが該ローカル接続識別子および該リモート接続識別子を含む、ことと、
該ポーリングパケットへの応答が受信されたことに基づいて、該第1および第2のインターフェースが動作するかどうかを決定することと
を包含する、方法。
(項目28)
上記ローカル接続識別子および上記リモート接続識別子が、単調に増加するカウンターを含む、項目27に記載の方法。
(項目29)
上記ローカルノードが、
上記リモートノードに対する、複数の伝送要求を生成するステップと、
該複数の伝送要求を順々に提供するステップと
を実行することをさらに包含する、項目27に記載の方法。
(項目30)
上記ローカルノードが、
上記ローカルノード記述子および上記ローカル接続識別子を格納することが可能な伝送接続構造を生成するステップを
実行することを包含する、項目27に記載の方法。
(項目31)
上記ローカルノードによって、上記複数の伝送要求の待ち行列を生成することと、
上記伝送接続構造に伝送要求の該待ち行列を格納することと
をさらに包含する、項目30に記載の方法。
(項目32)
閾値期間の満了の後、上記リモートノードをポーリングすることをさらに包含する、項目27に記載の方法。
(項目33)
該ポーリングへの応答が受信されない場合、上記伝送接続を無効にすることをさらに包含する、項目32に記載の方法。
(項目34)
受信接続構造が、上記ローカルノード記述子、上記ローカル接続識別子、上記リモートノード記述子、および上記リモート接続識別子を格納することが可能である、項目27に記載の方法。
(摘要)
コンピュータシステムのネットワークを介した、改良型分散オペレーティングシステムが記載される。既存の分散オペレーティングシステムは、(1)過渡的な通信障害および迅速なノード再ブートを確実に扱う、(2)リンク信頼性に適合する送信プロトコルを提供する、(3)送信がメディアの任意の組み合わせを介して生じることを可能にする性能がないことによって決定される、送信実行制限を有する。ここで記載されるシステムおよび方法は、高性能メッセージ伝達およびマルチインターフェース管理およびサポートを提供する、任意の信頼性のあるノード間(node−to−node)セッションプロトコルを提供する。これは、メッセージパッシングオペレーティングシステムの使用、および、オフ−ノード(off−node)メッセージを命令および受信することが可能であるネットワークマネージャに、オフ−ノードメッセージを送信することによって、なされる。
本発明は、以下の図面および記載を参照してより良く理解され得る。図における構成要素は必ずしも縮尺通りではなく、その代わり、強調が本発明の原理を例示する上で置かれる。さらに、図において、同様の参照番号は、異なる図面全体に亘って、対応する部分に指定される。
分散オペレーティングシステムをインプリメントするための例示的な物理的レイアウトが図1において示される。そのレイアウトは、ローカルコンピュータシステム110およびリモートコンピュータシステム112を含み、通信ネットワーク140を介して相互接続される。ローカルコンピュータシステム110およびリモートコンピュータシステム112は、所定の品質を有するように記載されているが、その物理的配置およびシステムの電子的構成要素は、本発明を記載するための一つの例として提示されるにすぎない。同様に、二つのコンピュータシステム110と112との間をメッセージパッシングさせる通信ネットワーク140はまた、多くの物理的形式および様々な通信プロトコルの形式を採り得る。二つのコンピュータシステム110と112との間をパスするデータがメッセージである場合、それは、通信するために使用されるメディアとは独立している。それゆえ、通信ネットワークのタイプは、本発明の結果とは殆ど関係がない。
図1のローカルコンピュータシステム110は、アプリケーションプログラムを実行し得るローカルクライアントプロセッサ160を含む。ローカルクライアントプロセッサ160は、ローカルエリアネットワークを介してそのローカルエリアにおける他のデバイスと通信することが可能であり、ローカルエリアネットワークは、技術的に既知の方法においてインプリメントされ得る。これらのローカルデバイスは、ローカルメッセージパッシングオペレーティングシステム118、一つ以上のローカルサーバ120および122、ならびに、ローカルネットワークマネージャ124を含み得る。
ローカルメッセージパッシングオペレーティングシステム118およびローカルネットワークマネージャ124は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、光学式ディスク(CD−ROM)、または磁気格納媒体(ハードドライブまたは携帯用ディスケット)などの、コンピュータ可読媒体上にて、実行可能な形式において通常、格納されるソフトウェアプログラムであり得る。ローカルオペレーティングシステム118およびローカルネットワークマネージャ124はまた、ハードウェアまたは他の技術的に既知の手段によってインプリメントされ得る。
ローカルメッセージパッシングオペレーティングシステム118は、ローカルプロセッサ160、120、122のそれぞれにアクセス可能であり得る。プロセス間制御の手段としてのメッセージパッシングに付け加えて、オペレーティングシステムは、一般に、データ入力およびデータ出力、タイミングサービスなどの性能を提供し、それは、類似したメモリ媒体上に格納される外部サブルーチンを介して提供され得る。メッセージパッシングオペレーティングシステムは、通信チャンネルおよびそれらの間の接続をセットアップすることによって、プロセッサ160、120、122、およびローカルネットワークマネージャ124のそれぞれの間の通信を扱う。
リモートコンピュータシステム112は類似した配置を含み、メッセージパッシングオペレーティングシステムカーネル126、リモートサーバ128、およびリモートネットワークマネージャ130を含む。この配置において、メッセージパッシングオペレーティングシステムカーネル126、リモートサーバ128、およびリモートネットワークマネージャ130の3つの示されたデバイスは、メッセージパッシングネットワーク132を介して、互いの間でメッセージを通信し、その一方で、リモートネットワークマネージャ130は、通信ネットワーク140を介して、ローカルネットワークマネージャ124と通信する。このリモートネットワーク112の構成要素は、ローカルネットワーク110における、その対応する構成要素に類似した特性を有する。
ローカルネットワーク110と同様に、リモートネットワーク112の配置は、本発明を記載するための一例としてのみ、意図されている。明らかに、無限の数の配置が作成され得、それは当業者にとっては既知である。スペクトルの一方の端において、ネットワークは、単一の回路基板上の二つのプロセッサを含み得、それらが互いに通信できるように、相互接続される。あるいは、ネットワークは、あらゆる場所に配置された無数のプロセッサを含み得、様々なタイプの通信リンクを介して相互接続される。「リモート(remote)」という用語は、離れている(apart)ことを意味するために使用され、それは、任意の空間的、または距離的な情報を伝えることを意味しない。
分散オペレーティングシステムは、二つの段階において、ローカルクライアントプロセッサ160からリモートサーバ130へのメッセージパッシングを扱う。クライアント側110は、本質的に、ローカルネットワークマネージャ124を、ローカルクライアントプロセッサ160に対する人工(artificial)サーバとして扱う。同様に、リモートネットワークマネージャ130は、バーチャルメッセージを生成し、それは、リモートサーバ128をパスする。すなわち、リモートネットワークマネージャ130は、リモートサーバ128に対するクライアントとしてアクトする。
ローカルおよびリモートオペレーティングシステム118および126は、メッセージパッシングオペレーティングシステムとして技術的に既知である。例えば、メッセージパッシングは、システム全体に亘る、プロセス間の制御(IPC)を提供し得る。一般に、メッセージは、メッセージのコンテンツに添付された特定の意味を有せずに、一つのプロセスから別のプロセスへとパスされるバイト(byte)のパケットである。メッセージにおけるデータは、メッセージの送信者および受信者に対する意味を有するが、他の者に対しては意味を有しない。
メッセージパッシングによって、プロセスは互いにデータをパスすることが可能であるだけでなく、いくつかの処理の実行を同期化させる手段を提供する。それらがメッセージを送信、受信、返信する場合、プロセスは、それらが実行され得る場合、およびその長さに影響を与える、様々な「状態変化」を経験する。それらの状態および優先順位を知ることで、オペレーティングシステム118および126は、利用可能なプロセッサのリソースを最適化するために、出来る限り効率的に、全てのプロセスをスケジュールすることができる。
クライアント側コンピュータシステム110において、ローカルクライアント160上にて実行されるアプリケーションは、リモートサーバ128のオフノード(off−node)アドレスを知る。ローカルカーネルオペレーティングシステム118は、それがノード識別に対して、対応するローカルマッピングを有しない場合、任意のメッセージをオフノードメッセージとして認識し得る。オペレーティングシステム118は、認識されないメッセージをオフノードとして考え得、ローカルクライアント160の接続に対するそのようなメッセージを、スレッドおよびプロセスを含んで動作するローカルネットワークマネージャ124に導き得、その両方は、技術的に既知である。スレッドは、便利にも、群としてスケジュールおよび実行されるプログラミングステップの、サイズ調整された集合である。プロセスは、他方で、スレッドの「コンテナ」として考えられ得、スレッドが実行されるアドレススペースを規定する。プロセスは少なくとも一つのスレッドを含む。
メッセージパッシングは、スレッドからスレッドへ直接にターゲットされるよりも、チャンネル164および接続に導かれる。メッセージを受信することを望むスレッドは、まず、チャンネル164を作成し、メッセージをそのスレッドに送信することを望む別のスレッドは、まずそのチャンネルに「添付される(attach)」ことによって、そのチャンネルへの接続をしなければならない。ローカルクライアントプロセッサ160とローカルネットワークマネージャ124との間のメッセージの送信をインプリメントする様々な手段は、当業者には既知であり、本発明は、ここで検討されるチャンネルおよび接続を介した送信に限定されない。
チャンネル164は、メッセージカーネルコールによってインプリメントされ、メッセージを受信するために、サーバによって使用される。クライアントスレッドによって作成された接続は、サーバによって利用可能になったチャンネルに「接続」する。いったん接続が確立されると、クライアントはその接続を介してメッセージを送信することができる。プロセスにおける多数のスレッドは、同じチャンネル164に添付される場合、次いで、単一の接続はスレッド間にて共有され得る。チャンネル164および接続は、小さな整数識別子によるプロセス内にて名付けられ得る。クライアント接続は、直接に、ファイル記述子にマップされ得る。
チャンネル164は、それに関連される3つの待ち行列(queue)を有し得る。一つは、メッセージを待機するスレッド、もう一つは、まだ受信されていないメッセージを送信するスレッド、およびもう一つは、受信されたメッセージを送信したが、返信されていないスレッド、である。これらの任意の待ち行列の間、待機スレッドはブロックされる。他の応用において、チャンネル164は、異なる方法において配置され得る。
このメッセージブロックは、通常、図2の状態図に従う。図2において、太字の機能またはメッセージは、第1のスレッドに由来し、あるいは、イタリック体の機能およびメッセージは、ターゲットスレッドに由来する。また、プロセスが実行を継続することが許可されない場合、プロセスはブロックされる。なぜなら、メッセージプロトコルの一部を最後まで待機しなければならないからである。参照は、UNIX(登録商標)(POSIX)機能コールのための、特定のPortable Operating System Interfaceになされるが、これは、任意の方法において請求の範囲を限定することを意図されていない。スレッドは、MsgSendv()機能をコールことによって、および、ターゲットスレッドが、MsgReceive()機能を用いて、メッセージを伝送するまで、準備状態250から送信ブロック状態252へ動くことによって、メッセージをターゲットスレッドに伝送し得る。これは、発生したスレッドを返信ブロック状態254に送る。ターゲットスレッドがメッセージを処理した場合、それは、MsgReplyv()機能を用いて、返信メッセージを、その発生したスレッドに伝送し、準備状態250に戻す。スレッドが、以前に送信されたメッセージペンディングなしで、MsgReceive()機能を実行する場合、それは、ターゲットスレッドがメッセージを、発生したスレッドへパスするために、MsgSendv()機能をコールするまで、受信ブロック256にある。このブロックは、スレッドの同期化された実行を維持する。
このブロックスキームが処理の同期化を保証する一方で、リモートネットワークマネージャ130が、ローカルネットワークマネージャ124への返信を伝送しようとする間に、通信ネットワーク140において一時的な障害が存在する場合、問題が生じ得る。機能停止が十分な継続期間に及ぶ場合、トランスポート層は、最終的に、返信を送信しようとすることを止める。リモートネットワークマネージャ130がローカルネットワークマネージャ124と通信することができず、その返信が搬送されるのに失敗するゆえ、ローカルクライアント160は、永遠に返信ブロックに留まる。返信ブロック問題は、根本的な通信エラーに関係なく生じ得る。例えば、通信機能停止は、サーバノードの迅速な再ブート、バッファのオーバーラン、ネットワークからの物理的切断などによってトリガされ得る。
図3におけるフローチャートは、これらの関心事をアドレスする方法を開示する。ローカルノードにおけるプロセッサは、リモートノードの送り先を有するメッセージを生成し得る。すなわち、メッセージは、ステップ310において、ローカルネットワークマネージャ124に転送され得る。応答において、ローカルネットワークマネージャ124は、ステップ320において、ノード間接続がリモートノードに存在するかどうかを決定し得る。接続が存在しない場合、ローカルネットワークマネージャ124は、ステップ330において、リモートノードへの接続を作成し得る。ローカルノードとリモートノードとの間に接続が存在する場合、ローカルネットワークマネージャ124は、その接続が、ステップ340において、有効であるかどうかを決定し得る。接続がもはや有効ではない場合、ローカルネットワークマネージャ124は、ステップ350において、無効な接続を取り除き得、ステップ330において、新しい接続を作成する。いったん、有効な接続が、ローカルノードとリモートノードとの間に存在することが決定されると、あるいは、新しい接続が作成された場合、ローカルネットワークマネージャ124は、ステップ360において、一つ以上のインターフェースを介して、そのメッセージをリモートネットワークマネージャ130に伝送し得る。
「伝送(transmission)」という用語は、一つのデバイスから別のデバイスへの、メッセージの転送を記載するために使用される。その用語は、通常、メッセージのタイプ、「送信(send)」および「受信(receive)」と混同することを防ぐために使用される。また、上記したように、ローカルネットワークマネージャ124とリモートネットワークマネージャ130との間の通信ネットワーク140は、メッセージが通信される必要のある場合のみ、技術的に知られているように、無数の形式を採り得る。例えば、ステップ360の伝送は、TCP/IPプロトコルネットワークを用いて、インプリメントされ得る。
図3において概説された方法をインプリメントするために、ローカルネットワークマネージャ124は、図4において示されるように、ローカルカーネルインターフェース層410、ローカルメディア選択層420、および、ローカルトランスポート層430を含み得る。ローカルカーネルインターフェース層410は、メッセージパッシングオペレーティングシステムカーネル118と対話し得る。ローカルトランスポート層430は、ローカルコンピュータシステム110の、それぞれのネットワークインターフェースのためのインスタンス432およびインスタンス434を含み得る。それぞれのインスタンスは、その関連するインターフェースに亘って、データを伝送し得る。ローカルメディア選択層420は、ノード間接続を管理し、および、トランスポート層インスタンス432および434を介したメッセージの伝送を管理し得る。
リモートネットワークマネージャ130は、同様の配置を有し得、リモートカーネルインターフェース層440、リモートメディア選択450層、および、それぞれのネットワークインターフェースのためのインスタンス462およびインスタンス464を含み得るリモートトランスポート層460を含む。これらのリモート層440、450、および460は、ローカルコンピュータシステム110の、その対応するローカル層410、420、および430として、リモートコンピュータシステム112上の対応する機能を実行し得る。ここで記載される機能性は、ローカルネットワークマネージャ124およびリモートネットワークマネージャ130の特定の層に対応するように記載されているが、これらの機能性は、既知の技術を使用して、殆ど無限の数の方法にて提供され得る。
上述したように、初めに、ローカルノードは、リモートノードに対して伝送要求を生成し得る。その伝送要求は、任意の長さのバイトのアレイとして扱われ得、リモートノードに対応するノード記述子を含み得る。伝送要求は、(例えば、ローカルカーネルインターフェース層410によって)ローカルネットワークマネージャ124によって受信され得る。ローカルカーネルインターフェース層410は、次いで、その要求を、ノード間接続がリモートノードに存在するかどうか、ならびに、存在しない場合に、新しいノード間接続を作成するかどうかを決定し得るローカルメディア選択層420にパスし得る。ローカルメディア選択層420は、システムのそれぞれのリモートノードの、伝送接続構造を維持し得る。伝送接続構造は、ローカルノードとリモートノードとの間の接続のために、状態情報などを制御するために使用され得、ローカルメディア選択層420の内部に格納し得る。伝送接続構造は、ノード記述子によって指し示されたリンクリストにおいて保持され得、その結果、ローカルメディア選択層420は、伝送接続構造が、その要求において参照されるリモートノードに存在するかどうかを迅速に決定し得る。あるいは、ハッシュされたリンクリストなどの他のデータ構造が、その伝送接続構造を保持するために使用され得る。
伝送接続構造は、接続状態、対のノード記述子、対の接続識別子、ならびに、ヘッド(head)ポインタおよびテイル(tail)ポインタに対応する構成要素を含み得る。他の構成要素は追加または代用され得る。接続状態構成要素は、その接続の状態を規定するデータ構造を含み得る。例えば、接続は、ノード間接続を確立するために使用されるパケットに対応する多数の状態のうちの一つを有し得、以下でさらに詳細に記載される。対のノード記述子は、ローカルノードおよびリモートノードのためのノード記述子に対応し得る。例えば、その対は、リモートノードのためのローカルノードのノード記述子、および、ローカルノードのためのリモートノードのノード記述子を含み得る。伝送接続構造の例示的なデータ領域は、表1.0において示される。
Figure 2006338666
対の接続識別子は、以下で記載されるように、接続管理のために使用される識別子であり得る。その対の接続識別子は、メディア選択層420および450によって生成される単調に増加するカウンターであり得、二つのノード間の接続を独自に識別し、その結果、それぞれの接続は、独自のノード記述子および接続識別子の対を有し得る。接続識別子は、ローカルメディア選択層420が伝送接続構造を作成する場合に生成され得る。あるいは、接続識別子は任意の既知の方法において生成され得る。例えば、接続識別子は、個々に、ローカルコンピュータシステム110およびリモートコンピュータシステム112のブートデータおよび/または時間に基づき得る。
ヘッドポインタおよびテイルポインタは、それぞれのノードのための伝送要求の順序に適った(in−order)伝送を保証するために、接続の伝送要求のリンクされたリストを規定し得る。あるいは、他の既知の技術は、それぞれのノードのための、伝送要求の、順序に適った伝送をインプリメントするために使用され得る。新しい伝送接続構造を作成する場合、ヘッドポイントおよびテイルポインタは、初期の伝送要求をポイントし得、初期の伝送要求が最初に提供されることを保証するために接続が確立される前に、その要求を待ち行列に入れる(queue)。例示的な伝送要求は、表2.0において、以下に示される。
いったん伝送接続構造が識別または作成されると、接続管理パケットは、ノード間接続を確立するために、ローカルノードとリモートノードとの間に伝送される。接続管理パケットのタイプは、接続の状態に対応し得、独自に接続を識別するために使用される、対のノード記述子および対の接続識別子を含み得る。例示的な接続管理パケットは、接続を開始するためのローカルノードによって送信されるTCS_INITパケット、接続が確立されたことを示すためにリモートノードによって送信されるTCS_REM_UPパケット、アクティブな接続をポーリングするためのローカルノードによって送信されるTCS_UPパケット、および、ローカルノードおよびリモートノードによって送信されるTCS_DOWNパケットおよびTCS_REM_DOWNパケットを含み得、個々に、既存の接続を取り除く。接続は一方向接続であり得、接続管理パケットはローカルまたはリモートノードのいずれかによって伝送され得るが、ローカルノードまたは開始ノードがその接続を介して伝送データパケットを許可するのみである。従って、接続は、TCS_INITまたはTCS_UPの状態を有し得るのみである。
通常の接続管理パケットフローを表す例示的なフローチャートは、図5に示される。接続は、ローカルノードとリモートノードとの間の接続が確立されていることを示すTCS_INITにおいて開始され得る。接続がTCS_INIT状態にある間、TCS_INITパケットは、ステップ502において、ローカルノードからリモートノードへ伝送され得る。TCS_INITパケットは、リモートノードのための、ローカルノードのノード記述子、およびローカルノードの接続識別子を含み得る。例示的なTCS_INITパケットは、4の値を有するローカル接続識別子を含み得る。
TCS_INITパケットを受信すると、ステップ504において、リモートノードは、伝送受信構造がTCS_INITパケットにおいて参照される、ローカルノードおよび接続に存在するかどうかを決定し得る。伝送受信構造は、それが、TCS_INITパケットにおいて含まれるノード記述子によって指し示され得ることを除いて、伝送接続構造と同様の要素を含み得る。伝送受信構造がローカルノードに存在しない場合(それは通常のことであるが)、リモートノードは、伝送受信構造を作成し得、ステップ506において、ローカルノードに、TCS_REM_UPを伝送し得る。TCS_REM_UPパケットは、TCS_INITからのノード記述子および接続識別子、ならびに、ローカルノードのためのリモートノードのノード記述子およびリモートノードの接続識別子を含み得る。このように、TCS_REM_UPパケットは、対のノード記述子および接続識別子を含む。例示的なTCS_REM_UPパケットは、4および3の値を有する接続識別子の対を含み得る。
TCS_REM_UPパケットに応答して、ローカルノードは、ステップ512において、ノード記述子および接続識別子の対に対応する伝送接続構造が存在するかどうかを決定し得る。参照された構造が存在する場合、ステップ516において、ローカルノードは、既存の構造のリモート接続識別子領域が空であるかどうかを決定し得る。その値が空である場合、ステップ520において、ローカルノードは、新しいノード記述子および接続識別子を用いて、その参照された伝送接続構造を更新し得る。例えば、伝送接続構造は、接続識別子4および3を含みように更新され得る。この点において、接続が確立されたと考えられ得、その接続は、TCS_UPの状態を有する。ローカルノードは、ステップ522において、その接続を介して、データパケットを伝送し得る。同様に、リモートノードは、その接続を介して、データパケットを受信し得る。いずれかのノードは、TCS_DOWNまたはTCS_REM_DOWNパケットを伝送することによって、任意の点において、その接続を取り除き得る。
所定の状況において、エラーが、接続管理プロセスにおいて生じる。例えば、伝送受信構造は既に、TCS_INITパケットにおいて参照されるノード記述子のために存在し得る。リモートノードが既に、前から存在する伝送受信構造を有する場合、二つの場合が可能である。第1に、既存の伝送受信構造は、TCS_INITパケットと同じ接続識別子を有し得る。リモートノードは、いくつかの理由で、接続識別子と合致することを含む、前から存在する伝送受信構造を有し得る。例えば、二重(duplicate)TCS_INITは、ローカルノードによって、または通信ネットワーク140上のどこかによって生成され得る。あるいは、ローカルノードは、再ブートされ得、既存のノード間の接続の知識(つまり、状態情報)を有しないが、しかしながら、古い接続と同じ接続識別子を再生成する。あるいは、前から存在する構造は、接続の同期がずれていることを再び指示する、合致していない(non−matching)接続識別子を含み得る。
前から存在する伝送受信構造が存在する場合、ステップ508において、リモートノードは、TCS_REM_DOWNパケットを伝送することによって、問題の原因に関係なく、既存の接続を取り除き得る。そのTCS_REM_DOWNパケットは、単一のノード記述子および接続識別子のいずれかを含み得、参照された接続を取り除くために、コマンドとしてローカルノードによって扱われる。ローカルノードは、例えば、接続のためのその伝送接続構造を削除することによって、および、ステップ510において、接続に関連する任意の他の状態情報を除去(clean up)することによって、接続を取り除き得る。ローカルノードは、次いで、接続を再確立することを企て得る。あるいは、接続識別子は、問題の原因を決定するために使用され得る。問題の原因が無害である場合、例えば、TCS_INITパケットが二重パケットである場合、前から存在する接続は、データ伝送のために使用され得る。
同様のエラーはまた、TCS_REM_UPパケットがローカルノードによって受信された場合に生じ得る。上述したように、TCS_REM_UPパケットは、ノード記述子および接続識別子の完全な対、すなわち、ローカルノードの対およびリモートノードの対を含む。ローカルノードが、参照されたローカルノード記述子および接続識別子の対に対応する伝送接続構造を有しない場合、それらのノードは同期からずれており、TCS_DOWNパケットは、ステップ514において、接続を終了するために、リモートノードに伝送され得る。TCS_DOWNパケットに応答して、リモートノードは、ステップ524において、参照された伝送受信構造を無効にし得、任意の残りの状態情報などを除去し得る。あるいは、ローカルノードは、リモートノードの、既存の伝送接続構造を有し得る。上述した通常の場合において、ローカルノードの伝送接続構造は、リモートノード記述子を含み得ず、それらの構成要素は、例えば0などの、初期値にセットされ得る。しかしながら、二重パケットまたは再ブートのために、伝送接続構造は、リモートノード記述子および接続識別子の対の値を含み得る。この場合、ローカルノードは、ステップ518において、既存の伝送接続構造を無効にし得、ステップ514において、TCS_DOWNパケットを伝送することによって、接続を取り除き得る。あるいは、エラーの原因が無害であると決定された場合、前から存在する接続は、更新され得、データ伝送のために使用され得る。
接続が確立された後、伝送要求は、例えば、上述したように、ユーザレベルの接続を確立し、そのユーザレベルの接続を介してデータを伝送することによって、ローカルネットワークマネージャ124によって提供され得る。特定のノードのための伝送要求は、ローカルネットワークマネージャによって順に提供され得る。これは、例えば、上述したヘッドポインタおよびテイルポインタを使用し、特定の接続のための伝送要求を待ち行列に入れることによって、達成され得る。伝送要求を待ち行列に入れるための例示的な構造は、表2.0に示される。付け加えて、伝送要求識別子は生成され得、単調に増加するカウンターなどのように、ノードに対して独自であり得る。あるいは、伝送要求識別子は、多数の既存の方法を使用して生成され得る。伝送要求識別子は、例えば、ローカルメディア選択層420によって、生成され得る。上述したように、伝送要求は、任意の長さのバイトのアレイとして扱われ得る。伝送要求識別子をインプリメントすることによって、全てのユーザデータは、通常、伝送要求識別子およびオフセットによって指し示されるバイトの2次元アレイとして扱われる。
Figure 2006338666
ノード間接続を有する二つのノードの間の関係は、3つの方法において特徴付けられ得る。第1に、ノードは、アクティブに通信するユーザレベルプロセスを有し得る。第2に、ノードは、アクティブなユーザレベル接続を有し得るが、現在データを伝送していない。第3に、ユーザレベル接続がノード上のプロセス間に存在し得ない。最初の二つの場合のいずれかにおいて、メディア選択層420は、ノード間接続を保持し得る。しかしながら、3つ目の場合において、メディア選択層420は、ノード間接続を取り除き得、例えば、通信が所定の時間の間、止まる場合、代替的に、または追加的に、接続をタイムアウトする他の既知の方法が使用され得る。
二つ以上のインターフェースがローカルノードとリモートノードとの間に存在する場合、ローカルメディア選択層420はまた、インターフェース、ネットワーク、その他などのプール(pool)を維持することによってなど、多数のインターフェースを介して、データパケットの伝送を管理し得る。そのプールは、動作中または利用可能であるそれらのインターフェースまたはネットワークを含み得るか、または、そのプールは任意のインターフェースまたはネットワークを含み得る。複数のネットワークインターフェースを介して伝送を管理する、一つの例示的な方法は、図6のフローチャートにおいて示される。最初に、メディア選択層420は、ステップ602において、メディア選択優先(preference)を決定し得る。メディア選択優先は、メディア選択層420が接続を介してデータをどのように伝送するかのポリシーを指示する。メディア選択優先は、デバイスのパス名の一部として特定され得る。例えば、パス名である、「/net/lab2〜exclusive:en0/dev/ser1」は、「専用(exclusive)」のメディア選択ポリシーを用いて、「lab2」と名付けられたノード上のシリアルデバイスにアクセスするために使用され得る。必要に応じて、シンボルリンクは、パス名を与えられた様々なメディア選択に作成され得る。代替的に、または追加的に、メディア選択ポリシーは、パス名から分離したコマンドを介して、規定され得る。
図6において示されるように、データは、(1)負荷バランス(loadbalance)ポリシー603、(2)「preferred(優先される)」ポリシー611、(3)「専用(exclusive)」ポリシー619の3つの異なるポリシーに従って伝送され得る。当業者は、様々な追加的なメディア選択ポリシーがインプリメントされ得ることを理解する。例えば、「冗長な(redundant)」メディア選択ポリシーが提供され得、ユーザは多数のインターフェースを介して同時にデータパケットを伝送することができる。
「負荷バランス」ポリシー603によって、ローカルメディア選択層420は、どのネットワークインターフェースまたはトランスポート層インスタンス432および434がそれぞれのパケットにデータを伝送するかを、決定することができる。それぞれのパケットは、リモートノードに最も速くパケットを搬送することができるリンク上にて待ち行列に入り得る。これは、多数のリンクが利用可能(帯域幅は、利用可能なリンクの帯域幅の合計であり得る)であり、リンクが利用可能でなくなるにつれて、サービスが顕著に低下する場合、ノード間のより大きな帯域幅を効果的に提供する。従って、ローカルメディア選択層420は、ステップ604において、最も速いインターフェース432および434を決定し得る。パケットは、次いで、ステップ606において、決定されたインターフェース432および434を介して伝送され得る。エラーが生じた場合、ローカルメディア選択層は、次に最も速いインターフェースを介してパケットを再送信しようと企て得る。付け加えて、ローカルメディア選択層420は、失敗したインターフェースを介して、未来のパケットを送信することを企て得ない。ローカルメディア選択層420は、データが伝送されるまで、ステップ610において、任意の追加的なパケットのために、このプロセスを継続し得る。
「優先」メディア選択ポリシー611によって、ユーザは、利用可能な場合に使用すべき特定のネットワークインターフェースを特定することができる。従って、ローカルメディア選択層420は、ステップ612において、特定のインターフェースを介して、データを伝送することを企て得、追加のパケットを伝送するために、ステップ618において、ループする。インターフェースが、ステップ614において、伝送の間利用可能でなくなる(すなわち、エラーが伝送中に生じる)場合、メディア選択層420は、次いで、データを伝送するために、別のインターフェース432および434を選択し得る。例えば、ローカルメディア選択層420は、デフォルトのメディア選択ポリシーに逆戻りし得る。あるいは、ローカルメディア選択層420は、優先リンクに最も類似するインターフェースを選択し得る。多数の優先インターフェースはまた、特定され得、その結果、メディア選択層420は、第1のインターフェースを介して、利用可能な場合、次いで、第2のインターフェースなどを介して、パケットを伝送することを企て得る。複数の優先は、例えば、リンクの相対的な性能値を設定することによって、特定され得る。相対的な性能値は、例えば、最大帯域幅、平均帯域幅、ネットワークの利用可能性などの、ネットワークの性能特性に基づき得る。図6に示されるように、ローカルメディア選択層420は、ステップ616において、追加的な優先のインターフェースが特定されるかどうかを決定することを企て得る。追加的なインターフェースが特定される場合、伝送は、追加的なインターフェースを介して企てられ得る。追加的なインターフェースが特定されない場合、ローカルメディア選択層420は、例えば、「負荷バランス」ポリシー603などの、デフォルトメディア選択ポリシーに従い、伝送を企て得る。代替的に、または追加的に、ポリシーは組み合わされ得、その結果、メディア選択層420は、複数の「優先」611リンクを介して、伝送を効果的に「負荷バランス」603をし得る。
最後に、「専用」メディア選択優先619によって、ユーザは、特定のリンクへの伝送をロックすることができる。「専用」リンクが利用可能でなくなった場合において、ローカルネットワークマネージャ124は、任意の他のインターフェースを介して、データを伝送することを企て得ない。あるいは、複数の「専用」619のインターフェースは特定され得、その結果、メディア選択層420は、特定のインターフェースに亘ってのみ、情報を伝送し得る。「専用」メディア選択ポリシーは、例えば、膨大なデータを動かすアプリケーションが高帯域幅のインターフェースを要求する場合などに使用され得る。「専用」メディア選択ポリシーを使用して、ユーザは、アプリケーションの要求に見合うそれらのインターフェースのみへの伝送に制限することができ、障害のある状況のもとで、より低い帯域幅のインターフェースに負荷をかけ過ぎることを避けることができる。再び、ポリシーは組み合わされ得、その結果、メディア選択層420は、いくつかの「専用」619のインターフェースを介して、伝送を効果的に「負荷バランス」603をし得る。再び図6を参照すると、ローカルメディア選択層420は、ステップ620において、専用のインターフェースを介して、データパケットを伝送し得る。特定のインターフェースが障害を起こした場合、伝送は任意の追加的なインターフェースを介して企てられない。
この例示的なメディア選択方法をインプリメントするために、ローカルメディア選択層430は、利用可能なインターフェースまたはネットワークのプールを維持し得る。例えば、それぞれのトランスポート層インスタンス432および434は、その関連するインターフェースがダウンした場合に、メディア選択層に通知し得る。メディア選択層430は、次いで、定期的に、それがいつ、再び、適切に機能するかを決定するために、インターフェースにポーリングし得る。例えば、上述のノード記述子および接続識別子の対を含むTCS_UPパケットは、定期的に、利用可能でないインターフェースに亘って伝送され得る。応答において、リモートメディア選択層450は、リンクが再び利用可能であることを確認するために、TCS_REM_UPパケットを伝送し得る。
ローカルメディア選択層420はまた、ローカルトランスポート層430からの性能情報を獲得し得る。この性能情報は、次いで、特定のメディア選択優先に従い、インターフェースを選択するために使用され得る。例えば、それぞれのトランスポート層インスタンス432および434は、静的またはダイナミックな性能情報を含み得る。それぞれのインスタンスは、ハードウェア性能などの、静的な性能情報を維持し得る。例示的なダイナミックな性能情報は、バイトカウント、現在、待ち行列にある伝送要求、および、それらの要求のサイズなどを含み得る。
適切なインターフェースがメディア選択層420によって選択された後、データパケットは、ローカルトランスポート層430によって、リモートトランスポート層460に伝送され得る。ローカルトランスポート層430による例示的なデータ伝送を表すフローチャートは、図7において示される。ステップ702において、伝送要求を受信した後、ローカルトランスポート層430は、ステップ704において、伝送の長さを確認し得る。追加的なパケットが伝送される場合、ローカルトランスポート層は、ステップ706において、そのパケットをリモートノードに伝送し得る。ローカルトランスポート層430は、例えば、バッファを割り当て、それを要求からのデータにパッキングし、および、インターフェースドライバに適切なコールをすることによって、そのパケットを伝送し得る。ローカルトランスポート層430はまた、ノード記述子およびセッション層、またはノード間、接続識別子の対を、それぞれのデータパケットに付加し得る。例示的なパケットデータ領域は、表4.0に示され、パケットに含まれる例示的なメディア選択層情報は、表5.0に含まれる。次に、ローカルトランスポート層430は、残りのデータを伝送するためにループし得る。追加的な情報が伝送されない場合、ローカルトランスポート層430は、ステップ708において、例えば、パケットヘッダにおけるフラグセットによって、伝送の最後のパケットにマークし得、その結果、リモートノードは、その伝送が完了していることを通知され得る。全てのデータが伝送された後、ローカルトランスポート層430は、ステップ710において、受信ノードからの応答を待機し得る。
Figure 2006338666
リモートトランスポート層460による例示的なデータ受信を表すフローチャートが図8に示される。最初に、パケットは、ステップ802において、リモートノード上のデバイスドライバによって受信され、リモートネットワークマネージャ430のリモートトランスポート層460にパスされる。受信されたパケットは、伝送における次のパケットへのポインタ、パケットの長さ、ヘッダおよびデータバッファ、物理アドレスなどを規定する要素を含み得る。受信されたパケットのための例示的なデータ領域は表6.0に示される。必要に応じて、技術的に既知であるエラーチェッキングが、ステップ804において、パケットを有効にするために実行され得る。他の要素は代用され得、または追加され得る。
Figure 2006338666
リモートトランスポート層460は、伝送全体が受信されるまで、パケットを受信することを継続し得る。伝送全体は、次いで、ステップ808において、リモートメディア選択層450にパスされ得、メディア選択サービスを実行するか、または、場合によっては、ユーザデータを、適切な送り先に転送する。従って、リモートトランスポート層460は、ステップ806において、伝送が単一のパケット伝送であるかどうかを決定し得る。接続管理パケットおよび小さなユーザデータ伝送などの、単一のパケット伝送が、ステップ808において、さらなる処理のために、リモートメディア選択層450に直接にパスされ得る。伝送は、パケットのヘッダにおける開始フラグおよび終了フラグの両方を設定することによって、単一のパケット伝送に指定され得る。一般には、伝送は、例えば、受信された伝送の待ち行列に伝送を追加することによって、リモートメディア選択層450にパスされ得る。待ち行列は、例えば、リモートノード記述子の下位のXビットによって指し示される受信されたシーケンス構造のリンクされたリストへのポインタのアレイとして、インプリメントされ得る。受信されたパケット待ち行列構造の例示的なデータ領域は、表7.0において示される。
Figure 2006338666
伝送が多数のパケットを含む場合、リモートトランスポート層は、ステップ810において、伝送を再構成し得る。例えば、伝送は、受信されたシーケンスデータ構造に再構成され得る。例示的な受信されたシーケンス構造は、所定のノード記述子/接続識別子の組み合わせのための、受信されたパケットのリンクされたリストとしてインプリメントされ得る。受信されたシーケンス構造はまた、接続のための独自のノード記述子および接続識別子、物理アドレスなどを規定する要素を含み得る。リモートトランスポート層460は接続識別子を使用し得、受信されたパケットのシーケンス数は、ステップ812において、前から存在する受信されたシーケンス構造を検索するために使用され得る。必要な場合、ステップ814において、新しい受信されたシーケンス構造が割り当てられ、ポインタアレイに追加され、受信されたパケットは、次いで、ステップ816において、受信されたシーケンス構造に挿入される。リモートトランスポート層460は、順々に、すなわち、オフセットの順に、パケットを挿入するために、受信されたシーケンス構造をスキャンし得る。代替的に、または追加的に、パケットは、任意の場所における構造に挿入され得る。
ステップ818において、伝送の最後のパケットを受信すると、ローカルネットワークマネージャ124によって送信されるように、リモートトランスポート層460は、ステップ820において、伝送が完了していることを確かめるために、受信されたシーケンス構造をスキャンし得る。伝送の最後のパケットは、そのパケットのヘッダにおけるフラグを介して、指定され得る。伝送が完了した場合、リモートトランスポート層460は、ステップ824において、首尾良い転送を示すACKパケットを伝送し得る。あるいは、リモートトランスポート層460は、ステップ826において、伝送の一つ以上のパケットが失われたことを示すNACKパケットを伝送し得る。NACXパケットは、失われたパケットを記載する、ホールリスト(hole list)を含み得る。例示的なホールリストは、例えば、伝送シーケンスにおけるオフセットおよび長さで、ホールを記載することによって、伝送におけるホールの全体数、および、リストにおけるそれぞれのホールを規定するデータ構造を含むためにインプリメントされ得る。
再び図7を参照すると、ローカルトランスポート層430は、ステップ710において、伝送の最後のパケットを伝送した後、リモートトランスポート層460からの応答を待機する。ローカルトランスポート層430は、ステップ712において、首尾良い伝送を指示するACKパケットを受信し得る。この場合、ローカルトランスポート層430は、メディア選択層420へ、成功を指示し得る。あるいは、ローカルトランスポート層430は、ステップ714において、失われたパケットを指示するNACKパケットを受信し得る。この場合、参照されたパケットは、ステップ716において、再作成され得、再伝送され得る。ステップ718において、所定の時間の間、応答を受信しない場合、ローカルトランスポート層は、ステップ720において、シーケンスの最後のパケットを再作成し得、再伝送し得、再びステップ722において、応答を待機する。最後のパケットは、その受信されたシーケンスを再スキャンし、ACKまたはNACKパケットを送信するために、リモートノードをトリガし得る。これによって、ローカルノードは、通信機能停止が生じる不完全な伝送を救出することが可能となり、最後のパケットまたは応答パケットのいずれかが失われてしまうことを防ぐ。ステップ724において、反復されるタイムアウトが生じた場合、ローカルトランスポート層430は、ステップ726において、ローカルメディア選択層420に通知し得る。応答において、ローカルメディア選択層420は、利用可能なインターフェースのプールからインターフェースを取り除き得、その未来の利用可能性を決定するために、ポーリングパケットを用いて、インターフェースを定期的にポーリングし得る。例示的なポーリングパケットは、上述されたTCS_UPパケットを含み得る。
本発明の様々な実施形態が記載される一方で、さらなる多くの実施形態および実施が、本発明の範囲内にて可能であることは、当業者にとって明らかである。従って、本発明は、添付された請求の範囲およびその均等物に照らし合わされることを除いて、限定されない。
分散オペレーティングシステムをインプリメントするための、例示的な物理的レイアウトである。 分散オペレーティングシステムのための例示的なメッセージブロック図である。 分散オペレーティングシステムにおいて、ノード間通信を管理する例示的な方法を表す。 分散オペレーティングシステムにおいて、ノード間通信のために使用されるネットワークマネージャの例示的な論理構成を表す。 分散オペレーティングシステムのノード間において、ノード間通信を確立するための例示的な方法を表す。 分散オペレーティングシステムにおいて、多数のネットワークインターフェースを介した送信を管理する方法のための、例示的な方法を表す。 分散オペレーティングシステムにおいて、ローカルノードからデータを送信するための例示的な方法を表す。 分散オペレーティングシステムにおいて、リモートノードにてデータを受信するための例示的な方法を表す。
符号の説明
110 ローカルコンピュータシステム
112 リモートコンピュータシステム
118 ローカルメッセージパッシングオペレーティングシステム
120、122 ローカルサーバ
128 リモートサーバ
140 通信ネットワーク

Claims (34)

  1. 分散オペレーティングシステムのノード間の接続を確立する方法であって、
    ローカルノードによって、リモートノードに対する伝送要求を生成することと、
    該ローカルノードによって、初期パケットを該リモートノードに伝送することであって、該初期パケットが、
    該リモートノードを示すローカルノード記述子と、
    ローカル接続識別子と
    を含む、ことと、
    該リモートノードによって、該初期パケットを受信することと、
    該リモートノードによって、該ローカルノード記述子に関連する受信接続構造を生成することと、
    該初期パケットの受信に応答して、該伝送接続を確立するために、該ローカルノードに、確認パケットを伝送することであって、該確認パケットが、
    該ローカルノード記述子と、
    該ローカル接続識別子と、
    該ローカルノードを示すリモートノード記述子と、
    リモート接続識別子と
    を含む、ことと、
    該ローカルノードによって、該確認パケットを受信することと
    を包含する、方法。
  2. 前記ローカル接続識別子および前記リモート接続識別子が、単調に増加するカウンターを含む、請求項1に記載の方法。
  3. 前記ローカルノードが、
    前記リモートノードに対する複数の伝送要求を生成するステップと、
    該複数の伝送要求を順々に提供するステップと
    を実行することをさらに包含する、請求項1に記載の方法。
  4. 前記ローカルノードが、
    前記ローカルノード記述子および前記ローカル接続識別子を格納することが可能な伝送接続構造を生成するステップを
    実行することをさらに包含する、請求項1に記載の方法。
  5. 前記ローカルノードによって、前記複数の伝送要求の待ち行列を生成することと、
    前記伝送接続構造に伝送要求の該待ち行列を格納することと
    をさらに包含する、請求項4に記載の方法。
  6. 閾値期間の満了の後、前記リモートノードをポーリングすることをさらに包含する、請求項1に記載の方法。
  7. 該ポーリングへの応答が受信されない場合、前記伝送接続を無効にすることをさらに包含する、請求項6に記載の方法。
  8. 前記受信接続構造が、前記ローカルノード記述子、前記ローカル接続識別子、前記リモートノード記述子、および前記リモート接続識別子を格納することが可能である、請求項1に記載の方法。
  9. コンピュータ可読媒体上において具体化される分散オペレーティングシステムであって、
    ローカルプロセッサ上で走るローカルスレッドを含むローカルノードであって、メッセージをパスし、メッセージを受信するように動作可能である、ローカルノードと、
    複数のネットワークを介して、該ローカルノードと通信するリモートノードであって、該リモートノードが、リモートプロセッサ上で走るリモートスレッドを含み、メッセージをパスし、メッセージを受信するように動作可能である、リモートノードと
    を備え、
    該ローカルノードが、
    該ローカルスレッドから伝送要求を受信することに応答して、該リモートノードとのノード間接続を確立するようにさらに動作可能であって、該ノード間接続がローカル接続識別子およびリモート接続識別子に関連され、該ローカル接続識別子が該ローカルノードに関連され、該リモート接続識別子が該リモートノードに関連され、
    該複数のネットワークインターフェースを介して、該ローカルノードから該リモートノードへパスするメッセージを管理するように、および、
    該リモートノードからメッセージを受信し、該ローカルスレッドへ該メッセージを転送するように
    さらに動作可能であり、
    該リモートノードが、
    該ローカルノードとの該ノード間接続を確立するように、および、
    該ローカルノードからメッセージを受信し、該リモートスレッドへメッセージを転送するように
    さらに動作可能である、分散オペレーティングシステム。
  10. 前記ローカル接続識別子および前記リモート接続識別子が、単調に増加するカウンターを含む、請求項9に記載のオペレーティングシステム。
  11. 前記ローカルノードが、
    前記リモートノードに対して、複数の伝送要求を生成するように、および、
    該複数の伝送要求を順々に提供するように
    さらに動作可能である、請求項9に記載のオペレーティングシステム。
  12. 前記ローカルノードが、
    前記ローカル接続識別子を格納することが可能な伝送接続構造を生成するように
    さらに動作可能である、請求項9に記載のオペレーティングシステム。
  13. 前記ローカルノードが、
    前記複数の伝送要求の待ち行列を生成するように、および、
    前記伝送接続構造内に、伝送要求の該待ち行列を格納するように
    さらに動作可能である、請求項12に記載のオペレーティングシステム。
  14. 前記ローカルノードが、閾値期間の満了の後、前記リモートノードをポーリングするようにさらに動作可能である、請求項9に記載のオペレーティングシステム。
  15. 前記ローカルノードが、該ポーリングへの応答が受信されない場合、前記ノード間接続を無効にするようにさらに動作可能である、請求項14に記載のオペレーティングシステム。
  16. 前記リモートノードが、前記ローカル接続識別子および前記リモート接続識別子を格納することが可能である受信接続構造を生成するようにさらに動作可能である、請求項9に記載のオペレーティングシステム。
  17. 前記ノード間接続が、前記ローカルノードから前記リモートノードへ初期パケットを伝送することによって確立され、該初期パケットが前記ローカル接続識別子を含む、請求項9に記載のオペレーティングシステム。
  18. 前記ノード間接続が、前記初期パケットに応答して、前記リモートノードから前記ローカルノードへ確認パケットを伝送することによって確立され、該確認パケットが前記リモート接続識別子を含む、請求項17に記載のオペレーティングシステム。
  19. コンピュータ可読媒体上において具体化される分散オペレーティングシステムであって、
    ローカルプロセッサ上で走るローカルスレッドを含むローカルノードであって、ローカルノードからメッセージをパスし、ローカルノードにおいてメッセージを受信するように動作可能である、ローカルノードと、
    複数のネットワークインターフェースを介して、該ローカルノードと通信するリモートノードであって、該リモートノードが、リモートプロセッサ上で走るリモートスレッドを含み、該リモートノードからメッセージをパスし、該リモートノードにおいてメッセージを受信するように動作可能である、リモートノードと
    を備え、
    該ローカルノードは、
    該ローカルスレッドから伝送要求を受信することに応答して、該リモートノードとのノード間接続を確立するように、
    該複数のネットワークインターフェースを介して、該ローカルノードから該リモートノードへパスするメッセージを管理するように、および、
    該リモートノードからメッセージを受信し、該ローカルスレッドへ該メッセージを転送するように
    さらに動作可能であり、
    該リモートノードは、
    該ローカルノードとの該ノード間接続を確立するように、および
    該ローカルノードからメッセージを受信し、該リモートスレッドへメッセージを転送するように
    さらに動作可能であり、
    該ノード間接続は、
    ローカルノードによって、リモートノードに対して伝送要求を生成し、該ローカルノードによって、初期パケットを、該リモートノードに伝送することであって、該初期パケットが、
    該リモートノードを示すローカルノード記述子と、
    ローカル接続識別子と
    を含む、ことと、
    該リモートノードによって、該初期パケットを受信することと、
    該リモートノードによって、該ローカルノード記述子に関連する受信接続構造を生成することと、
    該リモートノードによって、および、該初期パケットの受信に応答して、該伝送接続を確立するために、該ローカルノードに、確認パケットを伝送することであって、該確認パケットが、
    該ローカルノード記述子と、
    該ローカル接続識別子と、
    該ローカルノードを示すリモートノード記述子と、
    リモート接続識別子と
    を含む、ことと、
    該ローカルノードによって、該確認パケットを受信することと
    を包含する、
    分散オペレーティングシステム。
  20. 前記ローカル接続識別子および前記リモート接続識別子が、単調に増加するカウンターを含む、請求項19に記載のオペレーティングシステム。
  21. 前記ローカルノードが、
    前記リモートノードに対して、複数の伝送要求を生成するように、および、
    該複数の伝送要求を順々に提供するように
    さらに動作可能である、請求項19に記載のオペレーティングシステム。
  22. 前記ローカルノードが、
    前記ローカルノード記述子および前記ローカル接続識別子を格納することが可能な伝送接続構造を生成するように
    さらに動作可能である、請求項19に記載のオペレーティングシステム。
  23. 前記ローカルノードが、
    該ローカルノードによって、前記複数の伝送要求の待ち行列を生成するように、および、
    前記伝送接続構造において、伝送要求の該待ち行列を格納するように
    さらに動作可能である、請求項22に記載のオペレーティングシステム。
  24. 前記ローカルノードが、閾値期間の満了の後、前記リモートノードをポーリングするようにさらに動作可能である、請求項19に記載のオペレーティングシステム。
  25. 前記ローカルノードが、該ポーリングへの応答が受信されない場合、前記ノード間接続を無効にするようにさらに動作可能である、請求項24に記載のオペレーティングシステム。
  26. 前記受信接続構造が、前記ローカルノード記述子、前記ローカル接続識別子、前記リモートノード記述子、および前記リモート接続識別子を格納することが可能である、請求項19に記載の方法。
  27. 分散メッセージパッシングオペレーティングシステムのノード間の通信を管理する方法であって、該方法は、
    ローカルノードにおいて、リモートノードへデータを伝送するために、伝送要求を生成することであって、該ローカルノードおよび該リモートノードが、第1のインターフェースおよび第2のインターフェースの両方を介して通信することが可能である、ことと、
    該ローカルノードとリモートノードとの間の接続を確立することであって、該接続がローカル接続識別子およびリモート接続識別子に関連され、該ローカル接続識別子が該ローカルノードに関連され、該リモート接続識別子が該リモートノードに関連される、ことと、
    該接続を介してデータを伝送することと、
    該ローカルノードによって、および、該データを伝送した後、該第1のインターフェースおよび第2のインターフェースの両方を介して、ポーリングパケットを該リモートノードに伝送することであって、該ポーリングパケットが該ローカル接続識別子および該リモート接続識別子を含む、ことと、
    該ポーリングパケットへの応答が受信されたことに基づいて、該第1および第2のインターフェースが動作するかどうかを決定することと
    を包含する、方法。
  28. 前記ローカル接続識別子および前記リモート接続識別子が、単調に増加するカウンターを含む、請求項27に記載の方法。
  29. 前記ローカルノードが、
    前記リモートノードに対する、複数の伝送要求を生成するステップと、
    該複数の伝送要求を順々に提供するステップと
    を実行することをさらに包含する、請求項27に記載の方法。
  30. 前記ローカルノードが、
    前記ローカルノード記述子および前記ローカル接続識別子を格納することが可能な伝送接続構造を生成するステップを
    実行することを包含する、請求項27に記載の方法。
  31. 前記ローカルノードによって、前記複数の伝送要求の待ち行列を生成することと、
    前記伝送接続構造に伝送要求の該待ち行列を格納することと
    をさらに包含する、請求項30に記載の方法。
  32. 閾値期間の満了の後、前記リモートノードをポーリングすることをさらに包含する、請求項27に記載の方法。
  33. 該ポーリングへの応答が受信されない場合、前記伝送接続を無効にすることをさらに包含する、請求項32に記載の方法。
  34. 受信接続構造が、前記ローカルノード記述子、前記ローカル接続識別子、前記リモートノード記述子、および前記リモート接続識別子を格納することが可能である、請求項27に記載の方法。
JP2006148467A 2005-06-03 2006-05-29 分散カーネルオペレーティングシステム Withdrawn JP2006338666A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/145,293 US7840682B2 (en) 2005-06-03 2005-06-03 Distributed kernel operating system

Publications (1)

Publication Number Publication Date
JP2006338666A true JP2006338666A (ja) 2006-12-14

Family

ID=36981169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006148467A Withdrawn JP2006338666A (ja) 2005-06-03 2006-05-29 分散カーネルオペレーティングシステム

Country Status (6)

Country Link
US (3) US7840682B2 (ja)
EP (1) EP1729481A3 (ja)
JP (1) JP2006338666A (ja)
KR (1) KR101365838B1 (ja)
CN (1) CN1881945B (ja)
CA (1) CA2547880C (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
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
WO2007023010A2 (en) * 2005-08-25 2007-03-01 International Business Machines Corporation Method and system for displaying performance constraints in a flow design tool
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US8176525B2 (en) * 2006-09-29 2012-05-08 Rockstar Bidco, L.P. Method and system for trusted contextual communications
US8509081B2 (en) * 2008-05-01 2013-08-13 Saudi Arabian Oil Company Adaptive hybrid wireless and wired process control system and method
CN101621405B (zh) * 2009-07-07 2012-02-29 中兴通讯股份有限公司 分布式管理监控***及其监控方法、创建方法
US8881256B1 (en) * 2011-12-21 2014-11-04 Amazon Technologies, Inc. Portable access to auditing information
GB2502277B (en) * 2012-05-21 2015-07-08 Rosberg System As Data communication network
US10073987B2 (en) 2013-04-02 2018-09-11 Western Digital Technologies, Inc. Methods and systems for privileged execution support for file system commands on a storage device
US9716716B2 (en) * 2014-09-17 2017-07-25 Microsoft Technology Licensing, Llc Establishing trust between two devices
KR102284467B1 (ko) * 2014-12-22 2021-08-03 인텔 코포레이션 네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법
US10819759B2 (en) * 2015-04-30 2020-10-27 At&T Intellectual Property I, L.P. Apparatus and method for managing events in a computer supported collaborative work environment
US11006160B2 (en) * 2015-08-24 2021-05-11 Microsoft Technology Licensing, Llc Event prediction enhancements
CN107733945B (zh) * 2016-08-11 2019-03-12 北京百度网讯科技有限公司 用于机器人操作***的信息传输方法及装置
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US11316775B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US10742359B2 (en) * 2018-08-30 2020-08-11 Dell Products, L.P. Apparatus and method for improving messaging system reliability
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
US10785346B1 (en) * 2019-04-08 2020-09-22 2236008 Ontario Inc. Unblocking processes in interprocess messaging passing
US11632326B1 (en) * 2021-06-15 2023-04-18 Amazon Technologies, Inc. Selection of network paths for reliable communications based on network reliability metrics

Family Cites Families (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5253342A (en) 1989-01-18 1993-10-12 International Business Machines Corporation Intermachine communication services
DE69129443T2 (de) 1990-12-14 1999-01-14 Sun Microsystems Inc Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung
US5442785A (en) 1991-10-08 1995-08-15 Unisys Corporation Method and apparatus for passing messages between application programs on host processors coupled to a record lock processor
US5428803A (en) 1992-07-10 1995-06-27 Cray Research, Inc. Method and apparatus for a unified parallel processing architecture
US5410709A (en) 1992-12-17 1995-04-25 Bull Hn Information System Inc. Mechanism for rerouting and dispatching interrupts in a hybrid system environment
US6157961A (en) 1992-12-21 2000-12-05 Sun Microsystems, Inc. Client-side stub interpreter
DE69327448T2 (de) 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US5566302A (en) 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
DE69429686T2 (de) 1993-02-25 2003-04-30 Sun Microsystems Inc Transaktionsverwaltung in objektorientiertem System
EP0622731A3 (en) 1993-04-26 1995-02-15 Ibm Boot architecture for micro-core based systems.
US5652885A (en) 1993-05-25 1997-07-29 Storage Technology Corporation Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control
GB9323241D0 (en) 1993-11-11 1994-01-05 Int Computers Ltd Message handler
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
AU1747395A (en) 1994-03-30 1995-10-23 Apple Computer, Inc. Object oriented message passing system and method
JPH08180001A (ja) 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
US5574903A (en) 1994-05-13 1996-11-12 Apple Computer, Inc. Method and apparatus for handling request regarding information stored in a file system
US5566337A (en) 1994-05-13 1996-10-15 Apple Computer, Inc. Method and apparatus for distributing events in an operating system
US5734903A (en) 1994-05-13 1998-03-31 Apple Computer, Inc. System and method for object oriented message filtering
JP2507235B2 (ja) * 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション クライアント・サ―バ・コンピュ―タ・システム、及びそのクライアント・コンピュ―タ、サ―バ・コンピュ―タ、並びにオブジェクト更新方法
DE69530731D1 (de) * 1994-07-22 2003-06-18 Sun Microsystems Inc Verfahren und Gerät für Speicherplatzeffiziente Kommunikation zwischen Prozessen
US5745759A (en) 1994-10-14 1998-04-28 Qnx Software Systems, Ltd. Window kernel
US5617568A (en) * 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5644719A (en) 1994-12-16 1997-07-01 Unisys Corporation Interprocess communication apparatus interposed between application processes and the operating systems of hosting computers in a system of networked computers
US5634068A (en) 1995-03-31 1997-05-27 Sun Microsystems, Inc. Packet switched cache coherent multiprocessor system
US5768511A (en) * 1995-09-18 1998-06-16 International Business Machines Corporation Method and system for managing objects in networked computer system with action performed in the server and object updated in the client
US6047323A (en) 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5802288A (en) 1995-10-26 1998-09-01 International Business Machines Corporation Integrated communications for pipelined computers
KR0170500B1 (ko) 1995-11-18 1999-03-30 양승택 멀티프로세서 시스템
US6064671A (en) 1995-12-08 2000-05-16 Killian; Michael G. Multi-homed end system for increasing computers network bandwidth
US5694600A (en) 1996-02-09 1997-12-02 Iomega Corporation Methods and apparatus for booting a computer having a removable media disk drive
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6049838A (en) 1996-07-01 2000-04-11 Sun Microsystems, Inc. Persistent distributed capabilities
US5918019A (en) * 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
US6061740A (en) * 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US6434459B2 (en) 1996-12-16 2002-08-13 Microsoft Corporation Automobile information system
US6226689B1 (en) * 1997-01-29 2001-05-01 Microsoft Corporation Method and mechanism for interprocess communication using client and server listening threads
US5978912A (en) 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US6006283A (en) * 1998-02-10 1999-12-21 Lsi Logic Corporation System and method for managing information exchanges in a disk interface chip
JPH11249898A (ja) 1998-03-04 1999-09-17 Sony Corp データ処理方法、記録媒体及びデータ処理装置
JPH11249918A (ja) 1998-03-04 1999-09-17 Sony Corp データ処理方法、記録媒体及びデータ処理装置
US6167430A (en) 1998-05-12 2000-12-26 Unisys Corporation Multicomputer with distributed directory and operating system
US6647423B2 (en) 1998-06-16 2003-11-11 Intel Corporation Direct message transfer between distributed processes
KR20000008628A (ko) 1998-07-15 2000-02-07 구자홍 컴퓨터 시스템의 부팅음악 출력방법
US6385659B1 (en) 1998-08-19 2002-05-07 International Business Machines Corporation Handling of asynchronous message packet in a multi-node threaded computing environment
US6412018B1 (en) 1998-08-19 2002-06-25 International Business Machines Corporation System for handling asynchronous message packet in a multi-node threaded computing environment
US6415332B1 (en) 1998-08-19 2002-07-02 International Business Machines Corporation Method for handling of asynchronous message packet in a multi-node threaded computing environment
CA2245963C (en) 1998-08-26 2009-10-27 Qnx Software Systems Ltd. Distributed kernel operating system
US6466996B1 (en) 1998-09-14 2002-10-15 Compaq Information Technologies Group, L.P. Method and system for implementing intelligent distributed input-output processing as a software process in a host operating system environment
US6321279B1 (en) 1998-09-14 2001-11-20 Compaq Computer Corporation System for implementing intelligent I/O processing in a multi-processor system by redirecting I/O messages to a target central processor selected from the multi-processor system
EP1123622B1 (de) 1998-10-19 2007-01-24 Siemens Aktiengesellschaft Verfahren zur steuerung von netzelementen
US6519594B1 (en) 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6389462B1 (en) 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6272629B1 (en) 1998-12-29 2001-08-07 Intel Corporation Method and apparatus for establishing network connection for a processor without an operating system boot
US6353885B1 (en) 1999-01-26 2002-03-05 Dell Usa, L.P. System and method for providing bios-level user configuration of a computer system
US6748452B1 (en) 1999-03-26 2004-06-08 International Business Machines Corporation Flexible interprocess communication via redirection
US6757903B1 (en) 1999-04-05 2004-06-29 Gateway, Inc. Object driven software architecture method and apparatus
US6487455B1 (en) 1999-09-30 2002-11-26 Rockwell Automation Technologies, Inc. Distributed real time operating system
US6259264B1 (en) * 1999-08-30 2001-07-10 Agere Systems Optoelectronics Guardian Corp. Apparatus and method for testing semiconductor laser chips
US6731601B1 (en) * 1999-09-09 2004-05-04 Advanced Micro Devices, Inc. Apparatus and method for resetting a retry counter in a network switch port in response to exerting backpressure
EP1912124B8 (en) 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
US20020161848A1 (en) 2000-03-03 2002-10-31 Willman Charles A. Systems and methods for facilitating memory access in information management environments
US6757904B1 (en) 2000-03-10 2004-06-29 Microsoft Corporation Flexible interface for communicating between operating systems
US6757242B1 (en) * 2000-03-30 2004-06-29 Intel Corporation System and multi-thread method to manage a fault tolerant computer switching cluster using a spanning tree
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6807564B1 (en) * 2000-06-02 2004-10-19 Bellsouth Intellectual Property Corporation Panic button IP device
US6785892B1 (en) 2000-06-23 2004-08-31 Unisys Communications between partitioned host processors and management processor
US6981055B1 (en) 2000-08-22 2005-12-27 Internap Network Services Corporation Method and system for optimizing routing through multiple available internet route providers
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6981244B1 (en) 2000-09-08 2005-12-27 Cisco Technology, Inc. System and method for inheriting memory management policies in a data processing systems
US7133929B1 (en) 2000-10-24 2006-11-07 Intel Corporation System and method for providing detailed path information to clients
KR100471055B1 (ko) 2000-11-17 2005-03-07 삼성전자주식회사 컴퓨터 및 그 제어방법
US7058955B2 (en) 2000-12-06 2006-06-06 Microsoft Corporation Method and system for passing messages between threads
US7051326B2 (en) 2000-12-13 2006-05-23 International Business Machines Corporation Code image distribution in a multi-node network of processors
US6801994B2 (en) 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
US6775235B2 (en) 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US6988140B2 (en) 2001-02-23 2006-01-17 Sun Microsystems, Inc. Mechanism for servicing connections by disassociating processing resources from idle connections and monitoring the idle connections for activity
US20020129172A1 (en) 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US6886031B2 (en) 2001-03-29 2005-04-26 Sun Microsystems, Inc. Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs
US7243160B2 (en) 2001-05-10 2007-07-10 Intel Corporation Method for determining multiple paths between ports in a switched fabric
US7161939B2 (en) * 2001-06-29 2007-01-09 Ip Unity Method and system for switching among independent packetized audio streams
US6947417B2 (en) * 2001-06-29 2005-09-20 Ip Unity Method and system for providing media services
WO2003017601A1 (en) * 2001-08-18 2003-02-27 Smallbig Technology Inc. An apparatus connected multi ip broadband line and packet routing method thereof
GB2379039B (en) 2001-08-22 2005-03-23 Ibm Transaction processing in a distributed data processing system
US7016348B2 (en) * 2001-08-28 2006-03-21 Ip Unity Method and system for direct access to web content via a telephone
US6978018B2 (en) 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment
US20030115366A1 (en) 2001-12-18 2003-06-19 Robinson Brian R. Asynchronous message delivery system and method
US6993746B2 (en) 2002-04-19 2006-01-31 Wind River Systems, Inc. Configuration tool for building a user application for multiple operating systems
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
US7058717B2 (en) 2002-07-25 2006-06-06 International Business Machines Corporation Method and system for providing highly available services based on a load balancing policy and a reusable connection context object
US7219149B2 (en) 2003-06-12 2007-05-15 Dw Holdings, Inc. Versatile terminal adapter and network for transaction processing
US20040133668A1 (en) 2002-09-12 2004-07-08 Broadcom Corporation Seamlessly networked end user device
US7103745B2 (en) 2002-10-17 2006-09-05 Wind River Systems, Inc. Two-level operating system architecture
US7124211B2 (en) 2002-10-23 2006-10-17 Src Computers, Inc. System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system
TW588284B (en) 2002-11-12 2004-05-21 Mitac Technology Corp Computer real-time power-on system and method
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US20040143696A1 (en) 2003-01-21 2004-07-22 Francis Hsieh Data storage system for fast booting of computer
JP3861828B2 (ja) 2003-02-26 2006-12-27 カシオ計算機株式会社 カメラ装置、及びカメラ装置の起動方法、プログラム
AU2004217278B2 (en) 2003-03-05 2011-03-17 Websense Uk Limited Asynchronous mechanism and message pool
US20040216135A1 (en) 2003-04-23 2004-10-28 Heimbeck Reid D. Selective user input notification for multiple applications
US7724671B2 (en) * 2003-05-13 2010-05-25 Intel-Tel, Inc. Architecture for resource management in a telecommunications network
US7475233B2 (en) 2003-05-20 2009-01-06 Intel Corporation Method and apparatus for displaying a language specific text string in a pre-boot environment
JP3906825B2 (ja) 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
US6959264B2 (en) 2003-09-30 2005-10-25 International Business Machines Corporation Autonomous computing probe agent
US7174447B2 (en) 2003-11-14 2007-02-06 Intel Corporation Providing a pre-boot driver for use during operating system runtime of a computer system
US8065280B2 (en) 2003-12-17 2011-11-22 International Business Machines Corporation Method, system and computer program product for real-time data integrity verification
US7266727B2 (en) 2004-03-18 2007-09-04 International Business Machines Corporation Computer boot operation utilizing targeted boot diagnostics
US20050268300A1 (en) 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
KR100654433B1 (ko) 2004-05-18 2006-12-06 삼성전자주식회사 무선 네트워크의 정보 처리 장치 및 방법
US7240137B2 (en) 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
US20060095724A1 (en) 2004-10-28 2006-05-04 Microsoft Corporation Message-passing processor
US7343454B2 (en) 2004-11-16 2008-03-11 International Business Machines Corporation Methods to maintain triangle ordering of coherence messages
US7512957B2 (en) 2004-12-03 2009-03-31 Microsoft Corporation Interface infrastructure for creating and interacting with web services
US7549151B2 (en) 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7590839B2 (en) 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US20060227703A1 (en) 2005-04-08 2006-10-12 Wen-Chi Hung Operating method for dynamic physical network layer monitoring
US7356628B2 (en) 2005-05-13 2008-04-08 Freescale Semiconductor, Inc. Packet switch with multiple addressable components
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
US7461247B2 (en) 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US7680096B2 (en) 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network

Also Published As

Publication number Publication date
US7840682B2 (en) 2010-11-23
US8386586B2 (en) 2013-02-26
CA2547880C (en) 2016-10-25
KR20060126374A (ko) 2006-12-07
US8078716B2 (en) 2011-12-13
EP1729481A3 (en) 2007-09-19
US20060277285A1 (en) 2006-12-07
KR101365838B1 (ko) 2014-02-21
CN1881945B (zh) 2012-07-04
CN1881945A (zh) 2006-12-20
CA2547880A1 (en) 2006-12-03
US20120179777A1 (en) 2012-07-12
EP1729481A2 (en) 2006-12-06
US20110035502A1 (en) 2011-02-10

Similar Documents

Publication Publication Date Title
JP2006338666A (ja) 分散カーネルオペレーティングシステム
JP2006340354A (ja) 分散カーネルオペレーティングシステム
US10341196B2 (en) Reliably updating a messaging system
US7676580B2 (en) Message delivery with configurable assurances and features between two endpoints
US7693952B2 (en) Availability and scalability in a messaging system in a manner transparent to the application
JP4696089B2 (ja) 分散ストレージシステム
US20060184672A1 (en) Communication channels in a storage network
US9210073B2 (en) System and method for message routing in a network
NO331943B1 (no) Tilgjengelighet og skalerbarhet i et meldingssystem pa en mate som er transparent for applikasjonen.

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20090804