(57)【要約】  通信を行うように構成されているコンピュータシステムであって、プロセッサと、プロセッサ上で実行されている第１のオペレーティングシステムと、プロセッサ上で実行されている第２のオペレーティングシステムと、パケットデータを伝達するネットワークインタフェースと、を備えているコンピュータシステムにおいて、第１のオペレーティングシステムと第２のオペレーティングシステムとがネットワークインタフェースへのアクセスを共有するようにされていることを特徴とする、コンピュータシステム。【選択図】  図２
2007500381.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１０２）と、
前記プロセッサ（１０２）上で実行されている第１のオペレーティングシステム（２０１）と、
前記プロセッサ（１０２）上で実行されている第２のオペレーティングシステム（２０２）と、
データを伝達するネットワークインタフェース（１１８）と、
を備えている、通信を行うように構成されているコンピュータシステムであって、
前記第１のオペレーティングシステムと前記第２のオペレーティングシステムとが前記ネットワークインタフェース（１１８）の使用を共有するようにされている、コンピュータシステムにおいて、
前記ネットワークインタフェースが、両方のオペレーティングシステムに共通の、ネットワーク論理アドレスの１つのセットを使用して動作することを特徴とする、コンピュータシステム。
【請求項２】
前記第１のオペレーティングシステム（２０１）がリアルタイムオペレーティングシステムである、請求項１に記載のシステム。
【請求項３】
前記第２のオペレーティングシステム（２０２）が汎用オペレーティングシステムである、請求項１に記載のシステム。
【請求項４】
前記第１のオペレーティングシステムに関連付けられているコード（２０５）が、入力されるパケットすべてを受信し、前記第１のオペレーティングシステム（２０１）又はその上で実行されているアプリケーション（２０７）による使用を目的としていないパケットを、前記第２のオペレーティングシステム（２０２）に転送するようにされている、請求項１に記載のシステム。
【請求項５】
前記第１のオペレーティングシステム及び前記第２のオペレーティングシステム（２０１，２０２）からの送出データパケットを、前記ネットワークインタフェース（１１８）を通じて送信されるように選択的に転送するようにされている送信スケジューラ（２５８）、を備えている、請求項１に記載のシステム。
【請求項６】
前記送信スケジューラ（２５８）が前記第１のオペレーティングシステム（２０１）を優先するようにされている、請求項５に記載のシステム。
【請求項７】
前記送信スケジューラ（２５８）が、前記第１のオペレーティングシステム（２０１）から送信するパケットが存在しているときには前記第２のオペレーティングシステム（２０２）からのパケットを送信しないようにされている、請求項５に記載のシステム。
【請求項８】
インターネットプロトコルを使用して通信するようにされている、請求項１に記載のシステム。
【請求項９】
前記第１のオペレーティングシステムが、ＵＤＰデータグラムを処理するＵＤＰ／ＩＰスタック（２０５）を備えている、請求項１に記載のシステム。
【請求項１０】
前記第２のオペレーティングシステムがＴＣＰ／ＩＰプロトコルスタック（２０６）を備えている、請求項８に記載のシステム。
【請求項１１】
前記第１のオペレーティングシステム及び前記第２のオペレーティングシステム（２０１，２０２）の両方が１つのプロセッサ（１０２）上で動作している、請求項１に記載のシステム。
【請求項１２】
前記第１のオペレーティングシステム及び前記第２のオペレーティングシステム（２０１，２０２）、若しくはそれらの上で実行されているアプリケーション（２０７，２０８）、又はその両方の間でメッセージを伝えるオペレーティングシステム間通信チャネル（２６０）、を備えている、請求項１１に記載のシステム。
【請求項１３】
前記第１のオペレーティングシステム（２０１）がアドレスポートの第１のサブセットを有し、前記第２のオペレーティングシステム（２０２）がアドレスポートの第２のサブセットを有し、前記サブセットのそれぞれが少なくとも１つのアドレスポートを有し、前記第１のサブセットと前記第２のサブセットとが相互に排他的である、請求項１に記載のシステム。
【請求項１４】
前記第２のオペレーティングシステム（２０２）が、ユーザが前記ネットワークインタフェース（１１８）を構成することのできるコマンドを提供する、請求項１に記載のシステム。
【請求項１５】
データと、それに関連付けられる制御信号若しくは監視信号、又はその両方とを伝達するリアルタイムデータ送信チャネルを提供するコード、を備えている、請求項１に記載のシステムであって、前記コードが、
前記第１のオペレーティングシステムの元で動作する、前記データを伝達する第１のコードと、
前記第２のオペレーティングシステムの元で動作する、前記制御信号若しくは前記監視信号、又はその両方を伝達する第２のコードと、
を備えている、システム。
【請求項１６】
前記第１のオペレーティングシステムが、ＵＤＰ／ＩＰプロトコルスタックを使用して前記データを伝達するようにされている、請求項１５に記載のシステム。
【請求項１７】
第１のオペレーティングシステム及び第２のオペレーティングシステム（２０１，２０２）を同時に実行するコンピュータ（１００）を備えているボイスオーバーインターネット通信システムであって、前記第１のオペレーティングシステム（２０１）がリアルタイムオペレーティングシステムであり、前記第２のオペレーティングシステム（２０２）が汎用オペレーティングシステムであり、前記第１のオペレーティングシステム（２０１）が、共通のＩＰアドレスを共有する第１のＴＣＰ／ＩＰスタックを使用して音声データを伝達するようにされており、前記第２のオペレーティングシステム（２０１）が、共通のＩＰアドレスを共有する第２のＴＣＰ／ＩＰスタックを使用してシグナリング若しくは監視データ、又はその両方を伝達するようにされている、ボイスオーバーインターネット通信システム。
【請求項１８】
コンピュータへのネットワークアクセスを提供する方法であって、
前記コンピュータ上で同時に動作する第１のオペレーティングシステムと第２のオペレーティングシステムとを提供するステップ、を含んでいる方法において、
論理ネットワークアドレスを共有することと、前記複数のオペレーティングシステムが前記コンピュータのネットワークインタフェースへのアクセスを共有することができることとを特徴とする、方法。
【請求項１９】
請求項１８の方法をコンピュータ（１００）に実行させるコードを備えている、コンピュータプログラム製品。
【請求項２０】
プロセッサ（１０２）と、
前記プロセッサ上で実行されている第１のオペレーティングシステムと、
前記プロセッサ上で実行されている第２のオペレーティングシステムと、
データを伝達するネットワークインタフェース（１１８）と、
を備えている、通信を行うように構成されているコンピュータシステムにおいて、
前記第１のオペレーティングシステムと前記第２のオペレーティングシステムとが前記ネットワークインタフェースの使用を共有するようにされていることを特徴とする、コンピュータシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本発明は、複数のオペレーティングシステムを実行するようにされているコンピュータからのネットワーキングに関する。従来のコンピュータには、コンピュータをネットワークに結合するネットワークインタフェースカード（ＮＩＣ）が設けられている。ＮＩＣは、データをネットワークプロトコルに従ってネットワークを通じて伝達するようにされており、例えば、ＮＩＣはイーサネットネットワークインタフェースカードとすることができる。コンピュータは、ネットワーク上の物理アドレス（ＭＡＣアドレス）を有する。
【０００２】
コンピュータは、オペレーティングシステムを実行し、オペレーティングシステムは、アプリケーションプログラムがコンピュータのリソース（ＮＩＣを含む）を使用することができるようにするアプリケーションプログラミングインタフェース（ＡＰＩ）を提供する。これを達成するため、オペレーティングシステムは、特定のコンピュータプラットフォームのリソースを直接制御するドライバルーチン（通常は個別のプログラム）を提供する。多くのオペレーティングシステムは、インターネットプロトコル（「ＩＰ」）を使用して通信するためのルーチン（すなわちＩＰスタック）を提供する。インターネットプロトコルを使用する場合、コンピュータは複数のネットワークを通じて通信することができる。コンピュータには、ＩＰアドレス（物理ＭＡＣアドレスとは別の論理アドレス）が割り当てられる。
【０００３】
最もよく知られているオペレーティングシステム（例：Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標））は、広範なプラットフォーム上で（適切なドライバプログラムを使用して）広範なアプリケーションを実行するのに適している「汎用」オペレーティングシステムである。更に、このようなオペレーティングシステムでは、しばしばマルチタスキングが提供され、言い換えれば、このようなオペレーティングシステムでは、いくつかのアプリケーションプログラムを同時に動作させることができる。これを行うため、このようなオペレーティングシステムでは、スケジューリング機能が提供され、言い換えれば、異なるアプリケーションプログラムの間でコンピュータのリソースの使用が共有され、各アプリケーションプログラムにはスケジューリングアルゴリズムに従って時間が割り当てられる。
【０００４】
このようなオペレーティングシステムは、非常に幅広く使用されており、従って、そのオペレーティングシステム上で動作するように書かれている膨大な数のアプリケーションプログラムが存在し、ユーザはこれらのアプリケーションプログラムから選択することができる。従って、このようなオペレーティングシステムは、ほとんどのアプリケーションにとって第１の選択肢である。
【０００５】
しかしながら、アプリケーションによっては、プログラムのステップが所定の時間間隔以内に実行されることが極めて重要である。このようなプログラムの例として、携帯電話を動作させる制御プログラム、或いは構内交換機（ＰＢＸ）又は携帯電話の基地局を動作させる制御プログラムが挙げられる。一般には、これらのプログラムは、外部イベント又は状態の変化に対して、イベント内の特定の時刻又は特定の時間内に一貫した方式で応答しなければならない。これを「リアルタイム」での動作と称する。汎用オペレーティングシステムは、リアルタイムでの動作には適しておらず、リアルタイムで動作するようにはされていない。
【０００６】
従って、そのようなタスクを目的として、リアルタイムオペレーティングシステムが開発されており、１つの例は、ＣｈｏｒｕｓＯＳ（Ｃｈｏｒｕｓとしても知られている）及びその派生である。Ｃｈｏｒｕｓは、オープンソースソフトウェアとして、
ｈｔｔｐ：／／ｗｗｗ．ｅｘｐｅｒｉｍｅｎｔａｌｓｔｕｆｆ．ｃｏｍ／Ｔｅｃｈｎｏｌｏｇｉｅｓ／ＣｈｏｒｕｓＯＳ／ｉｎｄｅｘ．ｈｔｍｌ
から入手することができ、Ｊａｌｕｎａは、
ｈｔｔｐ：／／ｗｗｗ．ｊａｌｕｎａ．ｃｏｍ／
に記載されている。
【０００７】
Ｃｈｏｒｕｓは、「ＣｈｏｒｕｓＯＳの特徴及びアーキテクチャの概要（ＣｈｏｒｕｓＯＳ  Ｆｅａｔｕｒｅｓ  ａｎｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｏｖｅｒｖｉｅｗ）」（Ｆｒａｎｃｏｉｓ  Ａｒｍａｎｄ、Ｓｕｎ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ、２００１年８月、２２２ｐ）に記載されており、この文書は、
ｈｔｔｐ：／／ｗｗｗ．ｊａｌｕｎａ．ｃｏｍ／ｄｅｖｅｌｏｐｅｒ／ｐａｐｅｒｓ／ＣＯＳＤＥＳＰＥＲＦ．ｐｄｆ
から入手可能である。
【０００８】
これらのオペレーティングシステムは、別のタイプのプログラムを実行する目的にも使用することができる。しかしながら、ユーザは、当然ながら、ＷｉｎｄｏｗｓやＬｉｎｕｘなどの汎用オペレーティングシステム用に書かれている膨大な数の「レガシー」プログラムを、リアルタイムオペレーティングシステム上で動作するように書き換える必要なしに、リアルタイムオペレーティングシステム上でも実行することができることを望んでいる。
【０００９】
米国特許第５９０３７５２号明細書と米国特許第５７２１２０６号明細書においては、非リアルタイムオペレーティングシステム（Ｗｉｎｄｏｗｓなど）の割込み処理環境にリアルタイムのマルチタスキングカーネルを提供することによって、非リアルタイムオペレーティングシステムにリアルタイム環境を組み込む試みがなされている。
【００１０】
汎用オペレーティングシステムを使用して、リアルタイムのストリーミングデータ（例：ストリーミングオーディオ又はストリーミングビデオ、或いはＶｏＩＰ（ボイスオーバーインターネット）データ）を伝達しようとすると、その結果はしばしば満足できないものである。その理由として、第一に、汎用オペレーティングシステムは、実行する必要のある別のタスクがあるときに十分高速に動作することができないためであり、第二に、別のタスクの実行がスケジューリングされている場合、ＩＰスタックのプロセッサリソースがスケジューラによって予測外に拒否されることがあり、一時的なデータ損失につながるためである。
【００１１】
この問題を解決するためのこれまでの１つの試みは、Ｌｉｎｕｘのリアルタイム拡張部を提供することである。１つの提案は、ＲＴ  Ｌｉｎｕｘであり、これは米国特許第５９９５７４５号明細書（Ｙｏｄａｉｋｅｎ）、又はｈｔｔｐ：／／ｗｗｗ．ｆｓｍｌａｂｓ．ｃｏｍに記載されている。もう１つの提案は、ＲＴＡＩ（Ｒｅａｌｔｉｍｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ  ｆｏｒ  Ｌｉｎｕｘ）であり、これについては、
ｈｔｔｐ：／／ｗｗｗ．ａｅｒｏ．ｐｏｌｉｍｉ．ｉｔ／〜ｒｔａｉ／ａｐｐｌｉｃａｔｉｏｎｓ／
ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｓｏｕｒｃｅ．ｌｉｎｅｏ．ｃｏｍ／ｒｔａｉ．ｈｔｍｌ
を参照されたい。
【００１２】
ＲＴ  ＬｉｎｕｘとＲＴＡＩのいずれも、ＲＴ  ＮＥＴプログラムを使用することによってＩＰプロトコルスタックを提供するように構成することができる。ＲＴ  ＮＥＴプログラムについては、ｈｔｔｐ：／／ｗｗｗ．ｒｔｓ．ｕｎｉ−ｈａｎｎｏｖｅｒ．ｄｅ／ｒｔｎｅｔ／を参照されたい。
【００１３】
最近、「マルチパーソナリティ」システム（すなわち２つ以上の異なるオペレーティングシステムが同じプロセッサ上で同時に実行されるシステム）を提供する提案がなされた。１つはＡＤＥＯＳ（Ａｄａｐｔｉｖｅ  Ｄｏｍａｉｎ  Ｅｎｖｉｒｏｎｍｅｎｔ  ｆｏｒ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ）であり、ｈｔｔｐ：／／ｏｐｅｒｓｙｓ．ｃｏｍ／ｆｔｐ／ｐｕｂ／Ａｄｅｏｓ／ａｄｅｏｓ．ｐｄｆにおけるホワイトペーパー（及びｈｔｔｐ：／／ｏｐｅｒｓｙｓ．ｃｏｍ／ａｄｅｏｓにおける別の論文）に記載されている。もう１つはＪａｌｕｎａ  ２であり、弊社の以前の欧州特許出願第０３２９０８９４．９号（出願日：２００３年４月９日）明細書に記載されており、この文書は本文書に参考とすることにより組み込まれる。
【００１４】
欧州特許公開第１０５４３３２号明細書は、リアルタイムオペレーティングシステム及び汎用オペレーティングシステムと、これらの間のスイッチングとを有するコンピュータシステムであって、周辺装置がオペレーティングシステムの間で共有される、コンピュータシステム、を記載している。欧州特許第１０５９５８２号明細書は、リアルタイムオペレーティングシステムと汎用オペレーティングシステムとを実行する仮想マシンシステムを説明している。
【００１５】
米国特許第６３３０６１６号明細書は、複数の論理パーティションとネットワークへのポートとを備えているメインフレームデータ処理システムを説明している。ポートには、異なるパーティションにおけるソフトウェアによってそれぞれが制御される複数の異なるＴＣＰ／ＩＰスタックによってアクセスすることができ、これらのソフトウェアは、各パーティションにおける個別のオペレーティングシステムとすることができる。オペレーティングシステムとＴＣＰ／ＩＰスタックは完全に個別に実行され、各スタックは自身の一意のＩＰアドレスを有する。
【００１６】
本発明の目的は、改良されたネットワーク通信を提供することである。１つの側面においては、本発明は、請求項１に記載のコンピュータシステム、請求項１８に記載の方法、又は、その方法を実行するコードを提供する請求項１９に記載のコンピュータプログラム製品を含んでいる。
【００１７】
この解決策は一見すると非効率的であるように考えられるかもしれないが、複数のオペレーティングシステムを同時に実行するときにはいくらかのプロセッサオーバヘッドが存在することは避けられないため、適切なオペレーティングシステムを選択することによって、動作の効率を向上させることができる。例えば、第１のオペレーティングシステムを、ストリーミングデータ通信など時間が極めて重要である通信のコードをサポートすることのできるリアルタイムオペレーティングシステムとすることができ、第２のオペレーティングシステムを、シグナリングデータや監視データなど時間が重要ではないデータを伝達することができる汎用オペレーティングシステムとすることができる。この例においては、第１の（リアルタイム）オペレーティングシステムは、必然的に、時間保証された処理（ｄｅｔｅｒｍｉｎｉｓｍ）が確保され、且つストリーミングデータ送信のパフォーマンスが汎用システムよりも高くなるように設計されている。
【００１８】
従って、ネットワークへのアクセスが共有され、且つ、共通の論理アドレスを共有する、同時に実行される複数のオペレーティングシステムを提供することによって、共通の同じパラメータセットを使用するように両方のオペレーティングシステムをまとめて管理することができ、その一方で、通信に関与するアクティビティを、それに特に適しているオペレーティングシステムにまかせることができる。
【００１９】
別の側面においては、本発明は、この柔軟性をＶｏＩＰ通信のコンテキストにおいて利用し、ただし、音声データを伝達する目的には、（例えば、小さなパケットのユーザデータグラムプロトコル（ＵＤＰ／ＩＰ）送信を使用して）リアルタイムオペレーティングシステムを使用し、呼の設定とティアダウン（ｔｅａｒ−ｄｏｗｎ）シグナリング若しくは呼課金シグナリング、又はその両方を提供する目的には、汎用オペレーティングシステムを使用する。従って、リアルタイムオペレーティングシステムは、中断されない音声通信に必要な最小限のパフォーマンスを保証することができ、その一方で、汎用オペレーティングシステムは、リアルタイムオペレーティングシステムがネットワークインタフェースカードを必要としないときに、より信頼性の高い別のプロトコル（例：ＴＣＰ／ＩＰ）で通信することができる。
【００２０】
いずれの場合にも、リアルタイムオペレーティングシステムには、ＮＩＣへの優先的なアクセスが与えられることが好ましい。データの入力時、リアルタイムオペレーティングシステムは、受信されるデータパケットすべてをフィルタリングし、リアルタイムオペレーティングシステム上で実行されるアプリケーションを宛先としていないデータすべてを汎用オペレーティングシステムに渡すことが好ましい。従って、時間が極めて重要であるパケットが処理されている間、遅延が生じない。送出データについては、リアルタイムオペレーティングシステムからのデータに優先順位が与えられることが好ましい。
【００２１】
本発明のその他の側面、特徴、実施形態、及び利点は、以下の説明と請求項とから明らかになるであろう。
【００２２】
以下では、本発明の実施形態について添付の図面を参照しながら一例として説明する。
【００２３】
［序］
システムのハードウェア
本システムを適用することのできるコンピュータシステム１００は、（制御バスと、データバスと、アドレスバスとを備えている）システムバス１０４を介して読取り専用メモリ（ＲＯＭ）チップ１０６に結合されている中央処理装置（ＣＰＵ）１０２（例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから購入可能なＰｅｎｔｉｕｍ  ４ＴＭＣＰＵ、或いはＭｏｔｏｒｏｌａ社から購入可能なＰｏｗｅｒＰＣ  ＣＰＵであり、この実施形態は両方のＣＰＵに実装されている）と、１つ以上のバンクのランダムアクセスメモリ（ＲＡＭ）チップ（１０８）と、ディスクコントローラデバイス１１０（例：フロッピーディスクドライブ、ハードディスクドライブ、及び追加のリムーバルメディアドライブ（ＤＶＤドライブなど）に接続されているＩＤＥコントローラ又はＳＣＳＩコントローラ）と、１つ以上の入力・出力ポート（１１２）（例：プリンタなどに接続するための１つ以上のＵＳＢポートコントローラ若しくはパラレルポートコントローラ、又はその両方）と、外部又は内部の周辺装置にバス接続するための拡張バス１１４（例：ＰＣＩバス）と、その他のシステムチップ１１６（例：グラフィックデバイス、サウンドデバイス）と、を備えている。更に、ネットワーク（例：インターネットネットワーク）を介してデータを伝達するためのネットワークインタフェースカード（ＮＩＣ）１１８も設けられている。
【００２４】
このタイプのコンピュータの例として、パーソナルコンピュータ（ＰＣ）とワークステーションが挙げられる。しかしながら、メインフレーム、制御システムに埋め込まれているマイクロコンピュータ、ＰＤＡ（この場合には、前述した装置のうちディスクドライブコントローラなどいくつかの装置が含まれていなくてもよい）など、それ以外のコンピューティング装置への本発明の応用も、本明細書に開示した。
【００２５】
コンピュータシステムは、ＮＩＣが接続されているネットワークと、その他のネットワーク（これらのネットワークはまとめてインターネットを含んでいる）とを介して、別のコンピュータシステム（本発明を具体化しているシステム又は具体化していないシステム）にデータを伝達するようにされている。以下の説明では、これらのネットワークをまとめてインターネットと称する。
【００２６】
図３を参照して、本発明は、以下のコンポーネントを備えているソフトウェアを実行するようにされている。
・  Ｃ５オペレーティングシステム（リアルタイムマイクロカーネルＪａｌｕｎａ−１、これはＣｈｏｒｕｓＯＳシステムの第５世代のオープンソースバージョンであり、オープンソースとしてｈｔｔｐ：／／ｗｗｗｊａｌｕｎａ．ｃｏｍから自由にダウンロードすることができる）などのリアルタイムオペレーティングシステムカーネルを備えている第１のオペレーティングシステムカーネル２０１。
・  汎用オペレーティングシステムカーネル２０２。これは、Ｌｉｎｕｘカーネルバージョン２．４．２０とすることができる。このカーネルは、上に引用した弊社の以前の欧州特許出願第０３２９０８９４．９号明細書に記載されている方式で同時に実行することができるように、わずかに修正されている。
・  ハードウェアリソースディスパッチャ４００。これ自身はオペレーティングシステムではないが、複数のオペレーティングシステム２０１，２０２のそれぞれをロードして起動し、オペレーティングシステムにリソースを割り当てる、オペレーティングシステムの動作のスケジューリングを行う（すなわち、オペレーティングシステムの間でＣＰＵ時間を分割する）、異なるオペレーティングシステム上で実行されているアプリケーションが互いに通信することができるように（及びオペレーティングシステムが互いに通信することができるように）、オペレーティングシステムの間のオペレーティングシステム間通信リンクを提供する、ようにされている。
【００２７】
各オペレーティングシステムは、ネットワーキング「ミドルウェア」ソフトウェアを提供する。この実施形態においては、リアルタイムオペレーティングシステム２０１は、インターネットプロトコル（ＩＰ）スタックと、ユーザデータグラムプロトコルを動作させるプロトコル（ＵＤＰ／ＩＰ）と、ＵＤＰ／ＩＰスタックの上で実行されるＲＴＰ／ＲＴＣＰデータ通信プロトコルとを提供する。ＵＤＰ／ＩＰスタックは、この実施形態においては、レイテンシ（すなわち最大遅延）と帯域幅とが保証されるように小さなパケットサイズで動作するように最適化されている。
【００２８】
汎用オペレーティングシステム２０２は、ＩＰスタック２０６に加えて、ＵＤＰ／ＩＰプロトコル、伝送制御プロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）などを提供する。
【００２９】
汎用オペレーティングシステムは、オペレーティングシステムユーザインタフェース又はプレゼンテーション層２０４（Ｘ  Ｗｉｎｄｏｗｓなど）を提供する。
【００３０】
各オペレーティングシステムは、１つ以上のアプリケーション２０７，２０８ａ，２０８ｂ，．．．をサポートする。アプリケーションは、それぞれを動作させているオペレーティングシステムによって提供されているアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて、コンピュータリソースを利用する。オペレーティングシステムは、上に引用した弊社の以前の欧州特許出願第０３２９０８９４．９号明細書に記載されている方式でハードウェアリソースにアクセスする。具体的には、オペレーティングシステムは、自身が排他的にアクセスするデバイスに対しては、各オペレーティングシステムのネイティブなデバイスドライバプログラムを利用し、共有しなければならないデバイスに対しては、リアルタイムオペレーティングシステム２０１のネイティブなドライバプログラムを利用する。
【００３１】
従って、各オペレーティングシステム２０１，２０２には、ハードウェアリソースディスパッチャ４００によってＣＰＵ時間が割り当てられ、各オペレーティングシステムは、自身が実行しているアプリケーションのスレッドの間でその時間内で時間を割り当てる。
【００３２】
図３を参照して、本発明においては、リアルタイムオペレーティングシステム２０１は、ＮＩＣ用のドライバプログラム２５２を提供する。ドライバプログラムは、ＮＩＣからのデータをオペレーティングシステム２０１に伝達し、オペレーティングシステム２０１からのデータをＮＩＣ  １１８に伝達する。汎用オペレーティングシステム２０２は、通常はＮＩＣドライバプログラムを有するが、この場合、ＮＩＣドライバプログラムは（上に引用した弊社の欧州特許出願明細書に記載されているように）プロキシドライバプログラム２５４に置き換えられており、このプロキシドライバプログラム２５４は、ＮＩＣと通信せずに、リアルタイムオペレーティングシステム２０１上で実行されている更なるプロキシプログラム２５６と通信する。
【００３３】
２つのオペレーティングシステムは、上に引用した弊社の以前の欧州特許出願明細書に記載されているように、一方のオペレーティングシステムによって書き込まれ他方のオペレーティングシステムによって読み取られる共有メモリ空間を使用して、オペレーティングシステム間通信バス２６０を介して通信する。
【００３４】
従って、リアルタイムオペレーティングシステム上で実行されているアプリケーションは、通信する必要があるときにはＮＩＣドライバプログラム２５２を通じて通信する。汎用オペレーティングシステム上で実行されているアプリケーションは、通信するときには、汎用オペレーティングシステムのプロキシ２５４を通じてリアルタイムオペレーティングシステムのプロキシ２５６にデータを渡し、このデータがリアルタイムオペレーティングシステムのＮＩＣドライバ２５２を通じて処理されることによって、通信を行う。逆方向においては、汎用オペレーティングシステム上で実行されているアプリケーションは、ＮＩＣカードから直接的にデータを受け取るのではなく、ＮＩＣドライバ２５２と、リアルタイムオペレーティングシステムのプロトコルスタック２０５と、プロキシ２５６，２５４とを介してデータを受け取る。
【００３５】
２つのプロキシドライバ２５４，２５６の間には、以下の３つのシンプレックスデータ通信チャネルが確立されている。
１−ａ：リアルタイムＵＤＰ／ＩＰスタックから入力されるデータパケットを転送するデータ出力チャネル
２−ａ：送出パケットと、汎用オペレーティングシステムからのパケットを受け取るデータ入力チャネル
３−ａ：汎用オペレーティングシステムによって発行される、ＮＩＣに関連する入出力制御要求を受け取る制御入力チャネル
従って、汎用オペレーティングシステム２０２を通じてユーザによって指定された、ネットワークインタフェースのコンフィギュレーションの変更は、リアルタイムオペレーティングシステム２０１に送信され、リアルタイムオペレーティングシステム２０１は、それ以降は更新されたネットワークパラメータに従って動作する。例えば、Ｌｉｎｕｘ  ＩＦＣＯＮＦＩＧコマンドを使用して様々なネットワークパラメータを変更することができるが、その場合、両方のオペレーティングシステムは共通の同じパラメータセットを依然として使用する。従って、特に、リアルタイムオペレーティングシステム及び汎用オペレーティングシステムのＮＩＣのインスタンスのいずれにも、同じ物理（ＭＡＣ）アドレスとＩＰアドレスとが割り当てられる。
【００３６】
これを達成する目的で、この実施形態においては、汎用プロキシ２５４は、オペレーティングシステム２０２によって発行されたＩ／Ｏ制御コールすべてを「取得」し、対応するメッセージをリアルタイムプロキシ２５６に送る。
【００３７】
この実施形態においては、汎用プロキシ２５４は、Ｌｉｎｕｘイーサネットドライバインターネットインタフェースを実装しているのが都合よく、従って、汎用プロキシ２５４は、ネットワークＬｉｎｕｘイーサネットデバイス（ｎｅｔｗｏｒｋ  Ｌｉｎｕｘ  Ｅｔｈｅｒｎｅｔ  ｄｅｖｉｃｅ）と同じインタフェースを有し、オペレーティングシステム２０２は汎用プロキシ２５４をネットワークＬｉｎｕｘイーサネットデバイスとして扱うことができる。
【００３８】
リアルタイムオペレーティングシステム２０１は、送信スケジューラプログラム２５８を更に提供する。送信スケジューラ２５８の機能は、汎用オペレーティングシステムからのどのデータをＮＩＣドライバ２５２を介して送信するかを決定すること、言い換えれば、２つのオペレーティングシステムの間で送信容量を割り当てることである。
【００３９】
スケジューラは、リアルタイムＵＤＰ／ＩＰスタックからのパケットを高い優先度を持つものとして扱い、（プロキシドライバ２５４，２５６を介しての）汎用オペレーティングシステムからのパケットを低い優先度を持つものとして扱う。この実施形態においては、スケジューラは、リアルタイムオペレーティングシステムからのパケットが送信を待機している場合、汎用オペレーティングシステムからのパケットを送信しない。送信を待機しているパケットは、以降の可能な時点で送信されるようにキューイングされる。
【００４０】
図４ａは、ＩＰパケットの構造を示している。ＩＰパケットは、ヘッダ部分３０２とデータ部分３０４とを有する。図４ｂは、ＵＤＰデータグラムの構造を示している。ＵＤＰデータグラムはパケットのデータ部分３０４を占めており、ヘッダ３０６とデータ３０８とから成る。パケットは、ＩＰアドレスとポート番号とによってアドレッシングされる。ＮＩＣは、関連するＩＰアドレスを持つパケットを受信し、ＮＩＣドライバ２５２がこれらをリアルタイムＵＤＰ／ＩＰスタック２０５に転送する。オペレーティングシステム２０１，２０２のそれぞれは、ＩＰスタック２０５，２０６を使用する各アプリケーションにポート番号を割り当てる。この目的のため、各オペレーティングシステムは、それぞれが割り当てることのできるポート番号のリストを持つ。これら２つのポート番号リストは相互に排他的である。この実施形態においては、これらのリストは統計的に割り当てられ、すなわち、各オペレーティングシステムにはポートリストが永久的に割り当てられる。
【００４１】
ＮＩＣ  １１８は、様々なタイプのＩＰパケットを受信する。具体的には、ネットワーク内のすべてのコンピュータを宛先として受信されるブロードキャストパケットと、コンピュータ１００にアドレッシングされているパケットとが挙げられる。後者のパケットとしては、リアルタイムオペレーティングシステム上で実行されているアプリケーションを宛先としている（リアルタイムオペレーティングシステムによって割り当てられているポート番号を持っていることによって識別される）ＵＤＰデータグラムと、汎用オペレーティングシステム２０２上で実行されているアプリケーションを宛先としていることを示すポート番号を持つＵＤＰパケット、ＴＣＰパケット、又はその他のパケットが挙げられる。
【００４２】
リアルタイムＵＤＰ／ＩＰスタック２０５は、そのアプリケーションを宛先としているパケットを処理して、該当するアプリケーションにペイロードデータを渡すようにされている。リアルタイムＵＤＰ／ＩＰスタック２０５は、汎用オペレーティングシステム２０２に属すことを示しているポートアドレスを持つパケットに遭遇すると、そのパケットをプロキシ２５６，２５４を介して汎用オペレーティングシステム２０２のＴＣＰ／ＩＰスタックに転送し、汎用オペレーティングシステム２０２は、そのポートに対応するアプリケーションにパケットのペイロードをルーティングする。
【００４３】
両方のオペレーティングシステムのＩＰスタックに関連する情報が含まれているパケットが存在する。例えば、与えられたＩＰアドレスに対応する物理アドレスが含まれているＡＲＰ応答データグラムパケットを両方のオペレーティングシステムが読み取ることは都合がよい。この方法においては、各オペレーティングシステムは、パケットのアドレッシングにおいて使用するアドレステーブルを維持することができる。
【００４４】
ここまでは、本実施形態のソフトウェアコンポーネントについて説明した。以下では、本実施形態の動作について開示する。
【００４５】
図５は、コンピュータシステムをオンにする、再起動する、リセットする、又はリブートするときに実行されるプロセスを示している。ステップ４０２において、上に引用した弊社の欧州特許出願明細書に記載されているように、オペレーティングシステムがロードされ、起動される。ステップ４０４において、この欧州特許出願明細書に記載されているように、様々なシステムリソースが割り当てられる。このシステムリソースとしては、特に、各オペレーティングシステム用のＩＰポートのサブセットが挙げられる。
【００４６】
各ポートには、送信キューと受信キューとを備えているソケットが関連付けられている。アプリケーションによって生成されて送信されるパケットは、送信キューに格納され、アプリケーションを宛先とする受信されたパケットは、受信キューに渡される。
【００４７】
この実施形態においては、最初に、所定のポートリストがリアルタイムオペレーティングシステム２０１に渡され、次いで、第２のオペレーティングシステムの元で、これらのポートのそれぞれにダミーソケット又はフェイクソケット（ｆａｋｅ  ｓｏｃｋｅｔ）が割り当てられる。従って、汎用オペレーティングシステムは、これらのポートがすでに割り当てられているものとして扱い、自身が実行しているアプリケーションにこれらのポートを割り当てることはない。従って、第２のオペレーティングシステムが割り当てることのできるポートのサブセットは、利用可能なポートの総数から、リアルタイムオペレーティングシステムにすでに割り当てられているポートを除いたものに一致する。
【００４８】
以下では、オペレーティングシステムのうちの１つの元で実行されるアプリケーションを起動するときに実行されるプロセスについて、図６を参照しながら簡単に説明する。まず、アプリケーションがロードされる。アプリケーションが通信を必要とする場合、ステップ４０６において、従来のオペレーティングシステムの場合と同様に、ＩＰスタックが（まだ実行されてない場合には）起動される。ステップ４０８において、関連するオペレーティングシステムが、１つ以上のポートアドレスをそのアプリケーションに割り当てる。このプロセスは、割り当てられるポートが、上記のステップ４０４における起動時にそのオペレーティングシステムに与えられたサブセットから取得されることを除いて、従来のオペレーティングシステムの場合と同様である。次いで、従来のオペレーティングシステムの場合と同様に、アプリケーションが起動される（ステップ４１０）。
【００４９】
アプリケーションが終了するとき、使用されていたポートは、以降に必要であれば再び割り当てることができるように解放される。
【００５０】
以下では、本実施形態の通信時の動作について開示する。汎用オペレーティングシステム２０２の動作は、本質的に従来のオペレーティングシステムの動作であり、従って、図７ａ，７ｂ，７ｃから成る図７を参照しながら簡潔に開示するのみとする。
【００５１】
図７ａは、ネットワークに接続されているホストにパケットを送信するときのステップを示している。ステップ４５２において、ネットワークスタックが、オペレーティングシステム上で実行されているアプリケーション２０８の１つによって生成されたＩＰパケット又はＩＰフレームを、（例えば複数のアプリケーション間でのマルチプレックス方式で）選択する。ステップ４５４において、ネットワークスタックが、そのパケットをネットワークインタフェースプロキシドライバプログラム２５４に転送し、ステップ４５５において、ネットワークインタフェースプロキシドライバプログラム２５４が、そのパケットをリアルタイムプロキシドライバプログラム２５６に渡す。リアルタイムオペレーティングシステムによって実行される更なる処理については、後から図８を参照しながら説明する。
【００５２】
図７ｂは、ネットワークに接続されているホストからパケットを受信するときのステップを示している。ステップ４５６において、ＮＩＣプロキシドライバ２５４に保持されている受信パケットが、汎用スタックによって読み取られ、ステップ４５８において、そのパケットが、パケットに関連付けられているアプリケーションのソケットに渡される。リアルタイムオペレーティングシステムによって実行される更なる処理については、後から図８を参照しながら説明する。
【００５３】
図７ｃは、ＮＩＣを構成するときのステップを示している。ステップ４６０において、コンソールに入力されたネットワークインタフェースコンフィギュレーションコマンドが読み取られ、ステップ４６２において、ＮＩＣを再構成するための対応する命令がＮＩＣプロキシドライバプログラム２５４に渡される。リアルタイムオペレーティングシステムによって実行される更なる処理については、後から図８を参照しながら説明する。
【００５４】
以下では、リアルタイムオペレーティングシステムの対応する動作について、図８ａ，８ｂ，８ｃから成る図８を参照しながら説明する。
【００５５】
図８ａは、ネットワークに接続されているホストにパケットを送信するときのステップを示している。リアルタイムＵＤＰ／ＩＰスタックが、自身が実行しているいずれかのアプリケーションからのパケット（ＵＤＰデータグラム）が存在しているかを検出する（ステップ４７２）。スタックは、そのパケットをＮＩＣドライバ２５２に渡す（ステップ４７８）。ステップ４７６においては、スケジューラ２５８が、（図７に関連して上述したように汎用オペレーティングシステムから受信された）待機中のパケットがあればＮＩＣプロキシ２５６から読み取る。ステップ４７８において、これらのパケットが、ネットワークに送信されるようにＮＩＣドライバ２５２に渡される。
【００５６】
図８ｂは、ネットワークからパケットを受信するときのステップを示している。ＮＩＣは、ネットワークからフレームを受信すると、割込みをトリガーし、この割込みにより、ＣＰＵがリアルタイムシステムにおいてＮＩＣドライバの割込みハンドラを実行する。次いで、割込みハンドラによって、入力されるネットワークフレームの受信専用の、リアルタイムシステムの特定の入力スレッドが起動する。入力スレッドは、受信されたフレームのそれぞれを読み取り、それぞれのタイプ若しくは宛先、又はその両方に従って各フレームを配信する。フレームがＵＤＰ／ＩＰパケットであり、その宛先ポートがリアルタイムオペレーティングシステムに起動時に確保されたＵＤＰポートの１つである場合、そのパケットは、そのＵＤＰポートにバインドされているソケットの後ろにただちにキューイングされる。
【００５７】
図８ｂを参照し、ステップ４８６において、スレッドが、ＮＩＣドライバ２５２からのパケットを読み取る。ステップ４８８において、スレッドが、パケットのタイプと、パケットに含まれている場合はポートアドレス及びポートとを読み取る。
【００５８】
ステップ４９０において、リアルタイムオペレーティングシステムは、パケットの宛先を調べる。フレームがＵＤＰ／ＩＰパケットであり、その宛先ポートアドレスがリアルタイムオペレーティングシステムに確保されているＵＤＰポートの１つである場合、そのパケットは、そのＵＤＰポートにバインドされているソケットにただちにキューイングされる（ステップ４９２）。
【００５９】
パケットが、リアルタイムオペレーティングシステムと汎用オペレーティングシステムの両方に関連するタイプである場合、そのパケットは、汎用システムに渡される前に、（ステップ４９４において）リアルタイムオペレーティングシステムのＵＤＰ／ＩＰスタックによって処理される。例えば、パケットは、宛先ホストのＩＰアドレスとＭＡＣアドレスとを含んでいるＡＲＰ応答パケットである。この場合、リアルタイムオペレーティングシステムは、ステップ４９４において、そのパケットを使用して自身のＡＲＰテーブル（すなわち格納されているＩＰアドレステーブル）を更新し、ステップ４９６において、汎用オペレーティングシステムに転送されるようにＮＩＣプロキシドライバ２５４に転送する（次いで汎用オペレーティングシステムが同じＡＲＰテーブル更新タスクを実行する）。
【００６０】
上記以外のすべてのタイプの入力ネットワークフレームは、汎用システムのネットワークスタックによって非同期に処理されるように汎用システムのＮＩＣプロキシドライバに直接的に渡される（ステップ４９６）。従って、例えば、非リアルタイムオペレーティングシステムの宛先ポートが含まれているＵＤＰパケットと、ＴＣＰパケットと、その他のすべてのパケットは、リアルタイムオペレーティングシステムに転送される。
【００６１】
図８ｃは、ＮＩＣを構成するときのステップを示している。リアルタイムＩＰスタック２０５は、ＮＩＣプロキシ２５６からの新しいコンフィギュレーションコマンドが存在しているかを調べ（ステップ４８０）、存在する場合、そのコマンドを読み取り（ステップ４８２）、ＮＩＣを構成する（ステップ４８４）。
【００６２】
［第２の実施形態］
ボイスオーバーＩＰ
以下では、ボイスオーバーＩＰ（ＶｏＩＰ）電話への応用として、従来の電話網とＩＰネットワークとの間にゲートウェイ又は「ソフトスイッチ」を実装している場合について説明する。
【００６３】
図９を参照し、この実施形態においては、（この実施形態に従って動作している）第１のコンピュータ９０２は、電話網９１０とＩＰネットワーク（又はインターネットを介して相互接続されているネットワークのグループ）９０８との間のゲートウェイとして機能する。第１のコンピュータ９０２は、音声リンクの他方の端部を提供する第２のコンピュータ９０４（ボイスオーバーＩＰソフトウェアを実行しているパーソナルコンピュータ、又は別のゲートウェイとすることができる）とネットワーク９０８を介して通信する。第１のコンピュータ９０２は、ＶｏＩＰサービスプロバイダの課金コンピュータ９０６とも通信する。
【００６４】
図１０は、第１の実施形態において上述した第１のコンピュータ９０２に存在している更なるコンポーネントを示している。
【００６５】
図１０を参照して、全二重音声チャネルのそれぞれに、プロセッサモジュール９３０を介して相互接続されているＶｏＩＰモジュール９１０と電話インタフェースモジュール９１４とから成る電話チャネルシステムが設けられている。
【００６６】
電話インタフェースモジュール９１４は、電話網９１０の性質に依存する。例えば、電話インタフェースモジュール９１４は、デジタル電話の場合には、パルス符号変調（ＰＣＭ）形式において音声信号を符号化及び復号化し、携帯電話網の場合には、ビットレートの低い符号化形式において符号化及び復号化し、アナログ電話網の場合には、アナログ−デジタルコンバータ（ＡＤＣ）とデジタル−アナログコンバータ（ＤＡＣ）とを備えている。
【００６７】
ＶｏＩＰモジュール９１０は、リアルタイムオペレーティングシステム２０１上のアプリケーションとしてＲＴＰ／ＲＴＣＰ（リアルタイムプロトコル／リアルタイム制御プロトコル）９１６を実行するプログラムを備えている。ＲＴＰ／ＲＴＣＰデータは、リアルタイムオペレーティングシステムのＩＰスタックの一部であるＵＤＰ／ＩＰスタック２０５によって（上述したように）ＵＤＰデータグラムに変換される。
【００６８】
電話網９１０からの音声データは、電話インタフェース９１４において受信され、トランスコーディング（ｔｒａｎｓｃｏｎｖｅｒｓｉｏｎ）タスク専用の１つ以上のＤＳＰ（デジタル信号処理）デバイスを備えているプロセッサ９３０によってＲＴＰ／ＲＴＣＰ形式に変換される。次いで、トランスコードされたデータは、第２のコンピュータ９０４のＩＰアドレスにアドレッシングされているＵＤＰデータグラムとして、ゲートウェイコンピュータ９０２からＩＰネットワーク９０８に送信される。
【００６９】
リターン方向においては、第１のコンピュータ９０２にアドレッシングされており且つＶｏＩＰモジュール９１０のポートアドレスを持つ、ＩＰネットワーク９０８から受信されたＵＤＰデータグラムが、プロセッサ９３０によってトランスコードされて電話インタフェース９１４に渡された後、電話網９１０に渡されてリターンチャネルが形成される。
【００７０】
制御エンジン９１４は、インターネット電話、イベント通知、その他の通信のためのシグナリングプロトコルであるＳＩＰ（セッション開始プロトコル）を実行するプログラムを備えている。制御エンジン９１４は、汎用オペレーティングシステム２０２上で実行されるアプリケーションであり、汎用オペレーティングシステムのＴＣＰ／ＩＰスタック２０６を通じて動作する。制御サブシステム９１２は、ＩＰネットワーク９０８を経由して第２のコンピュータ９０４及び課金コンピュータ９０６とやりとりされるシグナリングによって、第２のコンピュータ９０４との呼セッションを確立するようにされている。同様に、制御エンジン９１４は、呼が完了したときに呼をティアダウンするようにされている。
【００７１】
動作時、電話網９１０から呼が開始されると、電話網からのシグナリング情報が復号化される。ＳＩＰエンジン９２０は、この情報を使用して、第２のコンピュータのＩＰアドレスを確立し、第１のコンピュータのＩＰアドレスを第２のコンピュータに渡し、課金コンピュータ９０６にセッションの開始を通知することによって、第２のコンピュータへの呼を確立する。
【００７２】
通話中、電話網９１０からの呼データ（ｃａｌｌ  ｄａｔｅ）は、インタフェース９１４，９１０を通じてＩＰネットワーク９０８を経由して第２のコンピュータ９０４に転送され、逆方向には、第２のコンピュータ９０４から電話網９１０に渡される。通話中、制御サブシステム９１２は、呼を監視し、その結果を汎用オペレーティングシステム２０２のユーザインタフェース２０４に渡すことができ、また、ユーザインタフェース２０４からネットワークコンフィギュレーション及びその他の制御入力を受信することができる。
【００７３】
呼の終了時、いずれかのエンドによって呼が終了すると、制御サブシステム９１２は、（呼を終了させたエンドに応じて）電話網９１０又は第２のコンピュータ９０４へのティアダウンシグナリングを実行し、課金パラメータ（例：呼の持続時間及び宛先）を知らせる課金メッセージを課金コンピュータ９０６に送る。
【００７４】
呼チャネルの数、及び従って第１のコンピュータ９０２の中に設けられるＶｏＩＰモジュール、電話インタフェースモジュール、及びプロセッサの数は、その目的に依存する。第１のコンピュータは、１つのチャネルを提供するスタンドアロンのコンピュータ電話統合（ＣＴＩ）端末、又は、少数のチャネルを提供するＰＢＸ、又は、数百以上のチャネルを提供するネットワーク相互接続ノードとすることができる。
【００７５】
理解される点として、この実施形態においては、リアルタイムオペレーティングシステムと、制約されたサイズのＵＤＰデータグラムとを組み合わせて使用することによって、信頼性が高く遅延の少ない電話接続を提供することが可能である。また、通話の前、通話中、及び通話後に、汎用オペレーティングシステムを介して制御シグナリングと課金シグナリングとを提供することも可能であり、従って、複雑なシグナリングアプリケーションと課金機能が使用可能になり、ユーザインタフェース２０４を通じてのユーザとの対話が容易になる。
【００７６】
［その他の実施形態と変更例］
以上の説明から、説明した実施形態の数多くの変更、変形形態、及び置き換えが可能であることが明らかであろう。例えば、ＩＰ、Ｌｉｎｕｘ、及びＣｈｏｒｕｓシステムでの動作を開示したが、本発明は、現在存在するか又は今後開発されるそれ以外の通信プロトコル及びそれ以外のオペレーティングシステムにも同様に適用することができる。
【００７７】
静的ベースでのポートの割当てを開示したが、ポートの割当てを動的に変化させることが可能であろう。例えば、リアルタイムオペレーティングシステムは、ポートがもはや必要ないとき、それらのポートのソケット割当てを削除することによってポートを解放し、汎用オペレーティングシステムが使用できるようにすることができる。同様に、リアルタイムオペレーティングシステムは、更なるポートを使用できるように汎用オペレーティングシステムに同じ手段によって要求することができる。
【００７８】
１つのプロセッサ上で同時に実行される２つのオペレーティングシステムの動作を説明したが、説明したオペレーティングシステム間バスを物理的な通信バスに置き換えて、異なるプロセッサ上又は異なるプラットフォーム上でオペレーティングシステムを実行することも、容易に達成されることが明らかであろう。
【００７９】
ＶｏＩＰを説明したが、ストリーミングオーディオ（例：音楽、インターネットラジオなど）或いはビデオ（例：ビデオオンデマンド）など他のアプリケーションも、本発明を使用して提供することができる。
【００８０】
その他の数多くの変形形態が可能である。誤解を避けるため付け加えると、本出願は、本明細書におけるすべての主題及びそれらのサブコンビネーションを保護することを目的としている。
【図面の簡単な説明】
【００８１】
【図１】本発明を具体化することのできるコンピュータシステムを示しているブロック図である。
【図２】第１の実施形態に存在しているオペレーティングシステムと主要なコンポーネントとを示している図である。
【図３】第１の実施形態における、ネットワーク通信に関与するソフトウェアコンポーネントを更に詳細に示している図である。
【図４ａ】ＩＰパケットの公知の構造を示している図である。
【図４ｂ】ＵＤＰデータグラムの公知の構造を示している図である。
【図５】オペレーティングシステムを起動するときに実行されるプロセスを示している流れ図である。
【図６】オペレーティングシステムのうちの１つの元で（公知の方式で）アプリケーションを起動するときに実行されるプロセスを示している流れ図である。
【図７ａ】汎用オペレーティングシステムによって実行されるプロセスを示している流れ図である。
【図７ｂ】汎用オペレーティングシステムによって実行されるプロセスを示している流れ図である。
【図７ｃ】汎用オペレーティングシステムによって実行されるプロセスを示している流れ図である。
【図８ａ】リアルタイムオペレーティングシステムによって実行される対応するプロセスを示している流れ図である。
【図８ｂ】リアルタイムオペレーティングシステムによって実行される対応するプロセスを示している流れ図である。
【図８ｃ】リアルタイムオペレーティングシステムによって実行される対応するプロセスを示している流れ図である。
【図９】本発明の第２の実施形態によるＶｏＩＰ（ボイスオーバーＩＰ）ネットワークを示しているブロック図である。
【図１０】第２の実施形態を具体化しているＩＰネットワークのコンピュータに存在しているソフトウェアコンポーネントを示している図である。
【図１】
2007500381.tif 000003
【図２】
2007500381.tif 000004
【図３】
2007500381.tif 000005
【図４ａ】
2007500381.tif 000006
【図４ｂ】
2007500381.tif 000007
【図５】
2007500381.tif 000008
【図６】
2007500381.tif 000009
【図７ａ】
2007500381.tif 000010
【図７ｂ】
2007500381.tif 000011
【図７ｃ】
2007500381.tif 000012
【図８ａ】
2007500381.tif 000013
【図８ｂ】
2007500381.tif 000014
【図８ｃ】
2007500381.tif 000015
【図９】
2007500381.tif 000016
【図１０】
2007500381.tif 000017
【国際調査報告】
2007500381.tif 000018
2007500381.tif 000019
2007500381.tif 000020