JP2000029724A - マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置 - Google Patents

マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置

Info

Publication number
JP2000029724A
JP2000029724A JP11119434A JP11943499A JP2000029724A JP 2000029724 A JP2000029724 A JP 2000029724A JP 11119434 A JP11119434 A JP 11119434A JP 11943499 A JP11943499 A JP 11943499A JP 2000029724 A JP2000029724 A JP 2000029724A
Authority
JP
Japan
Prior art keywords
thread
active connection
input
threads
input event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11119434A
Other languages
English (en)
Inventor
Daryl A Huff
ダリル・エー.・ハフ
William J Yeager
ウイリアム・ジェイ.・イーガー
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000029724A publication Critical patent/JP2000029724A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Alarm Systems (AREA)

Abstract

(57)【要約】 (修正有) 【課題】マルチスレッド・システム内で動作するプロセ
ス内のスレッドへ送信された入力イベントを処理する。 【解決手段】プロセスの実行を招来する入力イベントを
受信すると、プロセス内の入力ポーリング・スレッドを
イネーブルし、イベントの送信先であるプロセス内のス
レッドを決定する。入力イベントを処理するために、そ
のスレッドがライト・ウェイト・プロセスを必要として
いることを最初に確定し、この後においてのみ、入力イ
ベントを受信するアクティブ接続スレッドにライト・ウ
ェイト・プロセスが割り当てられて実行される。これは
マルチスレッド・オペレーティング・システム内のスレ
ッドへ割り当てられるライト・ウェイト・プロセスの数
を大幅に低減する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、コンピュ
ータ・ソフトウェア及びクライアント/サーバー・アプ
リケーションの分野に関する。特に、本発明は、データ
をクライアントからマルチスレッド・オペレーティング
・システム内の適切なプロセス及びスレッドへ導くこと
に関する。
【0002】
【従来の技術】ネットワーク環境及び分散コンピューテ
ィング環境が拡大することにより、これらの環境を動か
し、かつサポートするオペレーティング・システムに対
する処理要求は増大している。応答時間及び汎用オペレ
ーティング・システムの機能に関する期待は時とともに
増大している。その一方、ネットワークが成長すること
により、ユーザー数及びデータ量が増大する。幾つかの
ケースでは、オペレーティング・システム、特に、分散
コンピューティング環境内で動作するオペレーティング
・システム内の使用可能なリソースは、ネットワークの
ために最初に意図したユーザー数またはデータ量に対し
ては適切であった。しかし、ネットワークに対する要求
が増大することにより、これらのリソースは貴重になっ
てきている。オペレーティング・システムのリソースの
プールは一定であるのに対し、各ユーザー・リクエスト
のボリュームは増大している。
【0003】オペレーティング・システムが使用する2
つの特定のリソースとしては、汎用プロセスと、幾つか
のオペレーティング・システムにおいてライト・ウェイ
ト・プロセスと呼ばれるスレッド・エクセキューション
・イネーブラとが挙げられる。汎用プロセスの1つのタ
イプはメモリ、ファイル・ディスクリプタ及びスタック
・ルーチンなどのリソースのプールを独自に有する。多
くの場合、この種のプロセス内には、様々なスレッドが
存在する。スレッドは特定の一般的に狭いタスクを達成
するように選ばれた実行可能な一片のコンピュータ・コ
ードである。
【0004】プロセスに含まれるスレッドの種類は、プ
ロセス及びオペレーティング・システムの機能及び全体
的要件に基づいて変化する。各プロセス及びスレッドの
背後には、ライト・ウェイト・プロセスが存在する。プ
ロセスまたはスレッドに代わって、システム・コール及
び入出力オペレーションを実施することにより、ライト
・ウェイト・プロセスはプロセスまたはスレッドの実行
を可能にする。例えば、一片のコードがオペレーティン
グ・システムを呼び出すことをライト・ウェイト・プロ
セスが可能にする。従って、オペレーティング・システ
ムからライト・ウェイト・プロセスを割り当てられない
限り、スレッドやプロセスは効果的に動作できない。一
般的に、スレッドがシステム・コールを実施する際、ラ
イト・ウェイト・プロセスがスレッドへ割り当てられ
る。しかし、オペレーティング・システムは割り当て可
能なライト・ウェイト・プロセスを限られた数しか常に
は保持していない。そして、プロセス及びスレッドの数
が急増した場合、このライト・ウェイト・プロセスのプ
ールは枯渇し得る。
【0005】幾つかのケースでは、プロセスまたはそれ
に含まれるスレッドは、外部イベントの発生または外部
ソースからの入力を待つ。ある種の外部信号または外部
データをプロセスまたはスレッドが“聞く”ためには、
プロセスまたはスレッドはライト・ウェイト・プロセス
をその背後に有する必要がある。入力を待つスレッドの
数または実行中のプロセスの数が増加し続けた場合、オ
ペレーティング・システムは更に多くのライト・ウェイ
ト・プロセスを割り当てる必要が生じる。全てのライト
・ウェイト・プロセスを割り当ててしまった後、プロセ
スP1が実行可能な状態(従って、ライト・ウェイト・
プロセスを必要とする状態)にある際、幾つかのオペレ
ーティング・システムはP2等の別のプロセスとの間で
のコンテキスト切り換えを実施する。コンテキスト切換
えはリソースを比較的集中して使用するオペレーション
であり、P1の要求を満たすためにオペレーティング・
システムは、P2のコンテキストを保存し、P1のコン
テキストを復元し、P2から取得したばかりの利用可能
なライト・ウェイト・プロセスをP1へ割り当てる。次
いで、システムはP1の実行を許可し、それが終了する
か、またはアイドル状態となった際、P2のコンテキス
トを復元し、ライト・ウェイト・プロセスをP2へ割り
当てる。プロセス全体にとって、この種のコンテキスト
切換え(即ち、プロセスのコンテキストの保存及び復
元)は、長い処理時間及び多くのシステム・リソースを
常に必要とする。このため、コンテキスト切換えは望ま
しくない。プロセス内に複数のスレッドを持たせる考え
は、プロセス・コンテキスト切換えを低減する要望から
生まれた。
【0006】特に、ハイボリューム・マルチスレッド・
オペレーティング・システム内において、各スレッドへ
独自の専用ライト・ウェイト・プロセスを割り当てるこ
とは望ましくない。多くの状況下では、スレッドがデー
タを活発に処理しないか、またはスレッドが活発に実行
されないといったアイドル状態または一種の入力待ち状
態に、スレッドが大部分の時間おかれている場合、各ス
レッドへ独自の専用ライト・ウェイト・プロセスを割り
当てることは特に非効率的であり、かつ無駄である。何
千ものユーザーを擁するハイボリューム・ネットワーク
では、ライト・ウェイト・プロセスの数は低いレベルへ
落ち込み得る。オペレーティング・システム内で利用可
能なライト・ウェイト・プロセスの数が最初から比較的
低い数に設定されている小規模ネットワークでも、この
問題は発生する。ライト・ウェイト・プロセスの開始及
び停止は大きなオーバーヘッドを必要としないが、オペ
レーティング・システムが必要な時にライト・ウェイト
・プロセスを常に利用できるようにすることは望まし
い。コンピューティング環境のサイズとは無関係に、ス
レッドは簡単に急増し、かつライト・ウェイト・プロセ
スなどの貴重なシステム・リソースを消費する。
【0007】従って、スレッドへ割り当てるライト・ウ
ェイト・プロセスの数を低減するメカニズムを有するこ
とは望ましい。スレッドへ送信された外部信号を検出す
るために、同スレッドがライト・ウェイト・プロセスを
単独で必要とする状況において、これは特に望ましい。
エクセキューション、即ち、実行のためにのみライト・
ウェイト・プロセスを必要とするスレッドに対し、オペ
レーティング・システムがライト・ウェイト・プロセス
を割り当てることにより、システムのライト・ウェイト
・プロセスを更に効果的に使用し、システム・リソース
における総合的な節約を促進することは望ましい。
【0008】
【発明の概要】本発明の目的を達成するために、マルチ
スレッド・システム内で動作するプロセス内のスレッド
へ送信された入力イベントを処理するための方法、装置
及びコンピュータ読み取り可能な媒体を開示する。本発
明の1つの態様では、1つの方法を提供する。この方法
では、プロセス内の複数のアクティブ接続スレッドのう
ちの1つの実行を招来する入力イベントを受信したこと
をプロセスへ警告する。プロセス内の入力ポーリング・
スレッドと称される特別なスレッドをイネーブルし、他
のスレッド固有データとともに使用して、プロセス内の
複数のスレッドのうちのイベントの送信先であるスレッ
ドを決定する。次いで、そのスレッドがトリガされて入
力イベントを処理する。
【0009】1つの実施形態では、ライト・ウェイト・
プロセスなどのエクセキューション・イネーブラを入力
ポーリング・スレッドへ割り当て、かつ実行し、これに
よって、入力ポーリング・スレッドをイネーブルする。
別の実施形態では、プロセスが維持するスレッドのリス
トをチェックする。各スレッドはファイル・ディスクリ
プタによる識別が可能であり、かつ関連するスレッド識
別子、スレッド待ち変数及びエラー・リターン・コード
を有する。スレッド待ち変数の状態は、そのスレッド待
ち変数に関連するスレッドへ送信された入力イベントを
受信した際に変化する。
【0010】本発明の別の態様では、入力イベントを受
信した際にプロセス内のスレッドを起動する方法であっ
て、より少ない数のライト・ウェイト・プロセスを使用
する方法を開示する。アクティブ接続スレッドへ送信さ
れた入力イベントは受信され、その入力イベントの送信
先であるアクティブ接続スレッドを決定するために、ポ
ーリング・スレッドが使用される。その入力イベントを
処理するために、単一のライト・ウェイト・プロセスが
適切なアクティブ接続スレッドによって使用される。こ
の場合、入力イベントが前記の適切なアクティブ接続ス
レッドへ送信されたことが確定した後でのみ、ライト・
ウェイト・プロセスは前記スレッドへ割り当てられる。
1つの実施形態では、選択されたアクティブ接続スレッ
ドの実行を保証するために、入力イベントを受信するア
クティブ接続スレッドへ加わる変化を監視する条件付き
待ちスレッドが実行される。
【0011】本発明の別の態様では、プロセス内の特定
のスレッドへ送信されたユーザーからの入力を受信する
ように構成されたコンピュータ・システムを開示する。
入力ポーリング・スレッドはプロセス内のアクティブ接
続スレッドへ送信された入力イベントを検出し、その入
力イベントを選択されたアクティブ接続スレッドへルー
ティングする。入力ポーリング・スレッドのみが入力イ
ベントの検出のためにライト・ウェイト・プロセスを必
要とし、これによって、アクティブ接続スレッドが使用
するライト・ウェイト・プロセスの必要性を低減する
(これらのライト・ウェイト・プロセスは入力イベント
を検出するために従来は必要であった)。プロセスに関
連する入力待ちテーブルは、入力イベントを実行してい
るアクティブ接続スレッドの情報を監視するとともに格
納するように構成されている。入力ポーリング・スレッ
ドは、入力待ちテーブルをポーリングして、入力イベン
トの送信先であるアクティブ接続スレッドを決定する。
これによって、プロセス内の複数のアクティブ接続スレ
ッドが入力イベントを個々に監視する必要性を低減す
る。
【0012】本発明の1つの実施形態では、条件付き待
ちスレッドが入力待ちテーブルを監視して、状態変化を
生じた選択されたアクティブ接続スレッドを決定する。
これにより、状態変化の生じたアクティブ接続スレッド
にライト・ウェイト・プロセスが割り当てられることが
保証される。
【0013】
【発明の実施の形態】本発明の好ましい実施形態を以下
に詳述する。好ましい実施形態の一例を添付図面に示
す。本発明を好ましい実施形態に関連して詳述するが、
これは本発明を1つの好ましい実施形態に制限すること
を意図するものではない。逆に、請求の範囲に定義する
本発明の精神及び範囲に含まれる別例、変更例及び同等
の例をカバーすることを意図する。
【0014】オペレーティング・システムが割り当てる
ライト・ウェイト・プロセスの数を低減する方法を複数
の図面に示す。前記のように、汎用プロセス(例:親プ
ロセスまたは子プロセス)と、プロセスの内部または外
部で動作するスレッドと、ジョブと、オペレーティング
・システム内で動作する他の実行可能エンティティとへ
割り当て可能なライト・ウェイト・プロセスを、オペレ
ーティング・システムが有することは一般的に望まし
い。オペレーティング・システム内のライト・ウェイト
・プロセスが利用できるリソースには限りがあり、その
リソースの量はシステムのサイズ、即ち、ユーザー数及
びデータ量などに比例する。このため、システムが大幅
に増大した場合、またはシステムがそのシステムのリソ
ースを効果的に使用するように構成されていない場合、
コンピューティング環境のサイズとは無関係に、ライト
・ウェイト・プロセスは使用すべきリソースを確保でき
なくなる。ライト・ウェイト・プロセスのプールが引出
せるリソースが無くなった後、コンピュータ・ネットワ
ークの全体的なパフォーマンスは大幅に低下する。例え
ば、プロセスの要求を満たすために、オペレーティング
・システムはコンテキスト切換えを実施する必要が生じ
る。そして、スレッドが実行するユーザーのリクエスト
はライト・ウェイト・プロセスを待つ必要があり、これ
によって応答時間が遅くなる。
【0015】例えば、本実施形態では、スレッドはクラ
イアント接続を表す。この例では、このクライアント接
続はユーザーがメール・メッセージへアクセスしようと
するサーバー上のメール・メッセージ・ストアへのクラ
イアント接続であり得る。この状況でのアクティブ接続
は大型ネットワーク内のメッセージ・ストアへのユーザ
ー・セッションを表す。この環境内では、親プロセスは
メール・メッセージ・ストアへのアクセスを求めるユー
ザー・リクエストを受信し、かつ幾つかの子プロセスを
管理する。そして、各子プロセスは多くのアクティブ接
続スレッドを一般的に有する。本実施形態のこの構成を
図1に示す。
【0016】図1は本発明の1つの実施形態に基づくメ
ッセージ・アクセス・コンフィギュレーションの各種コ
ンポーネント及び方法を示すブロック図である。本実施
形態では、格納され、かつアクセスされるメッセージは
インターネット電子メール・メッセージである。インタ
ーネット・メッセージ(IM)アクセス・デーモン10
0はメッセージ・ストアを有するIMAPサーバー等の
ネットワーク・メール・サーバー上に常駐する。デーモ
ン100内の親プロセス102はクライアント104か
ら送信されたデータ(一般的には、接続のコマンドまた
はリクエスト)に応答する。クライアントからの接続の
リクエスト106は待ち行列内に格納される。そして、
リクエスト106を形成するプロトコルに基づいて決定
されたポートで、サーバーはそのリクエスト106を受
信する。サーバーがリクエスト106に応答した後、ク
ライアントとの接続108が確立される。そして、クラ
イアントはメールへのアクセス及びメールの操作に用い
るコマンド等のデータの送信を開始可能である。
【0017】親プロセス102は並行動作する数種類の
子プロセス110のコントロールを有する。親プロセス
102のコントロール下にある子プロセスのリスト11
2は親プロセス102によって維持されている。各子プ
ロセス110は数種類のスレッドを有し、各スレッドは
幾つかの状態のうちの1つを有し得る。本実施形態で
は、50〜200個のスレッドが各子プロセス内に存在
する。クライアント及びサーバーの間の接続が確立され
た後、線114で示すスレッド及びクライアントの間の
セッションが確立される。
【0018】本実施形態では、子プロセスと、スレッド
と、同スレッドに関連する接続とは番号または識別子を
それぞれ有する。この情報は一連のデータ・セル118
を有する共有メモリ116内に格納され、この共有メモ
リ116は全ての子プロセスによる読み出し及び更新が
可能である。一般的に、子プロセス同士は互いの存在を
認識しないうえ、互いに通信できないため、共有メモリ
116の使用は効果的である。別の好ましい実施形態で
は、子プロセス同士が互いに直接通信可能な場合、共有
メモリを削除し得る。本実施形態では、子プロセスが形
成された際、親プロセスはその子プロセスに関連する共
有メモリ・セル118を即座に割り当てる。別の好まし
い実施形態では、共有メモリは子プロセス自身によって
割り当てられるか、またはオペレーティング・システム
内の他のエンティティによって割り当てられる。
【0019】スレッドが子プロセス内で形成された後、
スレッド固有データ・セル118が同スレッドへ割り当
てられる。本実施形態では、サーバーを起動した際、共
有メモリ116は親プロセスによって構築され、かつ事
前割り当てされる。別の好ましい実施形態では、必要に
応じて、共有メモリ116をオペレーティング・システ
ム内の他のエンティティによって構築し得る。前記のよ
うに、共有メモリは一連のデータ・セルからなる。これ
らのセル118はプロセスに対応する座標“i”と、こ
のプロセス内のスレッドに対応する座標“j”とによっ
て識別される。従って、セル(Pi,Tj)はスレッド固
有データ・セルであり、このスレッド固有データ・セル
は接続番号“k”をさらに含む。この接続番号“k”
は、メールボックスの更新またはメールボックスからの
メッセージのコピー等の1つのスレッドのアクションを
同スレッドから他のスレッドへ通知することを可能にす
る。1つのスレッドのアクションを同スレッドが同じ親
プロセスの下にある他の全てのスレッドへ通知すること
を、共有メモリ116内に存在する本実施形態のスレッ
ド固有データ・セル118は可能にする。従って、共有
メモリはサーバー上に常駐し、親プロセスが起動した
後、共有メモリは親プロセスによって事前割り当てさ
れ、かつコントロールされる。
【0020】従来のシステムでは、自身へ送信された入
力イベントを検出するために、各アクティブ接続スレッ
ドは独自のライト・ウェイト・プロセスを有する必要が
ある。大量のユーザーを抱え、その全てのユーザーがメ
ールへのアクセス及び新規メールの受信を活発に行って
いるシステムでは、ライト・ウェイト・プロセスの数は
急激に枯渇するか、または非常に低いレベルへ達し得
る。これにより、ネットワーク上のユーザーが自分のメ
ールボックスへアクセスできなくなる事態、または新規
ユーザーがメッセージ・ストアへの接続を確立できなく
なるという事態が生じる。ユーザーが電子メール・シス
テムに期待するハイパフォーマンス・スタンダードを考
えた場合、これらはいずれも非常に望ましくない事態で
ある。
【0021】図2は本発明の1つの実施形態に基づくプ
ロセスに関連する入力待ちテーブルを示す。オペレーテ
ィング・システムは入力イベントの受信を本実施形態の
方法のトップ・レイヤーにおいて開始する。一般的に、
これはユーザーまたは外部ソース(例:別のコンピュー
タ・ネットワーク)が形成する一種のアクティビティで
ある。本発明では、オペレーティング・システムは分散
コンピューティング環境に適する。例えば、本発明での
使用に適するオペレーティング・システムとしては、サ
ン・マイクロシステムズ・インコーポレイテッドのソラ
リス(商標名)オペレーティング・システムなどのUn
ixベースのオペレーティング・システム、またはマイ
クロソフト・コーポレイションのウィンドウズNT(商
標名)オペレーティング・システムなどのDOSベース
のオペレーティング・システムが挙げられる。入力イベ
ントは通常のユーザー・リクエストであり得る。この通
常のユーザー・リクエストの例としては、新規メールを
チェックするリクエスト、またはドキュメントを印刷す
るリクエストを送信するリクエストなどが挙げられる。
これに代えて、入力イベントは割り込み信号などのさら
に頻度の低いイベントであり得る。これらのこととは無
関係に、入力イベントは、通常はプロセスへ、より詳細
にはスレッドへ送信される。本発明の1つの実施形態に
基づく方法を図2に関連して詳述する。好ましい実施形
態では、1つのテーブルは複数のプロセスの情報を保持
可能である。図2に示すテーブル(図2に関する説明を
参照)は異なる種類のスレッドを含むオペレーティング
・システム内のプロセスに一般的に関連する。本発明の
オペレーティング・システムはネットワークをベースと
するオペレーティング・システムであって、かつマルチ
スレッド・オペレーティング・システムである。複数の
ユーザー(または複数の外部エンティティ)への接続を
それぞれ表す複数のスレッドを含むプロセスは、そのプ
ロセスに関連付けられた入力待ちテーブルを有する。こ
の入力待ちテーブルは、スレッドへの入力イベントの監
視または同スレッドへの入力イベントのルーティングに
使用される。本実施形態では、プロセスはスレッドを1
つのみ有しても良いし、スレッドを全く有さなくても良
い。
【0022】一般的な接続では、スレッドが存在する大
半の時間、そのスレッドは入力またはある種のアクティ
ビティの発生を待っている。本実施形態では、待ち状態
にある接続、即ち、スレッドを示す情報と、入力イベン
トを実行中または処理中の接続、即ち、スレッドを示す
情報とをプロセスの入力待ちテーブルが格納する。本実
施形態では、プロセスの入力待ちテーブルを維持するた
めのライト・ウェイト・プロセスをオペレーティング・
システムがプロセスへ割り当てる。本実施形態のオペレ
ーティング・システムは複数のライト・ウェイト・プロ
セスをスケジュールする。このライト・ウェイト・プロ
セスのスケジューリングには、スレッドがライト・ウェ
イト・プロセスを必要とする際(例:スレッドがオペレ
ーティング・システムを呼び出す際、またはスレッドが
入出力オペレーションを実施する際)、ライト・ウェイ
ト・プロセスをスレッドへ割り当てることが含まれる。
ライト・ウェイト・プロセスの1つのタイプはスレッド
のエクセキューション、即ち、実行を可能にするエクセ
キューション・イネーブラと呼び得る。別の好ましい実
施形態では、システム内に限られた数しか存在せず、よ
って慎重かつ効率的な割り当てを要するライト・ウェイ
ト・プロセスに類似した別の種類のエクセキューション
・イネーブラをオペレーティング・システムが使用す
る。入力イベントを受信した際、入力待ちテーブルに関
連するスレッドはポーリング・スレッドと称される特別
なスレッドを起動する。入力イベントを受信する接続を
決定し、その接続の状態を、待ち状態から、その接続が
処理すべき入力を受信したことを示す状態へと切り換え
るために、ポーリング・スレッドが入力待ちテーブルの
ポーリング、即ち、スキャンニングを行う。本実施形態
の入力待ちテーブルは、待ち行列または連結リストなど
の別のデータ構成を用いて実現し得る。これらの実施形
態では、入力イベントを受信した接続を決定するために
データ構造内の各エントリをチェックする同様の機能
を、ポーリング・スレッドが依然有している。同様に、
別の好ましい実施形態では、セマフォ、フラッグまたは
他の種類の変数などを使用することによって、入力イベ
ントの受信を様々な方法で表現できる。ポーリング・ス
レッドは、そのポーリング・スレッドへ割り当てられた
単一のエクセキューション・イネーブラを有する。単一
のエクセキューション・イネーブラは、本実施形態では
ライト・ウェイト・プロセスである。以下に詳述するよ
うに、各接続が独自のライト・ウェイト・プロセスの割
り当てを受ける必要性を、これは大幅に低減する。ポー
リング・スレッドがテーブルをスキャンニングして適切
な接続の状態を切換えた後、テーブル内の接続エントリ
への変更を監視する条件付き待ちスレッドは、状態の切
換わった全ての接続へライト・ウェイト・プロセス、即
ち、エクセキューション・イネーブラを割り当て、これ
によりアクティブ接続の実行をイネーブルする責務を有
する。
【0023】図2では、本実施形態の入力待ちテーブル
200は、接続を表すファイル・ディスクリプタ204
を保持するためのファイル・ディスクリプタ・コラム2
02と、スレッド識別子208を保持するためのスレッ
ド識別子コラム206と、待ち標識212を保持するた
めの条件付き待ち変数コラム210と、エラー・リター
ン値216を保持するためのエラー・リターン・コラム
214とを有する。別の好ましい実施形態では、入力待
ちテーブルの主要機能を変更することなく、同入力待ち
テーブルは適切な更に多い数または少ない数のコラムを
有し得る。前記のように、別の好ましい実施形態では、
接続、即ち、スレッドのデータを格納するために、テー
ブル以外のデータ構造をプロセスが使用可能であり、こ
のプロセスは本発明の範囲内に依然含まれる。本実施形
態では、1つの接続はテーブル200の行218によっ
て表される。
【0024】本実施形態では、ファイル・ディスクリプ
タ(ファイル記述子)204は特定のプロセスの接続を
表す。プロセスのコンテキストでは、接続は実質的にフ
ァイルである。このため、新規接続がプロセスへ関連付
けされた際、同新規接続はプロセス内においてファイル
・ディスクリプタで表される。従って、プロセス内の各
接続はファイル・ディスクリプタで表される。本実施形
態では、接続が待ち状態から実行(即ち、“GO”)状
態へ移行し、次いで、待ち状態へ戻った際、その接続は
同じファイル・ディスクリプタを保持し続ける一方、入
力待ちテーブル内に新規エントリを有する。別の好まし
い実施形態では、接続は同じファイル・ディスクリプタ
と、入力待ちテーブル内の同じ行とを継続して保持可能
であり、かつテーブル内の新規エントリを初期化する必
要がない。
【0025】スレッド識別子208はスレッドを識別す
る一義的な値であり、かつスレッドのファイル・ディス
クリプタとは異なる。スレッド識別子208はスレッド
・セマフォまたはスレッド条件付き待ち変数212をポ
ストすることに関連して使用される。本実施形態では、
スレッド条件付き待ち変数212はフラッグであり、同
フラッグはスレッドが入力待ち状態及び実行状態のいず
れにあるかを示す。送信された入力イベントを有するス
レッドを決定するために、ポーリング・スレッドはテー
ブルのスキャンニングを実施し、次いで、変数212を
“GO”へセットする。そして、別のスレッドまたはラ
イト・ウェイト・プロセスがこのスレッドを開始する。
従って、待ち変数212はスレッドの状態を示すために
使用するスレッド固有フラッグである。エラー・リター
ン値216はスレッドが直面する全てのエラー・コンデ
ィションを格納するために使用する。別の好ましい実施
形態では、プロセスを実行する特定のプラットフォー
ム、または他のシステム及びアプリケーションの要件に
基づき、入力待ちテーブルは更に多い数または少ない数
のコラム、即ち、フィールドを有し得る。更に、別の好
ましい実施形態では、プロセスは、単一のライト・ウェ
イト・プロセス(または同様のエクセキューション・イ
ネーブラ)によって表されるポーリング・スレッドが入
力イベント及びスレッドの実行の管理を行うことを可能
にするような、スレッドに関するデータを格納する別の
種類のデータ構造を使用することも可能である。
【0026】図2に基づいて説明した入力待ちテーブル
は、入力イベントを受信し、かつ適切な接続スレッドを
実行する方法に使用される。この方法はライト・ウェイ
ト・プロセスの消費を低減する。図3は受信した入力イ
ベントに応じて接続スレッドを実行する本発明の1つの
実施形態に基づく方法を示すフローチャートである。ス
テップ302では、オペレーティング・システムは入力
イベントまたはある種のアクティビティ(例:ユーザー
・リクエストまたはシステム割り込み)を検出する。こ
の入力イベントはプロセス内のアクティブ接続スレッド
によって表される接続へ送信される。オペレーティング
・システムは、このアクティブ接続スレッド(このアク
ティブ接続スレッドはファイル・ディスクリプタによっ
て表される)を有するプロセスへ警告を行う。本実施形
態では、警告先のプロセスを決定するために、システム
は入力イベントに関連するファイル・ディスクリプタを
使用する。図3のファイル・ディスクリプタ・コラム3
02に関連して詳述したように、オペレーティング・シ
ステム及び入力待ちテーブル内では、各スレッドはファ
イル・ディスクリプタ204によって表され、かつ識別
される。
【0027】ステップ302では、ポーリング・スレッ
ドに関連するライト・ウェイト・プロセスはRUN状態
(実行状態)になる。このステップは、自身が保有する
1つのスレッドが入力イベントを有することを伝える警
告をプロセスが受信した際に発生する。ポーリング・ス
レッドは自身へ割り当てられたライト・ウェイト・プロ
セスを有する。しかし、ポーリング・スレッドは自分の
プロセスが警告を受けるまで眠っている。そして、自分
のプロセスが警告を受けた時点で、ポーリング・スレッ
ドは目覚める。ステップ304では、ポーリング・スレ
ッドはエクセキューション、即ち、実行を開始する。本
実施形態では、システム・コールまたは入出力オペレー
ションの実施などの必要な機能を接続スレッドが実施す
ることを可能にすることにより、ライト・ウェイト・プ
ロセスは接続スレッドの実行を可能にする。
【0028】ステップ308では、どのファイル・ディ
スクリプタが、即ち、どのスレッドが入力イベントを有
するかを決定するために、ポーリング・スレッドが入力
待ちテーブルをスキャンニングする。本実施形態では、
スレッドの条件付き待ち変数212の状態を切り換える
ことにより、ポーリング・スレッドがイベントを有する
ファイル・ディスクリプタをアンブロックする。これ
は、本実施形態では、入力イベントが存在する場合に、
条件付き待ち変数を“1”にするように信号を送ること
によって達成される。そして、スレッドに対する入力イ
ベントが存在しない場合には、スレッドを変更せずに放
置する。本実施形態では、条件付き待ち変数212を
“0”へセットするWaitForInputと呼ばれるオペレーテ
ィング・システム関数を呼び出すことによって、スレッ
ドは入力待ち状態へ置かれ、次いで、条件付き待ち変数
を待つ。別の好ましい実施形態では、スレッド若しくは
プロセスが、例えば、セマフォまたはフラッグをセット
することによりスレッドを待ち状態にするための他のル
ーチンを呼び出すか、あるいは、そのための他のプロシ
ージャを有し得る。
【0029】ステップ310では、プロセス内で、複数
の接続スレッドを監督して状態変化のあった接続スレッ
ドを検出する条件付き待ちスレッドが、状態変化のあっ
た接続スレッドへのライト・ウェイト・プロセスの割り
当てを保証し、これによって、状態変化のあったスレッ
ドは実行が可能になる。本実施形態では、この「条件付
き待ち」ライト・ウェイト・プロセスは、ポーリング・
スレッドが接続スレッドへ実施した処理の内容を確認す
るようにチェックを行い、かつそれに基づいて動作す
る。本実施形態のステップ312では、入力イベントを
処理する前に、スレッドは入力待ちテーブル内に存在す
る同スレッドのエントリを削除する。ステップ314で
は、目覚めた各スレッドは入力イベントまたはアクティ
ビティを処理する。これは目覚めた各スレッドがライト
・ウェイト・プロセスを事前に割り当てられていること
により可能である。スレッドが入力イベントを処理した
後、入力待ち状態へ戻ることを示すために、そのスレッ
ドは入力待ちテーブル内の新規エントリを初期化する。
本実施形態では、WaitForInput関数を呼び出し、次い
で、条件付き待ち変数を待つことにより、条件付き待ち
変数は“0”へセットされる。別の好ましい実施形態で
は、入力イベントの処理を終了した際、スレッドは新規
エントリを初期化することなく、入力待ちテーブル内で
以前占有していたエントリと同じエントリを使用し得
る。テーブルが、行を再度使用する静的テーブルと、新
規行を初期化する動的テーブルとのいずれであるかは、
入力待ちテーブルの機能性及び目的に影響を及ぼさな
い。
【0030】入力待ちテーブル内におけるスレッドの新
規エントリを初期化した後、スレッドの実行を可能にす
るライト・ウェイト・プロセスは、そのスレッドから解
放される。前記の条件付き待ちスレッドはライト・ウェ
イト・プロセスを別のスレッドへ再割り当てするか、ま
たは、そのライト・ウェイト・プロセスをオペレーティ
ング・システム内のライト・ウェイト・プロセスのプー
ルへ戻すことが可能である。スレッドが実行を終えた
際、ライト・ウェイト・プロセスをスレッドから解放す
ることによって、システムはポーリング・スレッドの効
果を達成する。従来のシステムでは、スレッドがアイド
ル状態または入力待ち状態にある際であっても、スレッ
ドはライト・ウェイト・プロセスを占有し続ける。本発
明では、入力待ちテーブルを使用し、かつ“条件付き待
ち”スレッドと協動するポーリング・スレッドは、ライ
ト・ウェイト・プロセスをスレッドへ必要な時にのみ割
り当てることを可能する。これによって、ポーリング・
スレッドは複数の接続スレッドによるライト・ウェイト
・プロセスの消費を大幅に低減する。
【0031】前述のように、本発明は、コンピュータ・
システム内に格納されたデータを使用する様々なコンピ
ュータ実行オペレーションを利用する。これらのオペレ
ーションは物理量の物理操作を必要とするオペレーショ
ンを含む(但し、そのオペレーションに限定されな
い)。一般的に、必ずしも必要でないが、これらの物理
量は、格納、転送、結合、比較、及び、他の操作が可能
な電気信号または磁気信号の形態をなす。本発明の一部
を構成する本明細書中に開示するオペレーションは、効
果的なマシン・オペレーションである。実施する操作は
生成(producing)、識別(identifying)、実行(runni
ng)、決定(determining)、比較(comparing)、実行
(executing)、ダウンローディング(downloading)ま
たは検出(detecting)等の用語で示されることが多
い。特に、共通の用法を確立するために、これらの電気
信号または磁気信号をビット、値、エレメント、変数、
キャラクターまたはデータ等として示すと都合が良い。
しかし、これらの用語またはこれらに類似する用語の全
ては適切な物理量に付随すべきであり、かつこれらの物
理量に適用された都合の良いラベルにすぎない点を覚え
ておく必要がある。
【0032】更に、本発明は前記のオペレーションを実
施するためのデバイス、システムまたは装置に関する。
システムは要求された目的のために特別に構築可能であ
る。また、システムは汎用コンピュータとすることが可
能である。汎用コンピュータに格納されたコンピュータ
・プログラムによって、その汎用コンピュータは選択的
に作動または設定される。前記の複数のプロセスは特定
のコンピュータまたは他のコンピューティング装置に固
有のものではない。特に、本明細書の開示内容に基づい
て記述されたプログラムを様々な汎用コンピュータと併
用可能である。これに代えて、要求されたオペレーショ
ンを実施するために、更に特別なコンピュータ・システ
ムを形成することは更に都合が良い。
【0033】図4は本発明の1つの実施形態に基づく処
理の実施に適した汎用コンピュータ・システム400の
ブロック図である。図4は汎用コンピュータ・システム
の1つの例を示す。本発明の処理を実施するために、他
のコンピュータ・システム・アーキテクチャ及びコンフ
ィギュレーションを使用し得る。以下に詳述する様々な
サブシステムからなるコンピュータ・システム400は
少なくとも1つのマイクロプロセッサ・サブシステム
(中央処理装置、即ち、CPUとも称される)402を
含む。即ち、CPU402はシングルチップ・プロセッ
サまたは複数のプロセッサによって実現し得る。CPU
402はコンピュータ・システム400のオペレーショ
ンを制御する汎用デジタル・プロセッサである。メモリ
から取得した命令を使用して、CPU402は入力デー
タの受信及び操作と、出力デバイス上でのデータの出力
及び表示とを制御する。
【0034】CPU402は一般的にランダム・アクセ
ス・メモリ(RAM)からなる第1の一次記憶装置40
4へメモリ・バス408を通じて双方向接続されてい
る。更に、CPU402は一般的にリード・オンリ・メ
モリ(ROM)からなる第2の一次記憶装置406へメ
モリ・バス408を通じて単方向接続されている。当該
技術分野でよく知られているように、一次記憶装置40
4は汎用記憶領域及び作業メモリとして使用可能であ
り、さらには入力データ及び処理済みデータを格納する
ためにも使用できる。更に、CPU402上のオペレー
ションを処理するためのデータ及び命令を格納する以外
に、一次記憶装置404は例えばスレッド及びプロセス
の形態でプログラミング命令及びデータを格納可能であ
る。更に、データ及び命令をメモリ・バス408を通じ
て双方向で高速転送するために、一次記憶装置404は
一般的に使用される。同様に、当該技術分野でよく知れ
られているように、CPU402がその機能を果たすた
めに使用する基本オペレーティング命令、プログラム・
コード、データ及びオブジェクトを一次記憶装置406
は一般的に含む。データ・アクセスが双方向と単方向の
いずれを必要とするかなどの条件に基づいて、一次記憶
装置404,406は以下に詳述する任意の適切なコン
ピュータ読み取り可能記憶媒体を含み得る。CPU40
2は、頻繁に必要となるデータをキャッシュ・メモリ4
30内へ直接的かつ超高速に検索し、かつ格納できる。
【0035】取り外し可能大容量記憶装置412はコン
ピュータ・システム400のための別のデータ記憶能力
を提供し、かつペリフェラル・バス414を通じてCP
U402へ双方向または単方向で接続されている。例え
ば、CD−ROMとして一般的に知られている特定の取
り外し可能大容量記憶装置はデータを単方向でCPU4
02へ送信する。その一方、フロッピー・ディスクはデ
ータを双方向でCPU402へ送信し得る。記憶装置4
12は磁気テープ、フラッシュ・メモリ、搬送波に組み
込まれた信号、PCカード、ポータブル大容量記憶装
置、ホログラフィック記憶装置及び他の記憶装置等のコ
ンピュータ読み取り可能な媒体を更に含み得る。固定大
容量記憶装置416は別のデータ記憶能力を提供し、か
つペリフェラル・バス414を通じてCPU402へ双
方向で接続されている。大容量記憶装置416の最も一
般的な例としては、ハード・ディスク・ドライブが挙げ
られる。一般的に、これらの媒体へのアクセスは一次記
憶装置404,406へのアクセスより遅い。CPU4
02が頻繁に使用しない他のプログラミング命令及びデ
ータ等を大容量記憶装置412,416は一般的に格納
する。必要に応じて、大容量記憶装置412,416内
に保持された情報は、一次記憶装置404(例:RA
M)の一部を構成するバーチャル・メモリとして標準的
に組込み可能である。
【0036】記憶装置サブシステムへのCPU402の
アクセスを提供する以外に、ペリフェラル・バス414
は他のサブシステム及びデバイスへのアクセスを提供す
るために使用できる。本実施形態では、これらは、ディ
スプレイ・モニタ418及びアダプタ420、プリンタ
・デバイス422、ネットワーク・インターフェース4
24、補助入出力装置インターフェース426、サウン
ド・カード428及びスピーカー430、並びに必要と
される他のサブシステムを含む。
【0037】図示するように、ネットワーク接続を使用
することにより、ネットワーク・インターフェース42
4はCPU402を別のコンピュータ、コンピュータ・
ネットワークまたはテレコミュニケーション・ネットワ
ークへ接続可能にする。前記の方法のステップを実行す
るうえで、CPU402はデータ・オブジェクトまたは
プログラム命令などの情報を別のネットワークからネッ
トワーク・インターフェース424を通じて受信する
か、または情報をネットワーク・インターフェース42
4を通じて別のネットワークへ送信し得る。CPUで実
行する複数の命令のシーケンスに代表される情報は、搬
送波に組み込まれたコンピュータ・データ信号などの形
態で別のネットワークに対して送受信可能である。イン
ターフェース・カードまたはこれに類似するデバイス
と、CPU402によって実行される適切なソフトウェ
アとは、コンピュータ・システム400を外部ネットワ
ークへ接続し、かつデータを標準プロトコルに基づいて
転送するために使用できる。即ち、本発明の方法はCP
U402上で単独で実行し得る。その一方、処理の一部
を共有する遠隔CPUと協動することにより、本発明の
方法をインターネット、イントラネットワーク若しくは
ローカル・エリア・ネットワーク等のネットワークを通
じて実行し得る。別の大容量記憶装置(図示略)をネッ
トワーク・インターフェース424を通じてCPU40
2へ接続し得る。
【0038】マイクロホン、タッチ・ディスプレイ、ト
ランスデューサ・カード・リーダー、テープ・リーダ
ー、音声認識装置、手書き文字認識装置、バイオメトリ
クス・リーダー、カメラ、ポータブル大容量記憶装置及
び他のコンピュータ等の装置に対するCPU402によ
るデータの送受信を可能にする汎用インターフェース及
びカスタム・インターフェースを補助入出力装置インタ
ーフェース426は表す。
【0039】キーボード436またはポインタ・デバイ
ス438からの入力を受信し、さらにはデコードしたシ
ンボルをキーボード436またはポインタ・デバイス4
38からCPU402へ送信するために、キーボード・
コントローラ432がローカル・バス434を通じてC
PU402へ接続されている。ポインタ・デバイスはマ
ウス、スタイラス、トラック・ボールまたはタブレット
であり得る。そして、ポインタ・デバイスはグラフィカ
ル・ユーザー・インターフェースとのインターフェース
に効果的である。
【0040】更に、本発明の実施形態は様々なコンピュ
ータ実行オペレーションを実施するためのプログラム・
コードを含むコンピュータ読み取り可能な媒体を有する
コンピュータ記憶装置に関する。コンピュータ読み取り
可能な媒体は、コンピュータ・システムによる後からの
読み取りが可能なデータを格納し得る任意のデータ記憶
装置である。媒体及びプログラム・コードは本発明の目
的のために特別に設計され、かつ構築されたものである
か、またはコンピュータ・ソフトウェア技術分野の当業
者によく知られたものであり得る。コンピュータ読み取
り可能な媒体の例としては、ハード・ディスク、フロッ
ピー・ディスク及び磁気テープなどの磁気媒体と、CD
−ROMディスクなどの光媒体と、光フロッピー・ディ
スクなどの磁気光媒体と、特定用途向け集積回路(AS
IC)、プログラム可能論理回路(PLD)、ROMデ
バイス及びRAMデバイスなどの特別に構成されたハー
ドウェア・デバイスとを含めた前記の全ての媒体が挙げ
られる(但し、これらに限定されない)。コンピュータ
読み取り可能な媒体は搬送波に組み込まれたデータ信号
として、接続されたコンピュータ・システムのネットワ
ーク上に分散させ得る。従って、コンピュータ読み取り
可能コードは分散した形態で格納及び実行できる。プロ
グラム・コードの例としては、コンパイラなどによって
形成されたマシン・コード、またはインタプリタを使用
して実行できる高レベル・コードを含むファイルが挙げ
られる。
【0041】前述のハードウェア・エレメント及びソフ
トウェア・エレメントが標準的なデザイン及び構成を有
することは、当業者によって認識されるであろう。本発
明に適した他のコンピュータ・システムは別のサブシス
テムまたは更に少ない数のサブシステムを含み得る。更
に、メモリ・バス408、ペリフェラル・バス414及
びローカル・バス434は複数のサブシステムをリンク
するために使用する任意の相互接続方式の実例である。
例えば、ローカル・バスはCPUを固定大容量記憶装置
416及びディスプレイ・アダプタ420へ接続するた
めに使用可能である。図4に示すコンピュータ・システ
ムは本発明に適したコンピュータ・システムの例であ
る。サブシステムの別のコンフィギュレーションを有す
る他のコンピュータ・アーキテクチャを使用し得る。
【0042】以上、理解を容易にする目的で、本発明を
ある程度詳しく説明したが、特定の変更及び修正を本発
明の請求の範囲内で実施しても良い。例えば、入力待ち
テーブルは、別のプロセス識別子コラムを有することに
よって、複数のテーブル内に、スレッドに関する情報を
含み得る。別の例では、入力待ちテーブルは、システム
の必要に応じて更に多い数または更に少ない数のコラム
を有し得る。更に、本発明のプロセス及び装置の両方を
実現する他の方法があることを認識する必要がある。従
って、本実施形態は例示目的であって、限定目的ではな
い。更に、本発明は本明細書に開示する詳細部分に限定
されることなく、請求の範囲及びそれに等価な範囲内で
変更し得る。
【図面の簡単な説明】
【図1】本発明の1つの実施形態に基づくメッセージ・
アクセス・コンフィギュレーションの各種コンポーネン
トを示すブロック図。
【図2】本発明の1つの実施形態に基づくプロセスに関
連する入力待ちテーブルを示す図。
【図3】受信した入力イベントに応じて接続スレッドを
実行する本発明の1つの実施形態に基づく方法を示すフ
ローチャート。
【図4】本発明の実施形態の実現に適した一般的なコン
ピュータ・システムのブロック図。
フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 ウイリアム・ジェイ.・イーガー アメリカ合衆国 カリフォルニア州94025 メンロ・パーク,バークレー・アベニュ ー,620

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 複数のアクティブ接続スレッドを有する
    マルチスレッド・プロセスへの入力イベントを処理する
    方法であって、 前記複数のアクティブ接続スレッドのうちの選択された
    1つの実行を招来する入力イベントを受信したことを、
    前記マルチスレッド・プロセスへ警告する工程と、 前記マルチスレッド・プロセスに含まれるポーリング・
    スレッドをイネーブルする工程と、 前記ポーリング・スレッド及び関連するスレッド固有デ
    ータを使用することにより、入力イベントの送信先であ
    るマルチスレッド・プロセス内のアクティブ接続スレッ
    ドを決定する工程と、 前記選択されたアクティブ接続スレッドによる前記入力
    イベントの処理をトリガする工程とを含む方法。
  2. 【請求項2】 前記ポーリング・スレッドをイネーブル
    する工程は、エクセキューション・イネーブラをポーリ
    ング・スレッドへ割り当て、前記エクセキューション・
    イネーブラを実行する工程を含む請求項1に記載の方
    法。
  3. 【請求項3】 前記エクセキューション・イネーブラは
    ライト・ウェイト・プロセスである請求項2に記載の方
    法。
  4. 【請求項4】 前記アクティブ接続スレッドを決定する
    工程は、前記プロセスが維持するスレッドのリストをチ
    ェックする工程を含み、前記各スレッドはファイル・デ
    ィスクリプタによる識別が可能であり、前記スレッドの
    リストはファイル・ディスクリプタ、スレッド識別子、
    スレッド待ち変数及びエラー・リターン・コードを前記
    各スレッドに対して有する請求項1ないし3のいずれか
    に記載の方法。
  5. 【請求項5】 前記スレッド待ち変数に関連づけられた
    スレッドへ送信された入力イベントが存在するときに
    は、前記スレッド待ち変数の状態を変化させる工程をさ
    らに含む請求項1ないし4のいずれかに記載の方法。
  6. 【請求項6】 前記リスト内のアクティブ接続スレッド
    へ加わる変更を監視するために、条件付き待ちスレッド
    をイネーブルする工程をさらに含む請求項1ないし5の
    いずれかに記載の方法。
  7. 【請求項7】 プロセス内のスレッドへ送信されたイベ
    ントを前記プロセスが受信した際、前記スレッドを起動
    する方法であって、 複数のスレッド及び関連するスレッド固有データを有す
    る前記プロセス内の1つのスレッドの実行を招来する入
    力イベントを受信したことを前記プロセスへ警告する工
    程と、 前記プロセスに含まれるポーリング・スレッドをイネー
    ブルする工程と、 前記ポーリング・スレッド及び関連するスレッド固有デ
    ータを使用することにより、イベントの送信先であるプ
    ロセス内のスレッドを決定する工程と、 前記複数のスレッドのうち、前記イベントを処理するイ
    ベントを有する各スレッドをトリガする工程とを含む方
    法。
  8. 【請求項8】 複数のアクティブ接続スレッドを有する
    マルチスレッド・プロセスへの入力イベントを処理する
    方法であって、 前記複数のアクティブ接続スレッドのうちの選択された
    1つへ送信された入力イベントを受信する工程と、 前記複数のアクティブ接続スレッドに関連付けられたポ
    ーリング・スレッドを使用して、前記複数のアクティブ
    接続スレッドのうちの前記入力イベントの送信先である
    アクティブ接続スレッドを決定する工程と、 前記選択されたアクティブ接続スレッドによる入力イベ
    ントの処理をトリガし、これによって、前記選択された
    アクティブ接続スレッドへライト・ウェイト・プロセス
    を割り当てて、前記選択されたアクティブ接続スレッド
    の実行を促進する工程と、を含み、 前記選択されたアクティブ接続スレッドへ送信された入
    力イベントの検出を促進するために前記各アクティブ接
    続スレッドが専用のライト・ウェイト・プロセスを必要
    とせず、これによりマルチスレッド・プロセス内のライ
    ト・ウェイト・プロセスの消費を低減する方法。
  9. 【請求項9】 前記選択されたアクティブ接続スレッド
    の実行を保証するために、入力イベントを有する前記複
    数のアクティブ接続スレッドへ加わる変更を監視するよ
    うに条件付き待ちスレッドを実行する工程をさらに含む
    請求項8に記載の方法。
  10. 【請求項10】 マルチスレッド・プロセスを有するコ
    ンピュータ・システムであって、前記マルチスレッド・
    プロセス内に含まれる特定のスレッドへ送信されたユー
    ザーからの入力イベントを前記マルチスレッド・プロセ
    スが受信可能であるコンピュータ・システムにおいて、 前記マルチスレッド・プロセス内の選択されたアクティ
    ブ接続スレッドへ送信された入力イベントを検出し、か
    つ前記入力イベントを前記選択されたスレッドへルーテ
    ィングする入力ポーリング・スレッドであって、入力イ
    ベントを検出するために前記入力ポーリング・スレッド
    のみがライト・ウェイト・プロセスを必要とし、これに
    より入力イベントの検出に使用されるアクティブ接続ス
    レッドによるライト・ウェイト・プロセスの消費を低減
    するようにした入力ポーリング・スレッドと、 前記プロセスに関連付けられた入力待ちテーブルであっ
    て、入力イベントを実行しているアクティブ接続スレッ
    ドを示すアクティブ接続スレッドの情報を監視するとと
    もに格納するように構成された入力待ちテーブルと、を
    有し、 前記入力イベントの送信先であるアクティブ接続スレッ
    ドを決定するために前記入力ポーリング・スレッドが前
    記入力待ちテーブルをポーリングし、これにより前記プ
    ロセス内の前記アクティブ接続スレッドが入力イベント
    を個々に監視する必要性を低減し、これにより前記コン
    ピュータ・システム内で実行されるライト・ウェイト・
    プロセスの数を低減するコンピュータ・システム。
  11. 【請求項11】 状態変化を生じた選択されたアクティ
    ブ接続スレッドを決定するために前記入力待ちテーブル
    を監視する条件付き待ちスレッドをさらに有し、これに
    よって、前記選択されたアクティブ接続スレッドへのラ
    イト・ウェイト・プロセスの割り当てを保証する請求項
    10に記載のコンピュータ・システム。
  12. 【請求項12】 マルチスレッド・プロセスを有するコ
    ンピュータ・システムであって、前記マルチスレッド・
    プロセスに含まれる特定のスレッドへ送信されたユーザ
    ーからの入力イベントを前記マルチスレッド・プロセス
    が受信可能であるコンピュータ・システムにおいて、 前記マルチスレッド・プロセス内の選択されたアクティ
    ブ接続スレッドへ送信された入力イベントを検出すると
    ともに、前記入力イベントを前記選択されたスレッドに
    ルーティングする手段であって、入力イベントを検出す
    るために前記入力ポーリング・スレッドのみがライト・
    ウェイト・プロセスを必要とし、これにより入力イベン
    トの検出に使用されるアクティブ接続スレッドによるラ
    イト・ウェイト・プロセスの消費を低減するようにした
    手段と、 入力イベントを実行しているアクティブ接続スレッドを
    示すアクティブ接続スレッドの情報を監視するとともに
    格納する手段と、を有し、 前記入力イベントの送信先であるアクティブ接続スレッ
    ドを決定するために入力ポーリング・スレッドが入力待
    ちテーブルをポーリングし、これにより前記プロセス内
    のアクティブ接続スレッドが入力イベントを個々に監視
    する必要性を低減し、これにより前記コンピュータ・シ
    ステム内で実行されるライト・ウェイト・プロセスの数
    を低減するコンピュータ・システム。
  13. 【請求項13】 状態変化を生じた選択されたアクティ
    ブ接続スレッドを決定するために前記入力待ちテーブル
    を監視する手段をさらに有し、これによって、前記選択
    されたアクティブ接続スレッドへのライト・ウェイト・
    プロセスの割り当てを保証する請求項12に記載のコン
    ピュータ・システム。
  14. 【請求項14】 複数のアクティブ接続スレッドを有す
    るマルチスレッド・プロセスへの入力イベントを処理す
    るためのプログラミング命令を含むコンピュータ読み取
    り可能な媒体であって、コンピュータ・プログラム・コ
    ード・デバイスを有し、前記コンピュータ・プログラム
    ・コード・デバイスは、前記複数のアクティブ接続スレ
    ッドのうちの選択された1つの実行を招来する入力イベ
    ントの受信を前記プロセスへ警告する工程と、 前記プロセスに含まれるポーリング・スレッドをイネー
    ブルする工程と、 前記ポーリング・スレッド及び関連するスレッド固有デ
    ータを使用することにより、前記プロセス内の複数のア
    クティブ接続スレッドのうちのイベントを受信するアク
    ティブ接続スレッドを決定する工程と、 前記選択されたアクティブ接続スレッドによる入力イベ
    ントの処理をトリガする工程と、をコンピュータに実行
    させるように構成されているコンピュータ読み取り可能
    な媒体。
  15. 【請求項15】 前記スレッド待ち変数に関連付けられ
    たスレッドへ送信された入力イベントが存在するとき
    に、前記スレッド待ち変数の状態を変化させるように構
    成されたコンピュータ・プログラム・コード・デバイス
    をさらに有する請求項14に記載のコンピュータ読み取
    り可能な媒体。
  16. 【請求項16】 前記リスト内のアクティブ接続スレッ
    ドへ加わる変更を監視するために、条件付き待ちスレッ
    ドをイネーブルするように構成されたコンピュータ・プ
    ログラム・コード・デバイスをさらに有する請求項14
    または15に記載のコンピュータ読み取り可能な媒体。
  17. 【請求項17】 前記ポーリング・スレッドをコンピュ
    ータにイネーブルさせるように構成されたコンピュータ
    ・プログラム・コード・デバイスは、エクセキューショ
    ン・イネーブラをポーリング・スレッドへ割り当て、前
    記エクセキューション・イネーブラを実行する工程をさ
    らに含む前記ポーリング・スレッドをイネーブルする工
    程をコンピュータに実行させるように構成されたコンピ
    ュータ・プログラム・コード・デバイスをさらに有する
    請求項14ないし16のいずれかに記載のコンピュータ
    読み取り可能な媒体。
  18. 【請求項18】 前記プロセス内の複数のアクティブ接
    続スレッドのうちでイベントを受信するアクティブ接続
    スレッドをコンピュータに決定させるように構成された
    コンピュータ・プログラム・コード・デバイスは、前記
    プロセスが維持するスレッドのリストをチェックする工
    程をコンピュータに実行させるように構成されたコンピ
    ュータ・プログラム・コード・デバイスをさらに有し、
    前記各スレッドはファイル・ディスクリプタによる識別
    が可能であり、前記スレッドのリストはファイル・ディ
    スクリプタ、スレッド識別子、スレッド待ち変数及びエ
    ラー・リターン・コードを前記各スレッドに対して有す
    る請求項14ないし17のいずれかに記載のコンピュー
    タ読み取り可能な媒体。
  19. 【請求項19】 マルチスレッド・プロセス内の特定の
    アクティブ接続スレッドへ送信された複数のユーザーか
    らの入力イベントを受信するように構成されたコンピュ
    ータ・システムであって、 前記複数のアクティブ接続スレッドのうちの選択された
    1つの実行を招来する入力イベントを受信したことを、
    前記マルチスレッド・プロセスへ警告する手段と、 前記プロセスに含まれるポーリング・スレッドをイネー
    ブルする手段と、 前記ポーリング・スレッド及び関連するスレッド固有デ
    ータを使用することにより、入力イベントの送信先であ
    る前記プロセス内のアクティブ接続スレッドを決定する
    手段と、 前記選択されたアクティブ接続スレッドによる前記入力
    イベントの処理をトリガする手段と、を有するコンピュ
    ータ・システム。
  20. 【請求項20】 プロセス内のスレッドへ送信されたイ
    ベントを前記プロセスが受信したときに、前記スレッド
    を起動するためのプログラミング命令を含むコンピュー
    タ読み取り可能な媒体であって、コンピュータ・プログ
    ラム・コード・デバイスを有し、前記コンピュータ・プ
    ログラム・コード・デバイスは、 複数のスレッド及び関連するスレッド固有データを有す
    る前記プロセス内のスレッドの実行を招来する入力イベ
    ントを受信したことを、前記プロセスへ警告する工程
    と、 前記プロセスに含まれるポーリング・スレッドをイネー
    ブルする工程と、 前記ポーリング・スレッド及び関連するスレッド固有デ
    ータを使用することにより、イベントの送信先である前
    記プロセス内のスレッドを決定する工程と、 前記複数のスレッドのうちで、前記イベントを処理する
    ためのイベントを有する各スレッドをトリガする工程と
    をコンピュータに実行させるべく構成されているコンピ
    ュータ読み取り可能な媒体。
  21. 【請求項21】 複数のアクティブ接続スレッドを有す
    るマルチスレッド・プロセスへの入力イベントを処理す
    るためのプログラミング命令を含むコンピュータ読み取
    り可能な媒体であって、コンピュータ・プログラム・コ
    ード・デバイスを有し、前記コンピュータ・プログラム
    ・コード・デバイスは、 前記複数のアクティブ接続スレッドのうちの選択された
    1つへ送信された入力イベントを受信する工程と、 前記複数のアクティブ接続スレッドに関連するポーリン
    グ・スレッドを使用して、前記複数のアクティブ接続ス
    レッドのうちの前記入力イベントの送信先であるアクテ
    ィブ接続スレッドを決定する工程と、 前記選択されたアクティブ接続スレッドによる前記入力
    イベントの処理をトリガし、これによって、ライト・ウ
    ェイト・プロセスを前記選択されたアクティブ接続スレ
    ッドに割り当てて前記選択されたアクティブ接続スレッ
    ドの実行を促進する工程と、をコンピュータに実行させ
    るように構成されており、 前記選択されたアクティブ接続スレッドへ送信された前
    記入力イベントの検出を促進するために各アクティブ接
    続スレッドが専用のライト・ウェイト・プロセスを必要
    とせず、これにより前記マルチスレッド・プロセス内の
    ライト・ウェイト・プロセスの消費を低減するコンピュ
    ータ読み取り可能な媒体。
  22. 【請求項22】 前記選択されたアクティブ接続スレッ
    ドの実行を保証するために、入力イベントを有する前記
    複数のアクティブ接続スレッドに加わる変更を監視する
    条件付き待ちスレッドを実行するように構成されたコン
    ピュータ・プログラム・コード・デバイスをさらに有す
    る請求項21に記載のコンピュータ読み取り可能な媒
    体。
  23. 【請求項23】 プロセス内の特定のアクティブ接続ス
    レッドへ送信された複数のユーザーからの入力イベント
    を受信するように構成されたコンピュータ・システムで
    あって、 前記複数のアクティブ接続スレッドのうちの選択された
    1つへ送信された入力イベントを受信する手段と、 前記複数のアクティブ接続スレッドに関連付けられたポ
    ーリング・スレッドを使用して、前記複数のアクティブ
    接続スレッドのうちで前記入力イベントの送信先である
    アクティブ接続スレッドを決定する手段と、 前記選択されたアクティブ接続スレッドによる前記入力
    イベントの処理をトリガし、これによって、ライト・ウ
    ェイト・プロセスを前記選択されたアクティブ接続スレ
    ッドへ割り当てて前記選択されたアクティブ接続スレッ
    ドの実行を促進する手段と、を有し、 前記選択されたアクティブ接続スレッドへ送信された入
    力イベントの検出を促進するために各アクティブ接続ス
    レッドが専用のライト・ウェイト・プロセスを必要とせ
    ず、これにより前記マルチスレッド・プロセス内のライ
    ト・ウェイト・プロセスの消費を低減するコンピュータ
    ・システム。
  24. 【請求項24】 前記選択されたアクティブ接続スレッ
    ドの実行を保証するために、入力イベントを有する前記
    複数のアクティブ接続スレッドへ加わる変更を監視する
    条件付き待ちスレッドを実行する手段をさらに有する請
    求項23に記載のコンピュータ・システム。
  25. 【請求項25】 プロセス内の特定のアクティブ接続ス
    レッドへ送信された複数のユーザーからの入力イベント
    を受信するように構成されたコンピュータ・システムで
    あって、 複数のスレッド及び関連するスレッド固有データを有す
    る前記プロセス内のスレッドの実行を招来する入力イベ
    ントを受信したことを、前記プロセスへ警告する手段
    と、 前記プロセスに含まれるポーリング・スレッドをイネー
    ブルする手段と、 前記ポーリング・スレッド及び関連するスレッド固有デ
    ータを使用して、イベントの送信先である前記プロセス
    内のスレッドを決定する手段と、 前記複数のスレッドのうち、前記イベントを処理するイ
    ベントを有する各スレッドによるトリガする手段とを有
    するコンピュータ・システム。
JP11119434A 1998-04-27 1999-04-27 マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置 Pending JP2000029724A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/067,546 US6457064B1 (en) 1998-04-27 1998-04-27 Method and apparatus for detecting input directed to a thread in a multi-threaded process
US09/067546 1998-04-27

Publications (1)

Publication Number Publication Date
JP2000029724A true JP2000029724A (ja) 2000-01-28

Family

ID=22076726

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11119434A Pending JP2000029724A (ja) 1998-04-27 1999-04-27 マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置

Country Status (3)

Country Link
US (1) US6457064B1 (ja)
EP (1) EP0953906A3 (ja)
JP (1) JP2000029724A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009506467A (ja) * 2004-02-18 2009-02-12 サン・マイクロシステムズ・インコーポレーテッド 仮想マシンにおける並行タスクのためのイベント処理

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735770B1 (en) * 1998-04-27 2004-05-11 Sun Microsystems, Inc. Method and apparatus for high performance access to data in a message store
JP3250729B2 (ja) * 1999-01-22 2002-01-28 日本電気株式会社 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体
US6718370B1 (en) * 2000-03-31 2004-04-06 Intel Corporation Completion queue management mechanism and method for checking on multiple completion queues and processing completion events
US6934950B1 (en) * 2000-06-06 2005-08-23 International Business Machines Corporation Thread dispatcher for multi-threaded communication library
US6735687B1 (en) * 2000-06-15 2004-05-11 Hewlett-Packard Development Company, L.P. Multithreaded microprocessor with asymmetrical central processing units
US7051330B1 (en) * 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US20040205716A1 (en) * 2003-04-14 2004-10-14 Abdel-Rahman Hassan Elhag System and method for adapting non-SCCS files to SCCS file repository
US7533387B1 (en) * 2003-09-10 2009-05-12 Nextaxiom Technology, Inc. Guaranteed invocation/consumption of nested, composite software services
US7584454B1 (en) 2003-09-10 2009-09-01 Nextaxiom Technology, Inc. Semantic-based transactional support and recovery for nested composite software services
US7483901B1 (en) 2003-09-10 2009-01-27 Nextaxiom Technology, Inc. System and method for data transfer between two or more connected software services
US7581205B1 (en) 2003-09-30 2009-08-25 Nextaxiom Technology, Inc. System and method of implementing a customizable software platform
US8225282B1 (en) 2003-11-25 2012-07-17 Nextaxiom Technology, Inc. Semantic-based, service-oriented system and method of developing, programming and managing software modules and software solutions
US7529886B2 (en) * 2004-11-03 2009-05-05 International Business Machines Corporation Method, system and storage medium for lockless InfiniBand™ poll for I/O completion
US9178785B1 (en) 2008-01-24 2015-11-03 NextAxiom Technology, Inc Accounting for usage and usage-based pricing of runtime engine
US20100205225A1 (en) * 2009-02-06 2010-08-12 Siemens Aktiegesellschaft Method and Apparatus for Transforming a Process
US8527866B2 (en) 2010-04-30 2013-09-03 Microsoft Corporation Multi-threaded sort of data items in spreadsheet tables
US20110276868A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Multi-Threaded Adjustment of Column Widths or Row Heights
US20130024875A1 (en) * 2011-07-22 2013-01-24 Yilin Wang Event System And Methods For Using Same
CN102681845A (zh) * 2012-04-24 2012-09-19 深圳创维数字技术股份有限公司 一种输入事件管理方法及装置
US10564865B2 (en) 2016-03-22 2020-02-18 Seagate Technology Llc Lockless parity management in a distributed data storage system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5257372A (en) * 1990-12-19 1993-10-26 Cray Research, Inc. Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system
US5305455A (en) 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
JPH07104791B2 (ja) 1991-12-18 1995-11-13 インターナショナル・ビジネス・マシーンズ・コーポレイション タスク状態構築方法
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
DE69429204T2 (de) * 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
US5991790A (en) 1996-07-01 1999-11-23 Sun Microsystems, Inc. Generation and delivery of signals in a two-level, multithreaded system
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009506467A (ja) * 2004-02-18 2009-02-12 サン・マイクロシステムズ・インコーポレーテッド 仮想マシンにおける並行タスクのためのイベント処理

Also Published As

Publication number Publication date
EP0953906A3 (en) 2002-03-27
US6457064B1 (en) 2002-09-24
EP0953906A2 (en) 1999-11-03

Similar Documents

Publication Publication Date Title
JP2000029724A (ja) マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置
US6223207B1 (en) Input/output completion port queue data structures and methods for using same
US7316017B1 (en) System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
JP3882931B2 (ja) 仮想計算機環境におけるディスパッチ機能の管理
US5875329A (en) Intelligent batching of distributed messages
JP2005092875A (ja) スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法
US20090165003A1 (en) System and method for allocating communications to processors and rescheduling processes in a multiprocessor system
US8713582B2 (en) Providing policy-based operating system services in an operating system on a computing system
US20090055831A1 (en) Allocating Network Adapter Resources Among Logical Partitions
JP2000242512A (ja) 複数のオペレーティングシステムを実行する計算機
JPH08212086A (ja) オフィスマシンのオペレーティングシステム及び方法
JPH06309252A (ja) 相互接続インタフェース
US7937499B1 (en) Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card
JP2000330806A (ja) 計算機システム
JPH03126158A (ja) スケジユーリング方法及び装置
JP2009251708A (ja) I/oノード制御方式及び方法
US9378047B1 (en) Efficient communication of interrupts from kernel space to user space using event queues
KR20060041928A (ko) 프린트 시스템 및 방법
CN107273141A (zh) 嵌入式实时操作系统
US20050097226A1 (en) Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
US7844782B2 (en) Data processing system with memory access
US7765548B2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
US8141077B2 (en) System, method and medium for providing asynchronous input and output with less system calls to and from an operating system