(57)【特許請求の範囲】
【請求項１】
コンピュータシステムのネットワークインターフェイスの動作状態をコントロールする方法であって、コンピュータが、
ネットワークインターフェイス間でデータ又はパケットが送受信されるネットワーク上のルートに関してネットワークインターフェイスを使用する要求をアプリケーションから受け取るのに応答して、ルートのためのルート構造体を生成し、そして、ネットワークインターフェイスに関するインターフェイスデータ構造体のルート参照カウンタをインクリメントする処理と、
アプリケーションがもはやルートを使用しないと決定すると、ルート構造体のルート満了タイマーを所定の満了時間にセットする処理と、
ルート満了タイマーが満了になったとき、ルート構造体を削除すると共に、インターフェイスデータ構造体のルート参照カウンタをデクリメントする処理と、
インターフェイスデータ構造体のルート参照カウンタをデクリメントすることでルート参照カウンタがゼロに等しくなったときに、コンフィギュレーションアプリケーションへ信号を送信して、そのコンフィギュレーションアプリケーションに、ネットワークインターフェイスをアイドリングさせることができることを通知する処理と、
を実行する方法。
【請求項２】
前記ネットワークインターフェイスを使用する要求をアプリケーションから受け取るのに応答して、前記ネットワークインターフェイスがまだアクティブでないとき、前記コンピュータは、
前記ネットワークインターフェイスをアクチベートする処理と、
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、積極的なインターフェイスカウンタをインクリメントする処理とを更に実行し、
前記積極的なインターフェイスカウンタは、積極的にアイドリングされるように構成されたネットワークインターフェイスがいずれもアクティブでないときには、ゼロに等しくなることを特徴とする請求項１に記載の方法。
【請求項３】
前記コンピュータは、
前記ネットワークインターフェイスがアイドリングされたことを示す信号を受信する処理と、
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、前記積極的なインターフェイスカウンタをデクリメントする処理と、
を更に実行する、請求項２に記載の方法。
【請求項４】
前記ルート構造体を削除することは、前記コンピュータが、
前記ルート満了タイマーが満了となった前記ルート構造体をスキャニングし、そして前記ルート満了タイマーが満了となった前記ルート構造体を削除する処理と、
前記積極的なインターフェイスカウンタがゼロに等しいとき、前記ルート構造体のスキャニングは、ネットワークプロトコルスタックメカニズムを使用する処理を更に実行することを含み、
前記積極的なインターフェイスカウンタがゼロより大きいとき、前記ルート構造体のスキャニングは、ルートドメインのドレイン機能を含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記コンピュータは、
前記ネットワークプロトコルスタックメカニズムを使用して前記ルート満了タイマーが満了となった前記ルート構造体をスキャンすべきとき、前記ルートドメインからのドレイン機能のポインタをＮＵＬＬへ調整する処理と、
前記ドレイン機能を使用して前記ルート満了タイマーが満了となった前記ルート構造体をスキャンすべきときにドレイン機能を指示するように前記ルートドメインからのドレイン機能のポインタを調整する処理と、を更に実行する、請求項４に記載の方法。
【請求項６】
前記ルート構造体のルート満了タイマーを所定の満了時間にセットすることは、前記コンピュータが、
前記ルート構造体により使用されるネットワークインターフェイスが積極的にアイドリングされるように構成されたかどうか決定し、
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、前記ルート満了タイマーを所定の満了時間より短い満了時間にセットし、そして
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されないときには、前記ルート満了タイマーを、前記所定の満了時間にセットする、請求項１に記載の方法。
【請求項７】
前記コンピュータにより実行される前記ネットワークインターフェイスをアイドリングさせることは、
(1)ネットワークインターフェイスをパワーダウンし、
(2)ネットワークインターフェイスを低電力モードにスイッチし、又は
(3)ネットワークインターフェイスを通常／アクティブな電力レベルで使用するが低プライオリティ動作若しくはメンテナンス動作しか遂行しない、
のうちの１つを含む、請求項１に記載の方法。
【請求項８】
コンピュータシステムにおけるネットワークインターフェイスの動作状態を管理するための方法を遂行させるプログラムを記録した非一時的コンピュータ読み取り可能な記憶媒体であって、コンピュータシステムに、
ネットワークインターフェイス間でデータ又はパケットが送受信されるネットワーク上のルートに関してネットワークインターフェイスを使用する要求をアプリケーションから受け取るのに応答して、ルートのためのルート構造体を生成し、及び、ネットワークインターフェイスに関するインターフェイスデータ構造体のルート参照カウンタをインクリメントする処理と、
アプリケーションがもはやルートを使用しないと決定すると、ルート構造体のルート満了タイマーを所定の満了時間にセットする処理と、
ルート満了タイマーが満了になったとき、ルート構造体を削除すると共に、インターフェイスデータ構造体のルート参照カウンタをデクリメントする処理と、
インターフェイスデータ構造体のルート参照カウンタをデクリメントすることでルート参照カウンタがゼロに等しくなったときに、コンフィギュレーションアプリケーションへ信号を送信して、そのコンフィギュレーションアプリケーションに、ネットワークインターフェイスをアイドリングさせることができることを通知する処理と、
を実行させるためのプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項９】
前記ネットワークインターフェイスを使用する要求をアプリケーションから受け取るのに応答して、前記ネットワークインターフェイスがまだアクティブでないとき、更に、
前記ネットワークインターフェイスをアクチベートする処理と、
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、積極的なインターフェイスカウンタをインクリメントする処理とを更に実行させ、
前記積極的なインターフェイスカウンタは、積極的にアイドリングされるように構成されたネットワークインターフェイスがいずれもアクティブでないときには、ゼロに等しくなることを特徴とする、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１０】
前記ネットワークインターフェイスがアイドリングされたことを示す信号を受信する処理と、
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、前記積極的なインターフェイスカウンタをデクリメントする処理と、
ことを更に実行させる、請求項９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１１】
前記ルート構造体を削除することは、更に、
前記ルート満了タイマーが満了となった前記ルート構造体をスキャニングし、そして前記ルート満了タイマーが満了となった前記ルート構造体を削除する処理と、
前記積極的なインターフェイスカウンタがゼロに等しいとき、前記ルート構造体のスキャニングは、ネットワークプロトコルスタックメカニズムを使用する処理とを含み、
前記積極的なインターフェイスカウンタがゼロより大きいとき、前記ルート構造体のスキャニングは、ルートドメインのドレイン機能を含むことを特徴とする、請求項１０に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記ネットワークプロトコルスタックメカニズムを使用して前記ルート満了タイマーが満了となった前記ルート構造体をスキャンすべきとき、前記ルートドメインからのドレイン機能のポインタをＮＵＬＬへ調整する処理と、
前記ドレイン機能を使用して前記ルート満了タイマーが満了となった前記ルート構造体をスキャンすべきときにドレイン機能を指示するように前記ルートドメインからのドレイン機能のポインタを調整する処理と、を更に実行せる、請求項１１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記ルート構造体のルート満了タイマーを所定の満了時間にセットすることは、
前記ルート構造体により使用されるネットワークインターフェイスが積極的にアイドリングされるように構成されたかどうか決定する処理と、
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、前記ルート満了タイマーを所定の満了時間より短い満了時間にセットする処理とを、そして
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されないときには、前記ルート満了タイマーを、前記所定の満了時間にセットする、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記ネットワークインターフェイスをアイドリングさせることは、
(1)ネットワークインターフェイスをパワーダウンし、
(2)ネットワークインターフェイスを低電力モードにスイッチし、又は
(3)ネットワークインターフェイスを通常の／アクティブな電力レベルで使用するが低プライオリティ動作若しくはメンテナンス動作しか遂行しない、
のうちの１つを含む、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１５】
ネットワークインターフェイスの動作状態を管理するための装置であって、
ネットワークインターフェイスと、
前記ネットワークインターフェイスに結合された処理サブシステムと、
を備え、
前記処理サブシステムは、
ネットワークインターフェイス間でデータ又はパケットが送受信されるネットワーク上のルートに関してネットワークインターフェイスを使用する要求をアプリケーションから受け取るのに応答して、ルートのためのルート構造体を生成し、そしてネットワークインターフェイスに関するインターフェイスデータ構造体のルート参照カウンタをインクリメントし、
アプリケーションがもはやルートを使用しないと決定すると、ルート構造体のルート満了タイマーを所定の満了時間にセットし、
ルート満了タイマーが満了になったとき、ルート構造体を削除すると共に、インターフェイスデータ構造体のルート参照カウンタをデクリメントし、そして
インターフェイスデータ構造体のルート参照カウンタをデクリメントすることでルート参照カウンタがゼロに等しくなったときに、コンフィギュレーションアプリケーションへ信号を送信して、そのコンフィギュレーションアプリケーションに、ネットワークインターフェイスをアイドリングさせることができることを通知する、
ことを特徴とする前記装置。
【請求項１６】
前記ネットワークインターフェイスを使用する要求をアプリケーションから受け取るのに応答して、前記ネットワークインターフェイスがまだアクティブでないとき、前記処理サブシステムは、
前記ネットワークインターフェイスをアクチベートし、及び
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときには、積極的なインターフェイスカウンタをインクリメントし、
前記積極的なインターフェイスカウンタは、積極的にアイドリングされるように構成されたネットワークインターフェイスがいずれもアクティブでないときには、ゼロに等しくなることを特徴とする、請求項１５に記載の装置。
【請求項１７】
前記ネットワークインターフェイスが積極的にアイドリングされるように構成されたときに、前記処理サブシステムは、前記ネットワークインターフェイスがアイドリングされたことを示す信号を受信すると、前記積極的なインターフェイスカウンタをデクリメントする、請求項１６に記載の装置。
【請求項１８】
前記処理サブシステムは、前記ルート構造体を削除するときに、
前記ルート満了タイマーが満了となった前記ルート構造体をスキャニングし、そして前記ルート満了タイマーが満了となった前記ルート構造体を削除し、
前記積極的なインターフェイスカウンタがゼロに等しいとき、前記ルート構造体をスキャニングするときに、前記処理サブシステムは、ネットワークプロトコルスタックメカニズムを使用し、
前記積極的なインターフェイスカウンタがゼロより大きいとき、前記ルート構造体のスキャニングするときに、前記処理サブシステムは、ルートドメインのドレイン機能を使用する、請求項１７に記載の装置。
【請求項１９】
前記処理サブシステムは、
前記ネットワークプロトコルスタックメカニズムを使用して前記ルート満了タイマーが満了となった前記ルート構造体をスキャンすべきとき、前記ルートドメインからのドレイン機能のポインタをＮＵＬＬへ調整し、
前記ドレイン機能を使用して前記ルート満了タイマーが満了となった前記ルート構造体をスキャンすべきときにドレイン機能を指示するように前記ルートドメインからのドレイン機能のポインタを調整する、請求項１８に記載の装置。
【請求項２０】
前記処理サブシステムは、前記ネットワークインターフェイスをアイドリングさせるときに、
(1)ネットワークインターフェイスをパワーダウンし、
(2)ネットワークインターフェイスを低電力モードにスイッチし、又は
(3)ネットワークインターフェイスを通常の／アクティブな電力レベルで使用するが低プライオリティ動作若しくはメンテナンス動作しか遂行しない、
のうちの１つを行う、請求項１５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク接続を与える電子装置に係る。より詳細には、本発明は、ネットワーク接続のための改良されたアイドリングを促進する電子装置に係る。
【背景技術】
【０００２】
多数の近代的な電子装置は、その装置と他の装置との間でワイヤード又はワイヤレスネットワークを横切ってデータを転送するのに使用できるネットワークサブシステムを備えている。例えば、これら電子装置は、ＢｌｕｅｔｏｏｔｈTMネットワークサブシステム、セルラーネットワークサブシステム、ユニバーサルシリアルバス（ＵＳＢ）ネットワークサブシステム、インスティテュート・フォア・エレクトリカル・アンド・エレクトロニック・エンジニアズ（ＩＥＥＥ）８０２．１１ワイヤレスネットワークサブシステム、イーサネットネットワークサブシステム、或いはワイヤード又はワイヤレスパーソナルエリアネットワーキング（ＰＡＮ）サブシステムを含む。これらの電子装置において、各ネットワークサブシステムは、対応するネットワーク上で通信するために電子装置により使用されるハードウェア（例えば、送信器、ラジオ等）及び／又はソフトウェアを含むインターフェイスを有する。
【０００３】
これら電子装置に幾つかにおいて、所与のネットワークサブシステムインターフェイスの動作モードは、インターフェイスマネージャータスクによりコントロールされる。インターフェイスマネージャータスクの機能の１つは、インターフェイス上にネットワークトラフィックがないことに基づいてインターフェイスをパワーダウンすることにより節電すべきときを決定することである。これらの装置では、インターフェイス上のネットワークトラフィックのレベルを決定するときに、インターフェイスマネージャータスクは、典型的に、インターフェイスの物理的レイヤにおいてある最小レートでパケットが転送されているかどうか決定する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
インターフェイスマネージャータスクは、インターフェイスをパワーダウンすべきかどうかの決定をなすために物理的レイヤにおいてパケットが転送されるレートを使用するので、インターフェイスマネージャータスクは、アプリケーションによりまだ使用されているインターフェイスを誤ってパワーダウンすることがある。特に、アプリケーションがまだアクティブである（例えば、ユーザがまだ退出していない）が、所定の時間中インターフェイスを使用してパケットを単に転送していない場合に、インターフェイスマネージャータスクは、インターフェイスをパワーダウンすることがある。アプリケーションがその後にパケットの転送を再開すると、アプリケーションは、インターフェイスがダウンしていることを発見し、そしてユーザにエラーを信号することができる（又はインターフェイスを再アクチベートするよう強制されてもよい）。これはユーザを苛立たせる。例えば、２人以上のユーザが、装置間でゲームデータを転送するためにネットワーク接続に依存するポータブル電子装置（例えば、ラップトップ又はスマートホン）においてゲームアプリケーションを使用していると仮定する。ゲームデータの転送中に所定時間より長い休止が生じた場合には、一方の装置のインターフェイスマネージャータスクが、それに対応するインターフェイスをパワーダウン（さもなければ、そのインターフェイスの動作モードを調整）することがあり、これは、インターフェイスを通してゲームデータを転送する電子装置の能力を混乱させ、潜在的にゲームの中断を招くことがある。
【課題を解決するための手段】
【０００５】
本発明は、ネットワークインターフェイスの動作状態をコントロールするシステムを提供する。動作中、ルートのためにネットワークインターフェイスを使用するというアプリケーションからの要求を受け取るのに応答して、システムは、ルートのためのルート構造体を生成し、そしてネットワークインターフェイスのためのインターフェイスデータ構造体におけるルート参照カウンタをインクリメントする。その後、アプリケーションがルートをもはや使用しないと決定すると、システムは、ルート構造体におけるルート満了タイマーを所定の満了時間にセットする。ルート満了タイマーが満了となると、システムは、ルート構造体を削除し、そしてインターフェイスデータ構造体におけるルート参照カウンタをデクリメントする。インターフェイスデータ構造体におけるルート参照カウンタのデクリメントでルート参照カウンタがゼロに等しくされたときに、システムは、コンフィギュレーションアプリケーションに信号を送信して、ネットワークインターフェイスをアイドリングさせることができることをアプリケーションに通知する。
【０００６】
ある実施形態では、ネットワークインターフェイスを使用するというアプリケーションからの要求を受け取るのに応答して、ネットワークインターフェイスがまだアクティブでない場合に、システムは、ネットワークインターフェイスをアクチベートする。ネットワークインターフェイスが積極的にアイドル状態になるよう構成されたときには、ネットワークインターフェイスをアクチベートする際に、システムは、積極的なインターフェイスカウンタもインクリメントする。（これらの実施形態では、積極的にアイドル状態になるよう構成されたネットワークインターフェイスがアクティブでないときに、積極的なインターフェイスカウンタがゼロに等しくなる。）
【０００７】
ある実施形態では、積極的にアイドル状態になるよう構成されたネットワークインターフェイスがアイドル状態になったことを指示する信号を受信した際に、システムは、積極的なインターフェイスカウンタをデクリメントする。
【０００８】
ある実施形態では、ルート構造体を削除するとき、システムは、ルート満了タイマーが満了であるルート構造体をスキャンし、及びルート満了タイマーが満了であるルート構造体を削除する。これら実施形態では、積極的なインターフェイスカウンタがゼロに等しくなったときに、システムは、ネットワークプロトコルスタックメカニズムを使用してルート構造体をスキャンする。しかしながら、積極的なインターフェイスカウンタがゼロより大きくなると、システムは、ルートドメインにおけるドレイン機能を使用してルート構造体をスキャンする。
【０００９】
ある実施形態では、システムは、ネットワークプロトコルスタックメカニズムを使用して満了となったルートをスキャンすべきときルートドメインからのドレイン機能のポインタをＮＵＬＬへ調整する。又、これらの実施形態では、システムは、ドレイン機能を使用して満了となったルートをスキャンすべきときにドレイン機能を指示するようにルートドメインからのドレイン機能のポインタを調整する。
【００１０】
ある実施形態では、ルート構造体におけるルート満了タイマーを所定の満了時間にセットするときに、システムは、ルート構造体により使用されるネットワークインターフェイスが積極的にアイドル状態となるように構成されるかどうか決定する。もしそうであれば、システムは、ルート満了タイマーを短い満了時間にセットする。さもなければ、システムは、ルート満了タイマーを通常の満了時間にセットする。これらの実施形態では、短い満了時間は、通常の満了時間より短い。
【００１１】
ある実施形態では、ネットワークインターフェイスをアイドリングさせるときに、システムは、（１）ネットワークインターフェイスをパワーダウンし、（２）ネットワークインターフェイスを低電力モードにスイッチし、又は（３）ネットワークインターフェイスを通常／アクティブ電力レベルで使用するが低プライオリティ動作又はメンテナンス動作のみの遂行に使用する、のうちの１つを行う。
【図面の簡単な説明】
【００１２】
【図１】ここに述べる実施形態によるコンピュータシステムのブロック図である。
【図２】ここに述べる実施形態によるオペレーティングシステムを示す。
【図３】ここに述べる実施形態によるオペレーティングシステムにおける規範的インターフェイスデータ構造及びルートデータ構造を示すブロック図である。
【図４】ここに述べる実施形態による多数の規範的なカーネルプロトコルドメイン及びそれに関連したドメイン特有機能を示すブロック図である。
【図５】ここに述べる実施形態によるオペレーティングシステム及び多数のアプリケーションのブロック図である。
【図６】ここに述べる実施形態によるインターフェイスを管理するプロセスを示すフローチャートである。
【図７】ここに述べる実施形態によるインターフェイスをアイドリングさせるプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１３】
添付図面において、同じ要素は、同じ参照番号で示す。
【００１４】
以下の説明は、当業者がここに述べる実施形態を具現化し利用できるようにするためのもので、特定の用途及びその要件について表現されている。又、当業者であれば、ここに述べる実施形態に対して種々の変更が容易に明らかであり、そしてここに定義する一般的な原理は、ここに述べる実施形態の精神及び範囲から逸脱せずに、他の実施形態及び用途にも適用することができる。従って、ここに述べる実施形態は、図示された実施形態に限定されず、ここに開示する原理及び特徴と一貫した最も広い範囲に従うものとする。
【００１５】
ここに詳細に述べるデータ構造及びコードは、コンピュータ読み取り可能な記憶媒体に記憶することができる。コンピュータ読み取り可能な記憶媒体は、コンピュータシステムにより使用するためのデータ構造及びコードを記憶できる装置又は媒体（又は装置及び／又は媒体の組み合わせ）を含む。例えば、コンピュータ読み取り可能な記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＲＤＲＡＭ、ＤＤＲ／ＤＤＲ２／ＤＤＲ３  ＳＤＲＡＭ、等）、磁気又は光学記憶媒体（例えば、ディスクドライブ、磁気テープ、ＣＤ、ＤＶＤ）、或いはデータ構造又はコードを記憶できる他の媒体を含めて、揮発性メモリ又は不揮発性メモリを含むことができる。ここに述べる実施形態では、コンピュータ読み取り可能な記憶媒体は、送信信号のような非法定のコンピュータ読み取り可能な記憶媒体を含まないことに注意されたい。
【００１６】
以下に述べる方法及びプロセスは、コンピュータ読み取り可能な記憶媒体に記憶されるプログラムコードとして実施することができる。コンピュータシステム（例えば、図１のコンピュータシステム１００）が、コンピュータ読み取り可能な記憶媒体に記憶されたプログラムコードを読み取って実行するときには、コンピュータシステムは、コンピュータ読み取り可能な記憶媒体に記憶されたプログラムコードで方法及びプロセスを遂行する。
【００１７】
以下の説明で述べる方法及びプロセスは、ハードウェアモジュールに含ませることができる。例えば、ハードウェアモジュールは、これに限定されないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、及び他のプログラマブルロジック装置を含むことができる。ハードウェアモジュールがアクチベートされると、ハードウェアモジュールは、そのハードウェアモジュール内に含まれた方法及びプロセスを遂行する。ある実施形態では、ハードウェアモジュールは、方法及びプロセスを遂行するように（例えば、インストラクションを実行することにより）構成される１つ以上の汎用回路を含む。
【００１８】
概略
ここに述べる実施形態は、ネットワークサブシステムにおけるインターフェイスのための「積極的」アイドリングを促進する。実施形態に基づき、「アイドリング」とは、インターフェイスが完全にパワーダウンされるか、低電力（しかし、少なくとも部分的に動作する）モードへスイッチされるか、或いは通常に使用される（が、低プライオリティ又はインターフェイスメンテナンス動作を遂行するだけ）ことを意味する。この説明で使用する「積極的」という語は、システムリソースの使用最適化を促進する、インターフェイスのためのより応答性の高い又はインテリジェントなアイドリングを表わす。
【００１９】
ここに述べる実施形態では、所与のインターフェイスは、積極的にアイドリングされるように構成することができる。そのようなインターフェイスでは、オペレーティングシステムは、インターフェイスを参照するルートを監視して、ルートがもはや使用されないとき、ひいては、満了となって削除されたときを決定する。インターフェイスを参照する最後のルートが削除されると、オペレーティングシステムは、インターフェイスがアイドリングの候補であることをインターフェイスマネージャータスクに通知する（例えば、コンフィギュレーションエージェントに通知し、これが、次いで、インターフェイスマネージャータスクに通知する）。インターフェイスマネージャータスクは、次いで、インターフェイスをアイドリングさせる。
【００２０】
ある実施形態では、インターフェイスがアイドリングの候補であるという通知を受け取ると、インターフェイスマネージャータスクは、オペレーティングシステムにより通知が送られて以来、インターフェイスを参照するルートが確立されていないことを保証するために、オペレーティングシステムとでチェックを行う。インターフェイスを参照する新たなルートが確立された場合には、インターフェイスマネージャータスクは、その通知を無視し、そしてインターフェイスのオペレーティングモードを不変のままにする。
【００２１】
ここに述べる実施形態では、オペレーティングシステムは、カーネルプロトコルドメインに関連したタスクを周期的に遂行するためのメカニズムを含む。これら実施形態では、オペレーティングシステムは、オペレーティングシステムの異なるプロトコル（例えば、ルーティング、ＩＰｖ４、等）に各々関連したカーネルプロトコルドメインのリストを含む。カーネルプロトコルドメインの各々は、対応するドメインに対して１つ以上のタスクを遂行するドメイン特有機能のセットに関連付けられる。オペレーティングシステムは、カーネルプロトコルドメインのリストを通して周期的にサイクルして、それに関連したドメイン特有機能を実行する。又、ここに述べる実施形態は、ドメイン特有機能の１つがドメイン機能であるところのルートドメインも含む。実行時に、ドメイン機能は、オペレーティングシステムにおける満了となったルートを削除する。
【００２２】
ここに述べる実施形態では、各ルートは、ルートがもはやアプリケーションにより使用されないとき（例えば、アプリケーションが、ルートを参照するソケットを閉じるとき）オペレーティングシステムによりセットされる満了タイマーを含む。タイマーが満了となると、ルートが満了となり、（１）オペレーティングシステムにおける対応プロトコルメカニズム、又は（２）ルートドメインに対するドレイン機能、のいずれかにより削除することができる。これらの実施形態では、ルートにより参照されるインターフェイスが積極的にアイドリングされるように構成される場合に、タイマーは、積極的な短い満了時間にセットされる。さもなければ、ルートにより参照されるインターフェイスが積極的にアイドリングされるように構成されない場合には、タイマーは、大きさの程度が典型的に短い満了時間より長いデフォールト満了時間にセットされる。
【００２３】
ある実施形態では、オペレーティングシステムは、積極的にアイドリングされるように構成されたアクティブなインターフェイスの数を追跡するためにオペレーティングシステムが使用する積極的なインターフェイスカウンタを維持する。積極的にアイドリングされるように構成された各インターフェイスがアクチベートされるときは、オペレーティングシステムは、積極的なインターフェイスカウンタをインクリメントする。他方、積極的にアイドリングされるように構成された各インターフェイスがアイドリングされるときは、オペレーティングシステムは、積極的なインターフェイスカウンタをデクリメントする。積極的なインターフェイスカウンタがゼロに等しくなると（即ち、接触的なアイドリングで構成されるアクティブなインターフェイスがないと）、オペレーティングシステムは、ルートドメインにおけるドレイン機能のポインタをＮＵＬＬにセットし、これは、ドレイン機能がカーネルプロトコルドメインを通してサイクルするたびにオペレーティングシステムにより実行されるのを防止する。しかしながら、積極的なインターフェイスカウンタが非ゼロであるときに、オペレーティングシステムは、ルートドメインにおけるドレイン機能のポインタを、ドレイン機能のポインタにセットする。
【００２４】
コンピュータシステム
図１は、ここに述べる実施形態によるコンピュータシステム１００のブロック図である。このコンピュータシステム１００は、処理サブシステム１０２、メモリサブシステム１０４及びネットワークサブシステム１０６を備えている。
【００２５】
処理サブシステム１０２は、計算動作を遂行するように構成された１つ以上の装置を備えている。例えば、処理サブシステム１０２は、これに限定されないが、１つ以上のマイクロプロセッサ、ＡＳＩＣ、マイクロコントローラ、又はプログラム可能なロジック装置を含む。
【００２６】
メモリサブシステム１０４は、処理サブシステム１０２及びネットワークサブシステム１０６のためのデータ及び／又はインストラクションを記憶するための１つ以上の装置を含む。例えば、メモリサブシステム１０４は、ＤＲＡＭ、フラッシュメモリ、及び／又は他の形式のメモリを含む。更に、メモリサブシステム１０４は、メモリへのアクセスをコントロールするためのメカニズムを含む。ある実施形態では、メモリサブシステム１０４は、コンピュータシステム１００のメモリに結合された１つ以上のキャッシュの配列体を含むメモリハイアラーキーを備えている。これら実施形態の幾つかにおいて、キャッシュの１つ以上が処理サブシステム１０２に配置される。
【００２７】
ある実施形態では、メモリサブシステム１０４は、１つ以上の大容量の大量記憶装置（図示せず）に結合される。例えば、メモリサブシステム１０４は、磁気又は光学ドライブ、ソリッドステートドライブ、又は別の形式の大量記憶装置に結合される。これら実施形態では、メモリサブシステム１０４は、コンピュータシステム１００により、頻繁に使用するデータのための高速アクセス記憶装置として使用され、一方、大量記憶装置は、低い頻度で使用されるデータを記憶するのに使用される。
【００２８】
ネットワークサブシステム１０６は、ワイヤード及び／又はワイヤレスネットワークに結合されて通信を行うように（即ち、ネットワーク動作を行うように）構成された１つ以上の装置を備えている。例えば、ネットワークサブシステム１０６は、これに限定されないが、ＢｌｕｅｔｏｏｔｈTMネットワークシステム、セルラーネットワークシステム（例えば、３Ｇ／４Ｇネットワーク）、ユニバーサルシリアルバス（ＵＳＢ）ネットワークシステム、インスティテュート・フォア・エレクトリカル・アンド・エレクトロニック・エンジニアズ（ＩＥＥＥ）８０２．１１（即ち、８０２．１１ワイヤレスネットワーク）に述べられた規格に基づくネットワークシステム、イーサネットネットワークサブシステム、或いはワイヤード又はワイヤレスパーソナルエリアネットワーキング（ＰＡＮ）システム（例えば、赤外線データ関連性（ＩｒＤＡ）、ウルトラワイドバンド（ＵＷＢ）、Ｚ−Ｗａｖｅ、又はＩＥＥＥ８０２．１５に述べた規格に基づくネットワーク）を含む。
【００２９】
ネットワークサブシステム１０６は、コントローラ、ワイヤレスネットワーク接続のためのラジオ／アンテナ、ハードワイヤード電気的接続のためのソケット／プラグ、及び／又はワイヤード及び／又はワイヤレスネットワークに接続し、それを経て通信し、そしてそれを経てデータ及び事象を取り扱うのに使用される他の装置を含む。これら実施形態の幾つかにおいて、ネットワークサブシステム１０６は、他の装置とのアドホックネットワーク接続（例えば、アドホックワイヤレスＰＡＮ）を形成するための１つ以上のメカニズムを含む。
【００３０】
以下の説明において、各ネットワーク接続の物理的レイヤにおいてネットワークに接続し、それを経て通信し、そしてそれを経てデータ及び事象を取り扱うのに使用されるメカニズムのサブセットを、集合的に、それに対応するネットワーク接続に対する「インターフェイス」と称する。ある実施形態では、各インターフェイスは、アプリケーション（例えば、図５のインターフェイスマネージャータスク５０４）でインターフェイスの動作モードをコントロールできるようにするための１つ以上のメカニズムを含む。
【００３１】
コンピュータシステム１００内では、処理サブシステム１０２、メモリサブシステム１０４、及びネットワークサブシステム１０６がバス１１０を使用して一緒に結合される。バス１１０は、互いにコマンド及びデータを通信するためにサブシステムが使用する電気的接続である。明瞭化のために１つのバス１１０しか示されていないが、異なる実施形態では、サブシステム間に異なる数又は構成の電気的接続を含むことができる。
【００３２】
ある実施形態では、バス１１０は、パケットバスであり、そしてサブシステム間の通信は、バス１１０を経てコマンド及びデータパケットを所定のフォーマットで送信することを含む。別の実施形態では、バス１１０は、１つ以上の専用の信号ラインを含み、そしてサブシステム間の通信は、１つ以上の専用の信号ラインを経てサブシステムにシグナリングすることを含む。
【００３３】
図１には、個別のサブシステムとして示されているが、ある実施形態では、所与のサブシステムの幾つか又は全部を、コンピュータシステム１００における他のサブシステムの１つ以上に統合することができる。別の実施形態は、このように構成できるが、明瞭化のために、サブシステムを別々に説明する。
【００３４】
コンピュータシステム１００は、多数の異なる形式の電子装置へ合体することができる。一般的に、これらの電子装置は、アイドリングさせることのできるネットワークインターフェイスを伴う装置を含む。例えば、コンピュータシステム１００は、デスクトップコンピュータ、ラップトップコンピュータ、サーバー、メディアプレーヤ、機器、サブノートブック／ネットブック、タブレットコンピュータ、セルラーホン、テスト装置の断片、ネットワーク機器、セットトップボックス、パーソナルデジタルアシスタント（ＰＤＡ）、スマートホン、玩具、コントローラ、又は別の装置の一部分である。
【００３５】
特定のコンポーネントを使用してコンピュータシステム１００を説明するが、別の実施形態では、異なるコンポーネント及び／又はサブシステムがコンピュータ１００に存在してもよい。例えば、コンピュータシステム１００は、１つ以上の付加的な処理サブシステム１０２、メモリサブシステム１０４及び／又はネットワークサブシステム１０６を含んでもよい。或いは又、サブシステムの１つ以上がコンピュータシステム１００に存在しなくてもよい。
【００３６】
ある実施形態では、コンピュータシステム１００は、図１に示されていない１つ以上の付加的なサブシステムを含んでもよい。例えば、コンピュータシステム１００は、これに限定されないが、ディスプレイに情報を表示するためのディスプレイサブシステム、データ収集サブシステム、オーディオサブシステム、アラームサブシステム、メディア処理サブシステム、及び／又は入力／出力（Ｉ／Ｏ）サブシステムを含む。
【００３７】
オペレーティングシステム
図２は、ここに述べる実施形態に従って処理サブシステム１０２により実行されるオペレーティングシステム２００を示す。一般的に、オペレーティングシステム２００は、コンピュータシステム１００のシステムハードウェア（例えば、サブシステム１０２−１０６）と、処理サブシステム１０２により実行されるアプリケーション、例えば、アプリケーション２０２−２０６（例えば、各々、ｅ−メールアプリケーション、ウェブブラウザ及びゲームアプリケーション）との間の仲介手段として働く。例えば、オペレーティングシステム２００は、これに限定されないが、カリフォルニア州クパチーノのアップル社からのＯＳ  Ｘオペレーティングシステム、コロラド州ボルダーのＦｒｅｓｓＢＳＤファウンデーションからのＦｒｅｅＢＳＤオペレーティングシステム、又は別のオペレーティングシステムである。オペレーティングシステム及びその一般的な機能は、良く知られており、ここでは詳細に説明しない。
【００３８】
以下の説明において、オペレーティングシステム２００を参照するために「カーネル」を使用して実施形態を説明する。カーネルは、オペレーティングシステム２００のコア部を含み、そしてアプリケーション２０２−２０６がコンピュータシステム１００のシステムハードウェアにアクセスし及び／又はそれをコントロールしてそれらの機能を遂行するために使用できるシステムハードウェアの低レベル抽象化レイヤをなす。
【００３９】
ネットワークサブシステム１０６の適当なインターフェイスを使用してコンピュータシステム１００のアプリケーションとのパケットの転送を管理するために、オペレーティングシステム２００は、多数の論理的レイヤを各々含む１つ以上のネットワークプロトコルスタック（図示せず）を維持する。例えば、オペレーティングシステムは、リンク、インターネット、トランスポート、及びアプリケーションレイヤを含むインターネットプロトコルスタックを維持することができる。別の例として、オペレーティングシステムは、アプリケーション、プレゼンテーション、セッション、トランスポート、ネットワーク、データリンク、及び物理的レイヤを含むＯＳＩモデルに基づいてプロトコルスタックを維持することができる。プロトコルスタックの各レイヤにおいて、オペレーティングシステムは、レイヤに関連した機能を遂行するためのコントロールメカニズム及びデータ構造を含む。プロトコルスタックにおける各レイヤに関連した機能は、この分野で知られており、従って、ここでは詳細に説明しない。
【００４０】
オペレーティングシステムにより維持されるネットワーク接続データ
ここに述べる実施形態では、オペレーティングシステム２００は、ネットワークサブシステム１０６におけるネットワーク接続の動作を監視し、構成し及び／又はコントロールするための１つ以上のデータ構造体含む。例えば、ある実施形態では、オペレーティングシステム２００は、ネットワークサブシステム１０６におけるネットワークインターフェイス（例えば、イーサネットインターフェイス、３Ｇ／４Ｇセルラーインターフェイス、ＢｌｕｅｔｏｏｔｈTMインターフェイス、等）のためのレコードを保持するのに使用されるインターフェイスデータ構造体(structures)（「インターフェイス構造(structs)」と交換可能）を含む。これら実施形態では、インターフェイス構造は、インターフェイスの名前、インターフェイスのアドレス（例えば、メディアアクセスコントロール（ＭＡＣ）アドレス）、インターフェイスフラグ、タイマー、オペレーティングモードデータ、コンフィギュレーションデータ、及び／又はインターフェイスに関する他の情報のような情報及びデータを含む。インターフェイス構造に典型的に存在する情報及びデータは、この分野で知られており、ここでは、詳細に説明しない。
【００４１】
オペレーティングシステム２００は、更に、オペレーティングシステム２００が所与の行先にパケットを送信するための適当なネットワークインターフェイスを選択できるようにするルート情報のレコードを保持するのに使用されるルートデータ構造体(structures)（「ルート構造(structs)」と交換可能）のセットも含む。ここに述べる実施形態では、特定のサブネット又は行先へのルートがアプリケーションにより要求されて分析されたときに、オペレーティングシステム２００は、ルートに関する情報を伴うルート構造を生成する。或いは又、既存のルート構造を伴うサブネット又は行先のための「テンプレート」ルートをコピーして、「クローン」ルートを生成することもでき、オペレーティングシステム２００は、クローンルートに関する情報を伴うルート構造を生成することができる。次いで、ルート構造における情報を使用し、ネットワークサブシステム１０６における関連インターフェイスを使用してパケットをルーティングすることができる。ここに述べる実施形態では、ルート構造は、ルートのための行先アドレス、ゲートウェイアドレス、フラグ、アプリケーション参照カウント（即ち、ルートを使用するアプリケーションのカウント）、使用カウント、インターフェイスＩＤ、及びルートに関する他の情報、等の情報を含むことができる。ルート構造に典型的に存在する情報及びデータは、この分野で知られており、ここでは、詳細に説明しない。
【００４２】
ここに述べる実施形態では、２つ以上のアプリケーションが、所与のルート構造で述べたルートを使用して、パケットを関連行先へ送信することができる。これらのケースでは、ルートを使用する複数のアプリケーションがあることを指示するために、ルート構造におけるアプリケーション参照カウントをインクリメントすることができる。
【００４３】
ここに述べる実施形態では、オペレーティングシステム２００は、複数の関連インターフェイス構造を含む１つ以上のインターフェイスをネットワークサブシステム１０６に含んでいる。例えば、ネットワークサブシステム１０６におけるＷｉＦｉネットワークインターフェイスは、複数のピアツーピアネットワーク接続を取り扱うために使用される複数のバーチャルインターフェイスをなすことができる。明瞭化のため単一インターフェイス構造を使用する実施形態を説明するが、複数のインターフェイス構造を伴う実施形態は、同様に機能する。例えば、ある実施形態は、複数のインターフェイス構造を伴うＢｌｕｅｔｏｏｔｈインターフェイスを含む。以下に述べるメカニズムと同様のメカニズムを使用して、これらの実施形態は、インターフェイス構造がルートにより参照されないときに、インターフェイスをアイドリングさせることができる。
【００４４】
ここに述べる実施形態におけるインターフェイスデータ構造体は、既存のインターフェイスデータ構造体とは異なる。というのは、ここに述べる実施形態におけるインターフェイスデータ構造体は、（１）積極的なアイドリングフラグ、及び（２）ルート参照カウンタを含むからである。以下に詳細に述べるように、積極的なアイドリングフラグは、どのインターフェイスを積極的にアイドリングすべきか決定するためにオペレーティングシステム２００により使用され、そしてルート参照カウンタは、インターフェイスを参照するルート（即ち、対応するルート構造内のインターフェイスＩＤをチェックすることによりインターフェイスを使用する／参照すると決定されるルート）の数を追跡するのに使用される。インターフェイスのアイドリングを述べるためにこの説明で使用される「積極的」とは、コンピュータシステム１００及びネットワークサブシステム１０６内の実際の動作条件に応答するインターフェイスアイドリングを指示することに注意されたい。より応答性の高いアイドリングは、コンピュータシステム１００がインターフェイスの電力消費を最適化し、そしてアプリケーションからのデータ転送の要求に対するインターフェイスの応答性に対して電力消費をバランスさせることができるようにする。
【００４５】
図３は、ここに述べる実施形態によるオペレーティングシステム２００における規範的なインターフェイス（ＩＦ）構造３０６−３１０及びルート構造３１２−３１６を示すブロック図である。図３において明らかなように、ネットワークサブシステム１０６は、インターフェイス３００−３０４を備え、これらは、例えば、各々、ＢｌｕｅｔｏｏｔｈTMインターフェイス、イーサネットインターフェイス、及び８０２．１１ワイヤレスネットワークインターフェイスである。上述したように、アプリケーション２０２−２０６は、例えば、各々、ｅ−メールアプリケーション、ウェブブラウザ、及びゲームアプリケーションであり、各々、オペレーティングシステム２００におけるルート及びネットワークサブシステム１０６における対応インターフェイス３００−３０４を使用して、データパケットを他の装置へ転送する。
【００４６】
ここに示す実施形態では、オペレーティングシステム２００は、インターフェイス３０２及び３０４を経て対応する行先ホストへパケットを転送できるようにするためのルートを確立している。オペレーティングシステム２００に利用できるものとして図３に示されたルートは、例示の目的で簡単化されたものであり、別の実施形態では、付加的な及び／又は異なる形式のルートを含むことに注意されたい。例えば、インターフェイス３００に対してデフォールトルートを確立することができる。更に、既に確立されたルートが使用され、それらのルートを確立するための技術（特に、各ルートに関連したネットワークプロトコルに基づく）は、この分野で知られており、従って、ここでは詳細に説明しない。
【００４７】
インターフェイス構造３０６−３１０は、各々、その基礎的なインターフェイス３００−３０４のアイデンティティ、コンフィギュレーション、能力及び要件をオペレーティングシステム２００が決定できるようにする情報及びデータを含む。ルート構造３１２−３１６は、オペレーティングシステム２００がそれらルートを経てインターフェイス３００−３０４の中からその関連インターフェイスへパケットをルーティングできるようにする情報及びデータを含む。例えば、ルートの行先、ルートを参照するオープンソケット／アプリケーションの数、並びにルートの形式及びコンフィギュレーションを識別する情報と共に、ルート構造３１２は、インターフェイス構造３０８のポインタも含む。上述したように、インターフェイス構造３０８は、関連ルートを使用するときにオペレーティングシステム２００をインターフェイス３０２に向けさせるインターフェイス名及び／又はＭＡＣアドレスを含む。
【００４８】
ここに例示する実施形態では、アプリケーション２０２及び２０４は、同じインターフェイス３０２を参照するルートを使用する。例えば、インターフェイス３０２がイーサネットインターフェイスであると仮定すれば、両アプリケーションが（例えば、異なる行先ホストと共に）個別のルートを使用して、オペレーティングシステム２００がそれらアプリケーションからのパケットをイーサネットインターフェイスへ転送し、ルートの行先へ送信できるようにする。このケースでは、ルート構造３１２及び３１４によって指し示されるインターフェイス構造３０８内のルート参照カウンタは、２つのルートがインターフェイス３０２を参照することを指示できる。対照的に、インターフェイス３０４に関連しそしてルート構造３１６のみにより指し示されるインターフェイス構造３１０内のルート参照カウンタは、１つのルートがインターフェイス３０４を参照することを指示できる。
【００４９】
ある実施形態では、コンピュータシステム１００は、各インターフェイスのための装置ドライバを備えている。実行時に、装置ドライバは、インターフェイスを、積極的にアイドリングされるように構成する（即ち、オペレーティングシステム２００内の対応するインターフェイス構造において積極的なアイドリングフラグをセットする）。或いは又、オペレーティングシステム２００は、環境変数、ファイル、又はオペレーティングシステムスイッチを使用して、インターフェイスを、積極的にアイドリングされるよう構成する。
【００５０】
ルート及びインターフェイス構造は、それら構造内の情報のアクセス及び読み取りを行えるようにオペレーティングシステム２００内に多数の仕方で配置されることに注意されたい。例えば、ある実施形態では、ルート及び／又はインターフェイス構造は、オペレーティングシステム２００内のリンクされたリストへと編成される。オペレーティングシステム２００におけるそれら構造の配置は、この分野で一般的に知られており、従って、ここでは詳細に述べない。
【００５１】
満了になるルート
ここに述べる実施形態では、幾つかのルートは、オペレーティングシステム２００によって一時的に維持されるだけである。ルート構造、ひいては、オペレーティングシステム２００に対するルーティングテーブルの対応エントリーは、ルートが少なくとも１つのアプリケーションによりもはや使用されなくなった後の所定時間中だけオペレーティングシステム２００によりそれらルートとして使用できるように保持される。所定時間が満了となると、ルート構造が削除され、オペレーティングシステム２００により維持されるルーティングテーブルからルートを除去することができる。
【００５２】
より詳細には、ここに述べる実施形態では、オペレーティングシステム２００は、アプリケーションがソケットをオープンし、アプリケーションがデータパケットをネットワークプロトコルスタックの下位レイヤへ送信して所与の行先ホストへ転送できるようにするメカニズムをなす。アプリケーションがソケットの使用を終了するか又はネットワーク接続を失うと、アプリケーションは、ソケットをクローズする。或いは又、アプリケーションがクラッシュした場合には、オペレーティングシステム２００は、ソケットをクローズする。ソケットをクローズすると、オペレーティングシステム２００は、その関連ルートに対するルート構造のアプリケーション参照カウントをデクリメントさせる。アプリケーションが、ルートを使用する最後のアプリケーションである場合には、デクリメント動作で、ルート構造のアプリケーション参照カウントがゼロに落ちる。
【００５３】
ルート構造のアプリケーション参照カウントがゼロに落ちると、オペレーティングシステム２００は、ルート構造における満了タイマーを所定値へ更新し、そして満了タイマーを使用してルート構造に対するカウントダウンをスタートする。満了タイマーがゼロに等しくなると、ルート構造は、オペレーティングシステム２００による削除に使用できるようになる。（ルートの実際の削除は、削除メカニズムが満了となったルート構造をその後に削除するまで行われないことに注意されたい。）
【００５４】
以下に述べるように、ここに述べる実施形態は、満了となったルートを削除するための多数の異なる削除メカニズムを含む。例えば、オペレーティングシステム２００は、ネットワークプロトコルスタックにデフォールトルート満了メカニズムを含むことができる。更に、オペレーティングシステム２００は、積極的なアイドリングのために少なくとも１つのアクティブなインターフェイスが構成される限りオペレーティングシステム２００により実行されるルートプロトコルドメイン４０６に関連したドレイン機能４１２（図４を参照）を含むことができる。
【００５５】
これらの実施形態では、満了タイマーがセットされる所定値は、ルートが参照するインターフェイス（即ち、ルート構造で識別されるインターフェイス）のコンフィギュレーションに依存する。ルートが、積極的なアイドリングに構成されたインターフェイスを参照する場合には、所定値は、短い積極値である。例えば、ここに述べる実施形態は、１０秒、３０秒、１分、５分又は別の値のような値を使用する。或いは又、ルートが、積極的なアイドリングに構成されていないインターフェイスを参照する場合には、所定値は、デフォールト（より長い）値となる。例えば、ここに述べる実施形態は、２０分、１時間、２４時間、２日、又は別の値のような値を使用する。
【００５６】
ある実施形態では、積極的なアイドリングに構成されないインターフェイスを参照するルートに対して使用される所定値は、既存のシステムにおいて満了になるルートに使用される同じ値であることに注意されたい。例えば、ある実施形態では、積極的なアイドリングに構成されないインターフェイスを参照するＡＲＰルートに対して２０分のデフォールト値が使用される。
【００５７】
ここに述べる実施形態は、積極的なアイドリングに構成されたインターフェイスをルートが参照するかどうかに基づいてルートの満了時間のセットが異なるので、既存のシステムとは異なる。参照されたインターフェイスが積極的なアイドリングに構成されるときにルート満了値を短い値にセットすることによって、オペレーティングシステム２００は、ルートが既存のシステムのルートより急速に満了となることを保証する（典型的に数桁も急速に）。これは、次いで、オペレーティングシステム２００が基礎的なインターフェイスをより急速にアイドリングできるようにし、インターフェイスが、使用されないルートに対してアクティブな状態に不必要に維持されるのを防止する上で役立つ。
【００５８】
プロトコルスタックメカニズムを使用して満了になったルートを削除
上述したように、オペレーティングシステム２００は、関連するネットワークプロトコルスタックに対して古い／満了となったデータを削除するためのプロトコルスタックメカニズムを含む。一般的に、プロトコルスタックメカニズムは、オペレーティングシステム２００により所定の間隔で実行される。例えば、ある実施形態では、プロトコルスタックメカニズムは、１０分間隔で実行される。プロトコルスタックメカニズムは、満了タイマーがゼロに達したところのルート構造を削除することができる。プロトコルスタックメカニズムは、この分野で知られており、それ故、ここでは詳細に説明しない。
【００５９】
ルートドメイン特有のドレイン機能を使用して満了になったルートを削除
オペレーティングシステム２００は、カーネルプロトコルドメインのセットを通して周期的にサイクルしてカーネルプロトコルドメインに関連したタスクを遂行するためのメカニズムをなす。図４は、ここに述べる実施形態による多数の規範的なカーネルプロトコルドメイン４００及びそれに関連したドメイン特有の機能４０８−４１２を示すブロック図である。
【００６０】
図４において明らかなように、ドメイン４００は、カーネルプロトコルドメイン４０２−４０４及びルートドメイン４０６を含む。カーネルプロトコルドメイン４０２及び４０４は、各々、多数の異なるプロトコルドメインの１つである。より詳細には、オペレーティングシステム２００によりサポートされるカーネルプロトコルは、カーネルプロトコルドメインを有する。一例として、カーネルプロトコルドメイン４０２は、ＩＰｖ４ドメインを含み、そしてカーネルプロトコルドメイン４０４は、アドレス分析プロトコル（ＡＲＰ）ドメインを含む。或いは又、カーネルプロトコルドメイン４０２は、ＩＰｖ６ドメインを含み、そしてカーネルプロトコルドメイン４０４は、ＩＰｖ６近隣発見（ＮＤ）ドメインを含んでもよい。ルートドメイン４０６もカーネルプロトコルドメインであるが、以下に述べる実施形態においてドメイン特有機能４１２の「ドレイン」機能を使用して満了となったルートを削除できるので特別に列挙されている。
【００６１】
カーネルプロトコルドメイン４０２−４０６の各々は、ドメイン特有機能４０８−４１２のセットに対するポインタのセットを含む。ある実施形態では、各ドメイン特有機能は、それに対応するカーネルプロトコルドメインからポインタにより指示される。ドメイン特有機能４０８−４１２の各セット内には、それに対応するドメインに関連したアクションを遂行するためにオペレーティングシステム２００により実行される機能がある。一例として、１つのドメイン特有機能は、古い／満了となったドメインデータを処理サブシステム１０２及びコンピュータシステム１００から除去することのできるドレイン機能である。更に、ドメイン特有機能は、入力機能、出力機能及び他の機能を含む。
【００６２】
動作中に、オペレーティングシステム２００は、図４に「サイクル」で示すように、カーネルプロトコルドメイン４０２−４０６（及び楕円で示す付加的なカーネルプロトコルドメイン）を通して周期的にサイクルする。各ドメインに対して、オペレーティングシステム２００は、ドメインからのポインタをたどり、ドメイン特有機能を実行する。このように、オペレーティングシステム２００は、ドメイン特有機能を周期的に実行して、カーネルプロトコルに対して更新、構成、及び／又は不要データ収集を遂行することができる。
【００６３】
カーネルプロトコルドメイン４０２−４０６を通してサイクルする間に、オペレーティングシステム２００に存在するルート（例えば、ＡＲＰルート、ＮＤ６ルート、ＩＰｖ６ルート、ＩＰｖ４ルート、等）に対するデータを取り扱うルートドメイン４０６に到達すると、オペレーティングシステム２００は、ルートドメイン４０６からドレイン機能及び他のルートドメイン特有機能４１２までポインタをたどり、これらの機能を実行する。ドレイン機能を実行することで、オペレーティングシステム２００は、各ルート構造（例えば、ルート構造体３１２−３１６）を即座にチェックして、ルート構造のための満了タイマーがゼロに到達したかどうか決定する。満了タイマーがゼロに到達したところのルート構成の各々に対して、オペレーティングシステム２００は、ルート構成を削除し、オペレーティングシステム２００からのルートを除去する。
【００６４】
ある実施形態では、オペレーティングシステム２００がカーネルプロトコルドメインを通してサイクルする時間は、約５００ミリ秒である。これは、オペレーティングシステムがルートドメイン４０６に対するドレイン機能の実行をほぼ半秒ごとに試みることができることを意味する。オペレーティングシステム２００が満了となったルートをチェックするドレイン機能を実行して不必要にビジーとなり続けるのを回避するために、ある実施形態では、ドレイン機能は、カーネルプロトコルドメインを通るＮ番目のサイクルごとにオペレーティングシステム２００がドレイン機能を実行するようにさせるメカニズムを含む。特に、ルートドメイン４０６は、ドレイン機能に入ったときに直ちにチェックされるタイマー値を含む。このタイマーは、指定の時間に対してセットされ（例えば、１０秒、３０秒、又は１分）、そしてタイマーがゼロに到達する前には、オペレーティングシステム２００は、ドレイン機能をスキップする。しかしながら、タイマーがゼロに到達すると、オペレーティングシステム２００は、ドレイン機能の残りを実行し、オペレーティングシステム２００が満了となったルートに対してルート構造をチェックするようにさせる。
【００６５】
ルート削除に基づきインターフェイスをアイドリングできることを決定
ここに述べる実施形態では、所与のルート構造が削除される（従って、オペレーティングシステム２００からルートを削除する）ときに、オペレーティングシステム２００は、ルート構造においてどのインターフェイスが参照されるか決定する。オペレーティングシステム２００は、次いで、その参照されたインターフェイスに対してインターフェイス構造内のルート参照カウンタをデクリメントする。例えば、ルート構造３１２を削除するときに、オペレーティングシステム２００は、インターフェイス３０２がルート構造３１２により参照されたインターフェイスである（従って、ルートのためのインターフェイスがインターフェイス３０２である）と決定する。次いで、オペレーティングシステム２００は、ＩＦ構造３０６におけるルート参照カウンタをデクリメントする。
【００６６】
このように、所与のインターフェイスを参照する最後のルートが削除されたときには、インターフェイスのルート参照カウンタがゼロにデクリメントされる。ルート参照カウンタがゼロであることが決定されると、オペレーティングシステム２００は、コンフィギュレーションエージェント（図５のコンフィギュレーションエージェント５０２を参照）に信号を発して、そのコンフィギュレーションエージェントが、インターフェイスがアイドリングの候補であるという通知を１つ以上のアプリケーションへ転送できるようにする。ある実施形態では、オペレーティングシステム２００は、インターフェイスのためのインターフェイス構造において積極的なアイドリングフラグがセットされたときにコンフィギュレーションエージェントのみに信号を発する。これらの実施形態では、所与のインターフェイスに対して積極的なアイドリングフラグがセットされない場合に、オペレーティングシステム２００は、ルート参照カウンタのゼロへのデクリメントを無視することができる。
【００６７】
コンフィギュレーションエージェント及びインターフェイスマネージャータスク
図５は、ここに述べる実施形態により多数のアプリケーションとインターフェイスするオペレーティングシステムのブロック図である。コンピュータシステム１００の処理サブシステム１０２により実行される図５のアプリケーションは、アプリケーション２０２、コンフィギュレーションエージェント５０２、及びインターフェイスマネージャータスク５０４を含む。
【００６８】
ルート５００は、アプリケーション２０２からインターフェイス３００を通して行先ホストへパケットをルーティングするためにオペレーティングシステム２００により使用されるルートである。明瞭化のために、ルート５００、インターフェイス構造５０８、及びインターフェイス３００は、一般的に説明するだけとする（例えば、ルート５００に対するルート構造は示されていない）。
【００６９】
コンフィギュレーションエージェント５０２は、処理サブシステム１０２の１つ以上のコンフィギュレーション観点を管理する。コンフィギュレーションエージェント５０２は、処理サブシステム１０２／コンピュータシステム１００の希望の及び現在の状態を反映するデータを維持し、このデータが変化するときにアプリケーション（例えば、アプリケーション２０２及び／又はインターフェイスマネージャータスク５０４）に通知を与え、及び／又は関連するコンフィギュレーションタスクを遂行する。一般的に、コンフィギュレーションエージェント５０２は、１つ以上の入力ソース（好み、低レベルカーネル事象、通知、等）に依存し、そしてコンフィギュレーションエージェント５０２に含まれたポリシーモジュールのセットを使用して、処理サブシステム１０２／コンピュータシステム１００と対話し、望ましい動作コンフィギュレーションを確立する。例えば、ある実施形態では、コンフィギュレーションエージェント５０２は、カリフォルニア州クパチーノのアップル社からの“ｃｏｎｆｉｇｄ”と同様のコンフィギュレーションエージェントである。コンフィギュレーションエージェントは、この分野で知られており、従って、ここでは詳細に述べない。
【００７０】
既存のコンフィギュレーションエージェントとは異なり、コンフィギュレーションエージェント５０２は、インターフェイスがそれを参照するルートをもたず、従って、アイドリングの候補なり得るという通知をオペレーティングシステム２００から受け容れるためのメカニズムを備えている。更に、コンフィギュレーションエージェント５０２は、インターフェイスがアイドリングの候補であるという通知を他のアプリケーションに送信してそれらアプリケーションにその旨通知するためのメカニズムも備えている。
【００７１】
インターフェイスマネージャータスク５０４は、インターフェイス３００の動作をコントロールする。例えば、インターフェイスマネージャータスク５０４は、インターフェイス３００を初期化し、インターフェイス３００の動作モードを構成し、インターフェイス３００をパワーダウンし、インターフェイス３００に関連したコントロールメッセージをオペレーティングシステム２００から受信し及びそこへ送信し、そしてインターフェイス３００に関する他の動作を遂行することができる。
【００７２】
ある実施形態では、インターフェイスマネージャータスク５０４は、インターフェイス３００をアイドリングできる（即ち、アイドリングの候補である）ときに通知されるようにコンフィギュレーションエージェント５０２に登録される。これらの実施形態では、インターフェイス構造５０８内のルート参照カウンタがゼロにデクリメントされ、従って、インターフェイスを参照するアクティブなルートがないことを決定すると、オペレーティングシステム２００は、インターフェイス３００がそれを参照するルートをもはやもたないことを信号する。次いで、コンフィギュレーションエージェント５０２は、インターフェイス３００がアイドリングの候補であるという通知をインターフェイスマネージャータスク５０４へ送信する。
【００７３】
ある実施形態では、インターフェイス３００がアイドリングの候補であるという通知を受け取ると、インターフェイスマネージャータスク５０４は、オペレーティングシステム２００により通知が送信されて以来、インターフェイス３００を参照するルートが確立されていないことを保証するため、オペレーティングシステム２００でチェックを行う。次いで、オペレーティングシステム２００は、インターフェイス３００のインターフェイス構造５０８におけるルート参照カウンタをチェックして、値が非ゼロであるかどうか（即ち、新たに確立されたルートがインターフェイス３００を参照するかどうか）決定する。
【００７４】
インターフェイス３００を参照する新たなルートが確立された場合には、インターフェイスマネージャータスク５０４は、通知を無視し、そしてインターフェイス３００の動作モードを不変のままにする。これらの実施形態では、このチェックを行うことにより、インターフェイスマネージャータスク５０４は、インターフェイスマネージャータスク５０４により受信される前に遅延されたかもしれない通知に基づいてアクティブなインターフェイスを誤ってアイドリングさせるのを回避することができる（即ち、オペレーティングシステム２００がビジーでありそしてコンフィギュレーションエージェント５０２へ通知を直ちに送信しない場合、或いはコンフィギュレーションエージェント５０２がインターフェイスマネージャータスク５０４への通知の送信に遅延を生じた場合に）。換言すれば、インターフェイスマネージャータスク５０４は、通知信号と、オペレーティングシステム２００における新たなルートの確立との間の競合状態に基づいてインターフェイス３００をアイドリングさせる判断を誤って行うのを回避することができる。
【００７５】
さもなければ、インターフェイスマネージャータスク５０４は、インターフェイスをアイドリングさせることができる。上述したように、インターフェイスをアイドリングさせるとは、実施形態に基づき異なることを意味する。例えば、「アイドリング」とは、インターフェイスを完全にパワーダウンし、低電力（であるが、少なくとも部分的に動作する）モードへスイッチし、或いは通常に使用するが、低プライオリティ又はインターフェイスメンテナンス動作を遂行することを意味する。
【００７６】
インターフェイスマネージャータスク５０４は、インターフェイスがアイドリングの候補であるという通知をコンフィギュレーションエージェント５０２から受け取ることができるので、既存のインターフェイスマネージャータスクとは異なる。更に、通知を受け取ると、インターフェイスマネージャータスク５０４は、インターフェイスをアイドリングさせる前にインターフェイスがルートにより参照されるかどうか決定するためにオペレーティングシステム２００でチェックを行うことができる。
【００７７】
図５には、１つのコンフィギュレーションエージェント及び１つのインターフェイスマネージャータスクしか示されていないが、ある実施形態では、複数のコンフィギュレーションエージェント及び／又はインターフェイスマネージャータスクをコンピュータシステム１００において実行できることに注意されたい。更に、インターフェイスマネージャータスク５０４は、２つ以上のインターフェイスに対するインターフェイスマネージャータスクである。
【００７８】
積極的なインターフェイスカウンタ
ある実施形態では、オペレーティングシステム２００は、積極的にアイドリングされるように構成されたアクティブなインターフェイスの数を追跡するためにオペレーティングシステム２００が使用する「積極的なインターフェイスカウンタ」を維持する。積極的にアイドリングされるように構成された各インターフェイスがアクチベートされるときに、オペレーティングシステム２００は、積極的なインターフェイスカウンタをインクリメントする。他方、積極的にアイドリングされるように構成された各インターフェイスがアイドリングされるときには、オペレーティングシステム２００は、積極的なインターフェイスカウンタをデクリメントする。
【００７９】
積極的なインターフェイスカウンタがゼロに等しくなる（即ち、積極的なアイドリングに構成された全てのインターフェイスがアイドルである）とき、オペレーティングシステム２００は、ルートドメイン４０６におけるドレイン機能４１２のポインタをＮＵＬＬにセットする。しかしながら、積極的なインターフェイスカウンタが非ゼロであるときは、オペレーティングシステム２００は、ルートドメイン４０６におけるドレイン機能のポインタを、ドレイン機能を指すようにセットする。ポインタをこのようにセットすることにより、これら実施形態は、積極的にアイドリングされるように構成された少なくとも１つのインターフェイスがアクティブである間にドレイン機能を実行するだけである。
【００８０】
インターフェイスを管理するプロセス
図６は、ここに述べる実施形態によるインターフェイスを管理するプロセスを示すフローチャートである。より詳細には、図６において、積極的にアイドリングされるよう構成されたネットワークサブシステム１０６におけるＢｌｕｅｔｏｏｔｈTMインターフェイスの管理について説明する。この例では、ＢｌｕｅｔｏｏｔｈTMインターフェイスが最初にアイドルであると仮定する。更に、積極的にアイドリングされるように構成された他のインターフェイスはアクティブでなく、従って、積極的なインターフェイスカウンタはゼロに等しく、そしてオペレーティングシステム２００は、ルートドメイン４０６のためのドレイン機能４１２を実行しない（即ち、ルートドメイン４０６のドレイン機能４１２のポインタは、ＮＵＬＬを指す）。
【００８１】
一例としてＢｌｕｅｔｏｏｔｈTMインターフェイスを使用してインターフェイスを管理するプロセスについて述べるが、別の実施形態では、異なるインターフェイスが使用される。これらの別の実施形態は、プロセスにおいてより多くの又はより少ない及び／又は異なるステップ含んでもよい。例えば、他の装置の分析及び／又は他の装置のアドレスは、異なる仕方で行われてもよいし又は全く行われなくてもよい（行先アドレスは、既知である、等）。別の実施形態は、他の点では、ここに述べる実施形態と同様に動作する。
【００８２】
図６のプロセスは、処理サブシステム１０２により実行されているアプリケーションがＢｌｕｅｔｏｏｔｈTMインターフェイスを使用する別の電子装置とのネットワーク接続を要求するときに開始する（ステップ６００）。例えば、ゲームアプリケーションは、装置間にゲームデータを転送するのに使用されるゲームアプリケーションを実行する別の電子装置とのＢｌｕｅｔｏｏｔｈTM接続の形成を要求することができる。次いで、アプリケーションは、他の装置を見出し、そして他の装置に対する行先インターネットプロトコル（ＩＰ）アドレスを分析するプロセス開始する。例えば、アプリケーションは、カリフォルニア州クパチーノのアップル社からのＢｏｎｊｏｕｒTMサービスを開始するか、又は別のアドレス分析サービスを開始することができる。
【００８３】
別の装置を使用できると決定されると、アプリケーションは、ＢｌｕｅｔｏｏｔｈTMインターフェイスをアクチベートするようにインターフェイスマネージャータスク５０４（例えば、ＢｌｕｅｔｏｏｔｈTMサーバー）に信号する（ステップ６０２）。次いで、インターフェイスマネージャータスク５０４は、ＢｌｕｅｔｏｏｔｈTMインターフェイスをアクチベートし、ＢｌｕｅｔｏｏｔｈTMインターフェイスがアプリケーションのためのパケットを送信及び受信する準備ができるようにする。
【００８４】
ＢｌｕｅｔｏｏｔｈTMインターフェイスは、積極的にアイドリングされるように構成される（従って、オペレーティングシステム２００におけるＢｌｕｅｔｏｏｔｈTMインターフェイスのインターフェイス構造において積極的なアイドリングフラグがセットされる）ことを想起されたい。従って、ＢｌｕｅｔｏｏｔｈTMインターフェイスがアクチベートされると、オペレーティングシステム２００は、積極的なインターフェイスカウンタをインクリメントし、そして未使用のルートを積極的に満了とし削除することを開始する（ステップ６０４）。より詳細には、オペレーティングシステム２００は、ルートドメイン４０６のドレイン機能４１２のポインタを、ＮＵＬＬを指すことから、ドレイン機能４１２を指すことへと調整する。積極的なインターフェイスカウンタをインクリメントすることにより、オペレーティングシステム２００は、積極的なアイドリングについてアクティブなインターフェイスが構成されたことを記録する。更に、ルートドメイン４０６のドレイン機能４１２のポインタを調整することで、オペレーティングシステム２００は、ドメイン４００を通過するたびに（より詳細には、ルートドメイン４０６を通過するたびに）ドレイン機能４１２を実行するようにされる。
【００８５】
上述したように、ドレイン機能４１２は、ルートドメイン４０６を通過するたびに実行されるが、ドレイン機能４１２の内部カウンタは、所定の時間が経過するまで、オペレーティングシステム２００がドレイン機能４１２を完全に実行するのを防止する。例えば、ドレイン機能４１２は、Ｘ秒（又はルートドメイン４０６を通るＹサイクル）で満了となるカウントダウンカウンタを含むことができる。オペレーティングシステム２００がドレイン機能４１２のカウンタをチェックして、カウンタが満了となったことを見出すと、オペレーティングシステム２００は、ドレイン機能４１２の残りを実行し、内部カウンタをリセットする。ドレイン機能４１２の残りが実行されると、オペレーティングシステム２００が各ルート構造（例えば、ルート構造３１２−３１６）をチェックして、どのルートが満了となり、従って、削除できるか決定するようにさせる。
【００８６】
次いで、アプリケーションは、ＢｌｕｅｔｏｏｔｈTMインターフェイスを使用して送信コントロールプロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）セッションを開始するためのソケットをオープンする（ステップ６０６）。より詳細には、アプリケーションは、Ｂｌｕｅｔｏｏｔｈインターフェイスを使用して行先ＩＰアドレスの他の装置へパケットを送信し始めるためのソケットをオープンする。オペレーティングシステム２００は、ソケットをオープンする通知を受け取るのに応答して、ＢｌｕｅｔｏｏｔｈTMインターフェイスに対する参照／ポインタを含めてルートに関する情報を含むルート構造（テンプレートルートからクローン化された）を生成し（ステップ６０８）、これにより、オペレーティングシステム２００におけるルーティングテーブルにルートを追加する。更に、オペレーティングシステム２００は、ＢｌｕｅｔｏｏｔｈTMインターフェイスのインターフェイス構造におけるルート参照カウンタをインクリメントし（ステップ６０８）、ルートがＢｌｕｅｔｏｏｔｈTMインターフェイスに依存することを記録する。次いで、オペレーティングシステム２００は、ＢｌｕｅｔｏｏｔｈTMインターフェイスを使用してアプリケーションから対応する行先へパケットを転送し始める。
【００８７】
アプリケーションがルートの使用を終了すると（又はＢｌｕｅｔｏｏｔｈTM接続が失われると）、アプリケーションは、ソケットをクローズする（ステップ６１０）。アプリケーションがソケットをクローズしたという通知をネットワークプロトコルスタックの関連レイヤから受け取るのに応答して、オペレーティングシステム２００は、関連ルートを削除するプロセスを開始する。特に、オペレーティングシステム２００は、ルート構造における満了タイマーを短い満了時間にセットする（ステップ６１２）。上述したように、ＢｌｕｅｔｏｏｔｈTMインターフェイスのインターフェイス構造における積極的なアイドリングフラグがセットされるので、満了タイマーは、短い満了時間にセットされるべきである。
【００８８】
ＢｌｕｅｔｏｏｔｈTMインターフェイスのインターフェイス構造において積極的なアイドリングフラグがセットされない場合には、オペレーティングシステム２００は、ルート構造における満了タイマーを、短い満了時間より典型的に少なくとも数桁大きな値にセットする。このケースでも、オペレーティングシステム２００は、ルートドメイン４０６のドレイン機能４１２を実行せず（ドレイン機能４１２のポインタが依然ＮＵＬＬにセットされるので）、従って、満了となったルートを除去するためのプロトコルスタックの関連メカニズムがルート構造を削除する（ひいては、ルーティングテーブルから満了となったルートを除去する）役割を果たす。プロトコルスタックのメカニズムは、ドレイン機能４１２のインターバルより著しく長いインターバルで動作するので、長いデフォールト満了時間とプロトコルスタックのメカニズムの長いインターバルとが組み合わされると、短い満了時間に基づきルートがドレイン機能により削除されるときより相当に長い時間中ルートが削除されないことになる。
【００８９】
ルート構造における短い満了タイマーがゼロに到達すると、オペレーティングシステム２００がドレイン機能４１２を完全に実行する次のときに、オペレーティングシステム２００は、ルート構造を削除し（ステップ６１４）、それにより、オペレーティングシステム２００のルートテーブルからルートを除去する。又、ルート構造を削除すると、オペレーティングシステム２００は、ルートが参照するインターフェイスのポインタでインターフェイス更新機能へのコールバックをトリガーする。このコールバックは、オペレーティングシステム２００がＢｌｕｅｔｏｏｔｈTMインターフェイスのインターフェイス構造のルート参照カウンタをデクリメントして、インターフェイスを参照したルートの削除を反映するようにさせる（ステップ６１６）。
【００９０】
上述したように、ルートは、インターフェイスに関連した唯一のルートであるから、ルート構造が削除されたときにインターフェイス構造のルート参照カウンタをデクリメントすると、インターフェイス構造のルート参照カウンタをゼロにデクリメントさせる。オペレーティングシステム２００は、インターフェイス構造のルート参照カウンタがゼロにデクリメントされたことを決定し、そしてコンフィギュレーションエージェント５０２にメッセージを送信して、インターフェイスがもはやいずれのルートによっても参照されないことをコンフィギュレーションエージェント５０２に通知する（ステップ６１８）。
【００９１】
オペレーティングシステム２００からメッセージを受け取ると、コンフィギュレーションエージェント５０２は、インターフェイスを参照するルートがないときに送られる通知を、インターフェイスマネージャータスク５０４へ、及びコンフィギュレーションエージェント５０２に登録された他のアプリケーションへ送信する（ステップ６２０）。インターフェイスマネージャータスク５０４は、次いで、ＢｌｕｅｔｏｏｔｈTMインターフェイスをアイドリングする（ステップ６２２）。
【００９２】
図７は、ここに述べる実施形態によるＢｌｕｅｔｏｏｔｈTMインターフェイスをアイドリングさせるプロセスを示すフローチャートである。より詳細には、図７に示す実施形態は、ここに述べる実施形態による図６のステップ６２２の説明図である。
【００９３】
図７に示すプロセスは、インターフェイスマネージャータスク５０４が、ＢｌｕｅｔｏｏｔｈTMインターフェイスを参照するルートがないという通知をコンフィギュレーションエージェント５０２から受け取ったときに開始する（ステップ７００）。インターフェイスマネージャータスク５０４は、次いで、インターフェイスがアイドルであったことをオペレーティングシステム２００がコンフィギュレーションエージェント５０２に信号して以来、ＢｌｕｅｔｏｏｔｈTMインターフェイスを参照するルートがアプリケーションにより確立されたかどうか決定するための問合せをオペレーティングシステム２００へ送信する（ステップ７０２）。
【００９４】
これらの実施形態では、インターフェイスを参照するルートが確立された場合に（ステップ７０４）、インターフェイスマネージャータスク５０４は、ＢｌｕｅｔｏｏｔｈTMインターフェイスをアクティブな状態のままとする（即ち、ＢｌｕｅｔｏｏｔｈTMインターフェイスの現在動作状態を変化させない）（ステップ７０６）。
【００９５】
さもなければ、インターフェイスを参照するルートが確立されない場合に（ステップ７０４）、インターフェイスマネージャータスク５０４は、ＢｌｕｅｔｏｏｔｈTMインターフェイスをアイドリングさせる（ステップ７０８）。上述したように、インターフェイスをアイドリングさせるときには、インターフェイスマネージャータスク５０４は、ＢｌｕｅｔｏｏｔｈTMインターフェイスをパワーダウンし、ＢｌｕｅｔｏｏｔｈTMインターフェイスを低電力動作モードに入れ（例えば、インターフェイスの動作速度を変化させ、等）、及び／又はＢｌｕｅｔｏｏｔｈTMインターフェイスを使用して低プライオリティ動作を遂行することができる。
【００９６】
インターフェイスマネージャータスク５０４がＢｌｕｅｔｏｏｔｈTMインターフェイスをアイドリングさせるときに、オペレーティングシステム２００は、インターフェイスのアイドリングを検出し、そして積極的なアイドリングモードにあるインターフェイスがアイドリングされたと決定する。次いで、オペレーティングシステム２００は、積極的なインターフェイスカウンタをデクリメントする（７１０）。インターフェイスは、積極的にアイドリングされるよう構成された唯一の、それ故、最後のアクティブなインターフェイスであるから、積極的なインターフェイスカウンタをデクリメントすると、積極的なインターフェイスカウンタは、ゼロに等しくなる。積極的なインターフェイスカウンタがゼロになるのに基づいて、オペレーティングシステム２００は、ルートドメイン４０６のドレイン機能４１２のポインタを、ドレイン機能４１２を指すことから、ＮＵＬＬを指すことへと調整し（ステップ７１２）、これは、オペレーティングシステム２００が、ドメイン４００を通過するたびにドレイン機能４１２を実行するのではないことを意味する。
【００９７】
インターフェイスマネージャータスク５０４が、ＢｌｕｅｔｏｏｔｈTMインターフェイスの物理的レイヤにおけるトラフィック（即ち、実際のパケット送信）のみを監視して、ＢｌｕｅｔｏｏｔｈTMインターフェイスをいつアイドリングさせるべきか決定する既存のシステムとは対照的に、ここに述べる実施形態では、インターフェイスマネージャータスク５０４は、特定のインターフェイスを参照するルートの数に関する情報をオペレーティングシステム内から受け取る。この情報を使用して、ＢｌｕｅｔｏｏｔｈTMサーバーは、コンピュータシステム１００において実際に遂行される動作にとってより適した仕方で（即ち、インターフェイスを使用するルートがないときだけ）インターフェイスをパワーダウンすることができる。
【００９８】
実施形態についての以上の説明は、例示のためのものである。それらは、余すところのないものでもないし、又は実施形態をここに開示する形態に限定するものでもない。従って、当業者であれば、多数の変更及び修正が明らかであろう。更に、以上の開示は、実施形態を限定するものではない。
【符号の説明】
【００９９】
１００：コンピュータシステム
１０２：処理サブシステム
１０４：メモリサブシステム
１０６：ネットワークサブシステム
１１０：バス
２００：オペレーティングシステム
２０２、２０４、２０６：アプリケーション
３００、３０２、３０４：インターフェイス
３０６、３０８、３１０：ＩＦ構造
３１２、３１４、３１６：ルート構造
４００：ドメイン
４０２：カーネルプロトコルドメイン
４０４：カーネルプロトコルドメイン
４０６：ルートドメイン
４０８：ドメイン特有機能
４１０：ドメイン特有機能
４１２：ドメイン機能及び他のドメイン特有機能
５００：ルート
５０２：コンフィギュレーションエージェント
５０４：インターフェイスマネージャータスク
５０８：ＩＦ構造
【図１】
0005536232.tif 000002
【図２】
0005536232.tif 000003
【図３】
0005536232.tif 000004
【図４】
0005536232.tif 000005
【図５】
0005536232.tif 000006
【図６】
0005536232.tif 000007
【図７】
0005536232.tif 000008