(57)【要約】【課題】マルチスレッドシステムにおけるスピン−放棄に使用するための技法を提供する。【解決手段】本発明の一実施形態では、ｎ個のスレッドがｍ個のプロセッサおよびｌ個の「スピン−放棄（ｓｐｉｎ−ｙｉｅｌｄ）」プロセッサ上で実行される。ロックを待っている各スレッドは、ｌ個のスピン−放棄プロセッサリスト上のスピン−放棄プロセッサにバインドされるため、普通ならスピン−放棄サイクル中に待機中スレッドが使用可能なｍ個のプロセッサを、他のスレッドが他の目的のために使用することができる。さらに、規定された期間において、スレッドが、この規定された期間に経験したコンテキスト切り換え回数に基づいて、スピン−放棄プロセッサにバインドされるか、またはスピン−放棄プロセッサから除去される。【選択図】　　　　　図１
2004021985.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッドシステムにおいて使用する方法であって、
スピン−放棄（ｓｐｉｎ−ｙｉｅｌｄ、スピン−スピン放棄）プロセッサ（１３０、２０４）として特定されるプロセッサ（１２０、２０４）を、別のスレッド（１１０）によって取得されたロックをスレッド（１１０）が待っている間に、該スレッド（１１０）を実行すること
を専用に行うステップと、
第１のスレッド（１１０）が第１のロックを取得するステップであって、それによって第１のプロセッサ（１２０、２０４）上でプログラム部分を実行し、前記プログラム部分の実行には前記第１のロックが必要である、取得するステップと、
第２のスレッド（１１０）が前記第１のロックの取得を待っている間に、
前記スピン−放棄プロセッサ（１３０、２０４）上で実行されるステップと、
前記第１のロックを取得しようと試みるステップと、
前記第２のスレッド（１１０）が前記第１のロックを取得しない場合、前記第２のスレッド（１１０）が前記実行されるステップおよび前記試みるステップを繰り返すステップと
を行うステップと
を含む方法。
【請求項２】
前記第２のスレッド（１１０）は、規定された期間中、前記実行されるステップおよび前記試みるステップを繰り返す
請求項１記載の方法。
【請求項３】
前記第２のスレッド（１１０）は、前記スピン−放棄プロセッサ（１３０、２０４）上で最初に実行される前に、
前記第１のプロセッサ（１２０、２０４）上で実行されるステップと、
前記ロックを取得しようと試みるステップとを行い、
前記第２のスレッド（１１０）が前記第１のロックを取得しない場合、
前記第２のスレッド（１１０）は、前記第１のプロセッサ（１２０、２０４）上で実行されるステップおよび前記ロックを取得しようと試みるステップを繰り返す
請求項１記載の方法。
【請求項４】
前記第２のスレッド（１１０）は、前記第１のプロセッサ（１２０、２０４）上で実行されるステップおよび前記ロックを取得しようと試みるステップを規定された期間中繰り返す
請求項３記載の方法。
【請求項５】
前記第２のスレッド（１１０）が前記第１のロックを取得しない場合、前記第２のスレッド（１１０）は、前記スピン−放棄プロセッサ（１３０、２０４）を放棄するステップをさらに実行する
請求項１記載の方法。
【請求項６】
前記スピン−放棄プロセッサ（１３０、２０４）は、待機中スレッド（１１０）の実行専用の複数のプロセッサ（１２０、２０４）から選択される
請求項１記載の方法。
【請求項７】
前記第２のスレッド（１１０）が前記スピン−放棄プロセッサ（１３０、２０４）上で実行される度に、前記スピン−放棄プロセッサ（１３０、２０４）は、待機中スレッド（１１０）の実行専用の複数のプロセッサ（１２０、２０４）から選択される
請求項１記載の方法。
【請求項８】
第３のスレッド（１１０）が規定された期間で経験するコンテキスト切り換え回数に基づいて、前記第３のスレッド（１１０）を前記スピン−放棄プロセッサ（１３０、２０４）上で実行させるステップをさらに含む
請求項１記載の方法。
【請求項９】
第２のスレッド（１１０）が規定された期間で経験するコンテキスト切り換え回数に基づいて、前記スピン−放棄プロセッサ（１３０、２０４）上での前記第２のスレッド（１１０）の実行をやめる
請求項１記載の方法。
【請求項１０】
前記第２のスレッド（１１０）が前記第１のロックの取得を待っている間、前記第２のスレッド（１１０）は前記スピン−放棄プロセッサ（１３０、２０４）上で排他的に実行される
請求項１記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、包括的にマルチスレッドシステムに関し、特に、マルチスレッドシステムにおけるスピン−放棄を行うこと（ｓｐｉｎ−ｙｉｅｌｄｉｎｇ）に関する。
【０００２】
【従来の技術】
マルチスレッドプログラムでは、プログラムのいくつかの部分および／または変数を複数のスレッドによるアクセスから保護することが望ましい。
ロック機構を用いる一手法では、スレッドは、保護部分にアクセスする際にロックを取得するため、そのスレッドがロックを保持している間、他のスレッドは同じ部分にアクセスすることができない。
スレッドがロックを解除すると、別のスレッドがロックを取得して保護部分にアクセスし、他のスレッドが同じ部分にアクセスできないようにする。
【０００３】
ロックを待っているスレッドは、スリープ待ち行列に入り、この待機中のスレッドが実行可能になったときに実行待ち行列に移される。
しかし、スリープ待ち行列と実行待ち行列との間でのスレッドの移動は通常、高価である。
待機中のスレッドが、スリープ待ち行列に移される前にいくつかスピン−放棄サイクルを実行するという手法が開発されている。
こうした手法では、待機中のスレッドは、ロックを待ちながら、数サイクル分プロセッサ上でスピンしてから、ロックを取得しようと試みる。
スレッドは、ロックを取得することができない場合、プロセッサを放棄する、すなわち他のスレッドがプロセッサを利用できるようにする。
待機中のスレッドは、閾値まで数回スピン−放棄サイクルを繰り返し、このとき、待機中のスレッドはスリープ待ち行列に配置される。
待機中のスレッドは、スリープ待ち行列に移されることなく、数回の試行でロックを通常取得できることが経験からわかっている。
【０００４】
しかし、ロック競合が激しい、かつ／またはスレッドが長時間ロックを保持するアプリケーション等の様々な状況では、多くの場合でのスピン−放棄スレッドが、スリープ待ち行列に最終的に配置される。
スピン−放棄時間中、スピン−放棄サイクルを実行中のプロセッサは、他の有用な作業を行うことができず、スピン−放棄スレッドが多くの高価なシステムコールを生成する場合がある。
多くのプロセッサを備えた対称マルチプロセッサシステムでは、この影響が顕著でありうる。
【０００５】
上記に基づいて、上記欠陥および関連する問題を解消する機構を提供することが望ましい。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、マルチスレッドシステムにおけるスピン−放棄に使用するための技法を提供することである。
【０００７】
【課題を解決するための手段】
一実施形態では、ｎ個のスレッドがｍ個のプロセッサおよびｌ個の「スピン−放棄（ｓｐｉｎ−ｙｉｅｌｄ）」プロセッサ上で実行される。
ロックを待っている各スレッドは、ｌ個のスピン−放棄プロセッサリスト上のスピン−放棄プロセッサにバインドされるため、普通ならスピン−放棄サイクル中に待機中スレッドが使用可能なｍ個のプロセッサを、他のスレッドが他の目的のために使用することができる。
さらに、規定された期間において、スレッドが、この規定された期間に経験したコンテキスト切り換え回数に基づいて、スピン−放棄プロセッサにバインドされるか、またはスピン−放棄プロセッサから除去される。
【０００８】
本発明は、同様の参照符号が同様の要素を指す添付図面中の図において、限定としてではなく例として示される。
【０００９】
【発明の実施の形態】
以下の説明では、説明目的のため、本発明の全体的な理解を提供するために、多くの特定の詳細を記載する。
しかし、これら特定の詳細なしで本発明を実施し得ることが当業者には明白であろう。
他の場合では、本発明を曖昧にしないように、既知の構造および装置についてはブロック図に示す。
【００１０】
図１は、本発明の実施形態を実施し得るシステム１００を示す。
システム１００は、複数のスレッド、プロセッサ、および「スピン−放棄」プロセッサを備え、例示目的のために、スレッド１１０（１）〜１１０（ｎ）、プロセッサ１２０（１）〜１２０（ｍ）、およびスピン−放棄プロセッサ１３０（１）〜１３０（ｌ）とそれぞれ呼ぶことにする。
スレッド１１０、プロセッサ１２０、およびスピン−放棄プロセッサ１３０は、適当なバスを介して互いに通信する。
整数ｎ、ｍ、およびｌは、スレッド１１０、プロセッサ１２０、およびスピン−放棄プロセッサ１３０の数が可変であり、無作為でありうることを示している。
【００１１】
スレッド
スレッド１１０は、他の部分から独立して実行可能なプログラムの部分である。
各スレッド１１０にはスレッドＩＤ（ＴＩＤ）が関連付けられ、複数のスレッド１１０がプロセスＩＤ（ＰＩＤ）を有するプロセスの一部であることができる。
スレッド１１０は、ＣＰＵ時間および他のシステム資源に関して完全なプロセスよりも作成がより単純であるとともにより安価であるため、「軽量プロセス」と呼ばれる場合もある。
同一プロセス内のスレッド１１０は、そのプロセスに割り当てられた、メモリ等のシステム資源を共有する。
スレッド１１０は、Ｃアプリケーション、Ｃ＋＋アプリケーション、Ｊａｖａ（登録商標）アプリケーション、Ｊａｖａ（登録商標）仮想マシンや、たとえばウェブサーバ、データベースサーバ、企業間取引ロジック等を含む企業アプリケーション等の様々なアプリケーションに見出すことができる。
普通、１つのプロセスが１個のプロセッサ上で実行される。
しかし、複数のスレッド１１０を有するプロセスは複数のプロセッサ上で実行することができる。
これは、１つのスレッド１１０を１個のプロセッサ上で実行することができるためである。
実行可能なスレッド１１０は実行待ち行列内に留まり、ここからスケジューラがそのスレッドの実行時をスケジューリングする。
実行準備が整っていないスレッド１１０は、スリープ待ち行列内に留まり、実行可能になったときに実行待ち行列に移される。
【００１２】
アプリケーションに応じて、複数のスレッド１１０がプログラムの各種部分に同時にアクセスする場合がある。
しかし、「保護されている」変数、コード片、またはプログラム部分にアクセスできるのは１つのスレッドのみである。
保護部分は通常、プログラムの重要なセクションであり、そのセクションを無制御に変更すると望ましくない結果が生じる可能性がある。
金銭的な口座残高の変数は、保護部分に含められる保護変数の一例である。
この金銭変数に同時にアクセスして変更すると、不正確かつ望ましくない結果につながりうる。
スレッドは、保護部分にアクセスする場合、保護部分のロックを取得し、そうすることで、保護部分にアクセスするにはロックが必要なことから、他のスレッドが同じ部分に同時にアクセスできないようにする。
ロック機構は、アプリケーションを実行しているオペレーティングシステムによって通常行われる。
【００１３】
例示目的のために、ロック保持中のスレッドをスレッド１１０Ｌと呼び、一方ロック待機中のスレッドをスレッド１１０Ｗと呼ぶことにする。
一実施形態では、待機中スレッド、たとえば、スレッド１１０Ｗ（１）は、構成可能な閾値ｔ１を越える回数分プロセッサ１２０上でスピン−放棄を行った後、専用スピン−放棄プロセッサ１３０、たとえばプロセッサ１３０（１）にバインドされる。
この閾値ｔ１は可変であり、０であってもよい。
閾値ｔ１が０であることは、スレッド１１０Ｗ（１）が、ロックを待ち始めるとすぐにスピン−放棄プロセッサ１３０にバインドされることを示す。
非ゼロの閾値ｔ１は、スレッド１１０Ｗ（１）が、閾値ｔ１までのある回数分プロセッサ１２０上でスピン−放棄を行った後に、スピン−放棄プロセッサ１３０にバインドされることを示す。
ユーザは、システムに関するユーザの経験、スレッド１１０Ｗがロック取得前に経験するスピン−放棄サイクルの平均回数、ロックを待っておらず、潜在的に他の作業を行うことができるスレッド１１０の数等の要因に基づいて閾値ｔ１の値を決めることができる。
たとえば、スレッド１１０Ｗ（１）によるロックの取得に長い時間がかかりそうである、かつ／またはスレッド１１０Ｗ（１）がスピン中のプロセッサ１２０（１）が、別の状況では他の作業を行うことが可能である、とユーザが判断した場合には、ユーザは閾値ｔ１を低く設定することができる。
これにより、スレッド１１０Ｗ（１）を短時間内でスピン−放棄プロセッサ１３０にバインドすることが可能になる。
しかし、ロックの取得にあまり時間がかからない、かつ／またはプロセッサ１２０（１）のスピン−放棄をシステムが認めることができる場合、ユーザは閾値ｔ１をより高く設定することができる。
閾値ｔ１は、実際の時間、たとえばミリ秒、秒であってもよく、またはスピン−放棄を行ったスレッド１１０Ｗ（１）のサイクル数、プロセッササイクル数、コンテキスト切り換え回数等他の時間単位であってもよい。
【００１４】
一実施形態では、スピンは、数個のノ−オペレーション（ＮＯ−ＯＰ）命令文を実行することを指し、放棄は、他のスレッドが使用するようにプロセッサを解放することを指す。
スピン−放棄という用語は、慣習として使用するものである。
スピン−放棄サイクルは、スピン、ロック取得失敗、プロセッサ放棄、および通常最後に実行待ち行列への移動を含む。
たとえば、スレッド１１０Ｗ（１）は、ロックを待ちながら、ある時間中スピンしてから、ロックの取得を試みる。
スレッド１１０Ｗ（１）は、ロックを取得する場合、ロックを有し、他のスレッドが同じロックを取得しないようにするスレッド１１０Ｌになる。
しかし、スレッド１１０Ｗ（１）は、ロックを取得することができない場合には、別の待機中スレッド１１０Ｗが使用できるようにスピン−放棄プロセッサ１３０（１）を放棄し、実行待ち行列に移されて再びスピン−放棄プロセッサ上の実行またはスピンを待つ。
次いで、スレッド１１０Ｗ（１）は、スピン、ロック取得試行、プロセッサ放棄、および実行待ち行列への移動を数回、閾値ｔ２まで繰り返し、閾値ｔ２になるとスリープ待ち行列に配置される。
上述した閾値ｔ１と同様に、閾値ｔ２も実際の時間であってもよく、または他の時間単位であってもよい。
一実施形態では、スレッド１１０Ｗ（１）は、同じスピン−放棄プロセッサ、たとえばプロセッサ１３０（１）上でスピン−放棄サイクルを繰り返す。
すなわち、スレッド１１０Ｗ（１）は、実行待ち行列からスピンに再び戻る度に、同じプロセッサ１３０（１）上でスピンする。
スレッド１１０Ｗ（１）が一群のスピン−放棄プロセッサ１３０にバインドされる代替の実施形態では、スレッド１１０Ｗ（１）は、実行待ち行列から再びスピンに戻る度に、そのときに適切でありうるリスト内の任意のプロセッサ１３０上でスピンする。
実行するスレッドのリストが短いプロセッサ１３０は、スピン−放棄目的のために選択される良好な候補の一例である。
一実施形態では、スレッド１１０Ｗをスピン−放棄プロセッサ１３０にバインドすると、Ｕｎｉｘ（登録商標）オペレーティングシステムにて通常見出される関数ＭＰＣＴＬへのシステムコールが呼び出される。
関数ＭＰＣＴＬは、１個のプロセッサ上、またはオペレーティングシステムによってサポートされる場合には一群のプロセッサ上で実行されるスレッドを指定する。
スレッド１１０Ｗが１個または一群のスピン−放棄プロセッサ１３０にバインドされる場合、このスレッド１１０Ｗはプロセッサ１３０上で排他的に実行され、任意のプロセッサ１２０上で実行することは認められず、これによりプロセッサ１２０がスピン−放棄サイクルに関連しない他のタスクを実行することが可能になる。
これによってシステムパフォーマンスが向上する。
【００１５】
［プロセッサ］
プロセッサ１２０はコンピュータに通常見られ、コンピュータの脳と呼ばれることがある。
一般に、プロセッサ１２０は、メモリに格納されている命令の実行、ロジックの制御、情報の処理、算術演算および論理演算の実行等を行う。
スレッド１１０はプロセッサ１２０上で実行することができる。
スケジューラが、特定のプロセッサ１２０または１３０上で実行するようにスレッド１１０をスケジューリングする。
【００１６】
［スピン−放棄プロセッサ］
スピン−放棄プロセッサ１３０はプロセッサ１２０と同様であるが、これはスピン−放棄目的専用である。
すなわち、スピン−放棄プロセッサ１３０は、ロックを待っているすべてのスレッド１１０Ｗにサービスを提供する。
スピン−放棄プロセッサ１３０の数ｌはわずか１でよく、たとえば、システムで利用可能なプロセッサの総数、プロセッサ数に対して実行するスレッド１１０の数、スピン−放棄目的で利用することが可能な「使用されていない（ｆｒｅｅ）」プロセッサの数等を含む様々な要因に応じて変化する。
通常、待機中のスレッド１１０Ｗの数が多いほど、スピン−放棄プロセッサ１３０として設けられるプロセッサ１２０の数が多くなる。
複数のプロセッサ１３０をスピン−放棄目的で使用すると、複数のスレッド１１０Ｗを同時にスピン−放棄することが可能になる。
たとえば、スレッド１１０Ｗ（１）がプロセッサ１３０（１）上でスピン−放棄し、スレッド１１０Ｗ（２）がプロセッサ１３０（２）上でスピン−放棄し、スレッド１１０Ｗ（３）がプロセッサ１３０（３）上でスピン−放棄し、１個のプロセッサ１３０ではなく、これら３個のプロセッサ１３０（１）、１３０（２）、１３０（３）が、３つのスレッド１１０Ｗ（１）、１１０Ｗ（２）、および１１０Ｗ（３）の総数のスピン−放棄サイクルを行う。
【００１７】
スピン−放棄プロセッサ１３０としてのプロセッサ１２０の選択は、たとえば、プロセッサ１２０を無作為に選択する、または選択時に比較的使用されていない、たとえば別のプロセッサ１２０よりも少ない作業を行うようにスケジューリングされたプロセッサ１２０を選択する等を含む別の方法で行うこともできる。
【００１８】
自発的コンテキスト切り換え
自発的コンテキスト切り換えは、プロセッサ上で実行されているスレッドが、他のスレッドが使用するようにこのプロセッサを自発的に放棄するときに発生する。
これは、スレッドがシステムコールをスリープ、放棄等に行うときに通常発生する。
一実施形態では、スレッド、たとえばスレッド１１０（１）は、規定された期間内にスレッド１１０（１）が経験する自発的コンテキスト切り換え数に基づいて、スピン−放棄プロセッサ、たとえばプロセッサ１３０（１）にバインドされるか、またはプロセッサ１３０（１）から除去される。
たとえば、時間ｔ１から時間ｔ２までの１０秒以内に、スレッド１１０（１）は、たとえば５０回のコンテキスト切り換えという閾値よりも多くのコンテキスト切り換えを経験する場合には、スピン−放棄プロセッサ、たとえばプロセッサ１３０（１）にバインドされる。
同様に、スレッド１１０（１）がスピン−放棄プロセッサ、たとえばプロセッサ１３０（１）にバインドされている場合、かつ規定の期間内に、スレッド１１０（１）が経験するコンテキスト切り換えが５０回未満である場合、スレッド１１０（１）はプロセッサ１３０（１）から解放、すなわちバインド解除される。一実施形態では、解放されると、スレッド１１０（１）は実行待ち行列に移され、使用されていないプロセッサ１２０上で実行されるようにスケジューリングされる。
自発的コンテキスト切り換えの回数は、オペレーティングシステムによって通常保持される。
【００１９】
自発的コンテキスト切り換えは例として用いられる。
上述した技法は、たとえば、スレッドに確保されているタイムスライスが経過したとき、より高い優先度を有する別のスレッドまたはプロセスによってスレッドが先取りされるときなど、オペレーティングシステムまたは他の適当なユニットに起因する自発的コンテキスト切り換えに使用することができる。
【００２０】
一実施形態では、時間間隔、閾値、およびスピン−放棄プロセッサ数等の様々なパラメータが、プログラムによって使用される変数として実施される。
スレッドはこういった変数を使用し、上述した技法に従ってスピン−放棄プロセッサ１３０にバインドする、またはスピン−放棄プロセッサ１３０からスレッドを解放するように設計される。
【００２１】
システムパフォーマンスの向上
本明細書に記載の技法は、システムパフォーマンスを向上させることができる。
２つの実験、すなわち専用スピン−放棄プロセッサがない状態での実験と、専用スピン−放棄プロセッサがある状態での実験とを行ったが、専用スピン−放棄プロセッサがある実験のほうが良好なシステムパフォーマンスを示した。
双方の実験において、１５０個のスレッド１１０および８個のプロセッサを使用し、５０個のスレッド１１０をスレッド１１０Ｗとして構成した。
すなわち、５０個のスレッド１１０がロックの取得を待ち、したがってスピン−放棄サイクルを行った。
例示目的のために、スピン−放棄しない残りの１００個のスレッド１１０をスレッド１１０Ｎと呼び、スレッド１１０Ｎは例示的なタスクセットを実行した。専用スピン−放棄プロセッサのない最初の実験では、１００個のスレッド１１０Ｎおよび５０個のスレッド１１０Ｗが、８個のプロセッサ上のそれぞれのタスクを実行し、１０回の実行からの平均として、これらのスレッド１１０Ｎおよび１１０Ｗがそれぞれのタスクを実行するのに約２６９秒かかった。
２番目の実験では、８個のうち２個のプロセッサがスピン−放棄プロセッサ１３０専用とされたため、残りのプロセッサ１２０は６個であった。
５０個のスレッド１１０Ｗが２個のスピン−放棄プロセッサ１３０上でスピン−放棄され、１００個のスレッド１１０Ｎが同じ例示的なタスクを６個のプロセッサ１２０上で行った。
その結果、１０回の実行の平均として、１００個のスレッド１１０Ｎおよび５０個のスレッド１１０Ｗが同じタスクを完了するのに、２６９秒の代わりに約１６９秒かかった。
【００２２】
［コンピュータシステム概観］
図２は、本発明の実施形態を実施し得るコンピュータシステム２００を示すブロック図である。
たとえば、コンピュータシステム２００は、システム１００を包含して、上述した技法に従ってプログラムおよび機能等を実行する等を実施することができる。
一実施形態では、コンピュータシステム２００は、中央演算処理装置（ＣＰＵ）２０４、ランダムアクセスメモリ（ＲＡＭ）２０８、読み出し専用メモリ（ＲＯＭ）２１２、記憶装置２１６、および通信インタフェース２２０を備え、これらはすべてバス２２４に接続される。
【００２３】
ＣＰＵ２０４は、ロジック制御、情報処理、およびコンピュータシステム２００内のアクティビティ調整を行う。
一実施形態では、ＣＰＵ２０４は、たとえば、入力装置２２８から表示装置２３２へのデータの移動を調整することによって、ＲＡＭ２０８およびＲＯＭ２１２に格納されている命令を実行する。
ＣＰＵ２０４は、１つまたは複数のプロセッサを含むことができる。
【００２４】
ＲＡＭ２０８は、通常主記憶装置と呼ばれ、ＣＰＵ２０４によって実行される情報および命令を一時的に格納する。
ＲＡＭ２０８内の情報は、入力装置２２８から得られるか、またはＣＰＵ２０４によって実行される命令が必要とするアルゴリズムプロセスの一環としてＣＰＵ２０４によって生成される。
【００２５】
ＲＯＭ２１２は情報および命令を格納し、ＲＯＭチップに一旦書き込まれると読み出されるだけであり、変更も除去もされない。
一実施形態では、ＲＯＭ２１２は、コンピュータシステム２００の構成および初期動作についてのコマンドを格納する。
【００２６】
記憶装置２１６は、フロッピー（登録商標）ディスク、ディスクドライブ、またはテーブドライブ等であり、コンピュータシステム２００が使用する情報を永続的に格納する。
【００２７】
通信インタフェース２２０は、コンピュータシステム２００が他のコンピュータまたは装置とインタフェースできるようにする。
通信インタフェース２２０は、たとえば、モデム、統合ディジタル通信サービス網（ＩＳＤＮ）カード、ローカルエリアネットワーク（ＬＡＮ）ポート等であり得る。
当業者は、モデムまたはＩＳＤＮカードは電話回線を介してデータ通信を提供する一方で、ＬＡＮポートはＬＡＮを介してデータ通信を提供することを認識しよう。
通信インタフェース２２０は、ワイヤレス通信も可能にすることができる。
【００２８】
バス２２４は、コンピュータシステム２００が使用する情報を通信する任意の通信機構であることができる。
図２の例では、バス２２４は、ＣＰＵ２０４、ＲＡＭ２０８、ＲＯＭ２１２、記憶装置２１６、通信インタフェース２２０等の間でデータを転送する媒体である。
【００２９】
コンピュータシステム２００は、通常、入力装置２２８、表示装置２３２、およびカーソル制御機構２３６に接続される。
入力装置２２８は、英数字および他のキーを含むキーボード等であり、ＣＰＵ２０４に情報およびコマンドを伝達する。
表示装置２３２は、陰極線管（ＣＲＴ）等であり、コンピュータシステム２００のユーザに情報を表示する。
カーソル制御機構２３６は、マウス、トラックボール、またはカーソル方向キー等であり、方向情報およびコマンドをＣＰＵ２０４に伝達し、また表示装置２３２上のカーソルの移動を制御する。
【００３０】
コンピュータシステム２００は、１つまたは複数のネットワークを通して他のコンピュータまたは装置と通信することができる。
たとえば、コンピュータシステム２００は、通信インタフェース２２０を使用し、ネットワーク２４０を通して、プリンタ２４８に接続された別のコンピュータ２４４と、またはワールドワイドウェブ２５２を通してサーバ２５６と通信する。
ワールドワイドウェブ２５２は、一般に「インターネット」と呼ばれる。
あるいは、コンピュータシステム２００は、ネットワーク２４０を介してインターネット２５２にアクセスすることができる。
【００３１】
コンピュータシステム２００は、上述した技法の実施に使用することができる。
各種実施形態では、ＣＰＵ２０４は、ＲＡＭ２０８に伝達された命令を実行することによって本技法のステップを実行する。
代替の実施形態では、ソフトウェア命令に代えて、またはソフトウェア命令と組み合わせてハードワイヤード回路を使用して、上記技法を実施することができる。
したがって、本発明の実施形態は、ソフトウェア、ファームウェア、ハードウェア、または回路のうちのいずれか一つまたはこれらの組み合わせに制限されない。
【００３２】
ＣＰＵ２０４によって実行される命令は、コンピュータが情報を読み出す任意の媒体を指す１つまたは複数のコンピュータ可読媒体に格納し、かつ／またはコンピュータ可読媒体を通して運ぶことができる。
コンピュータ可読媒体は、たとえば、フロッピー（登録商標）ディスク、ハードディスク、ジップドライブカートリッジ、磁気テープ、または任意の他の磁気媒体、ＣＤ−ＲＯＭ、ＣＤ−ＲＡＭ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、または他の任意の光学媒体、紙テープ、せん孔カード、または孔のパターンを有する任意の他の物理媒体、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、または任意の他のメモリチップもしくはカートリッジであることができる。
コンピュータ可読媒体はまた、同軸ケーブル、銅線、光ファイバ、音波、電磁波、静電結合、誘導結合等であってもよい。
例として、ＣＰＵ２０４によって実行される命令は、１つまたは複数のソフトウェアプログラムの形態であり、バス２２４を介してコンピュータシステム２００とインタフェースするＣＤ−ＲＯＭに最初は格納されている。
コンピュータシステム２００は、こうした命令をＲＡＭ２０８にロードして、いくつかの命令を実行し、通信インタフェース２２０、モデム、および電話回線を介してネットワーク、たとえばネットワーク２４０、インターネット２５２等に送信する。
リモートコンピュータは、ネットワークケーブルを通してデータを受信し、受信した命令を実行し、コンピュータシステム２００にデータを送信し、データが記憶装置２１６に格納される。
【００３３】
上記明細書において、本発明を特定の実施形態を参照して説明した。
しかし、各種修正および変更を、本発明の広範な精神および範囲から逸脱することなく行いうることが自明であろう。
したがって、本明細書ならびに図面は、制限ではなく例示として解釈すべきである。
【図面の簡単な説明】
【図１】本発明の実施形態を実施し得るシステムを示す。
【図２】本発明の実施形態を実施し得るコンピュータシステムを示す。
【符号の説明】
１００・・・システム、
１１０・・・スレッド、
１２０・・・プロセッサ、
１３０・・・スピン−放棄プロセッサ、
２００・・・コンピュータシステム、
２０４・・・中央演算処理装置（ＣＰＵ）、
２０８・・・ＲＡＭ、
２１２・・・ＲＯＭ、
２１６・・・記憶装置、
２２０・・・通信インタフェース、
２２４・・・バス２２４
２２８・・・入力装置、
２３２・・・表示装置、
２３６・・・カーソル制御機構、
２４０・・・ネットワーク、
２４４・・・ホストコンピュータ、
２４８・・・プリンタ、
２５２・・・インターネット、
２５６・・・ウェブサーバ、
【図１】
2004021985.tif 000003
【図２】
2004021985.tif 000004