JPH113232A - 2レベル・マルチスレッド・システムにおける信号の生成および配信 - Google Patents

2レベル・マルチスレッド・システムにおける信号の生成および配信

Info

Publication number
JPH113232A
JPH113232A JP9187280A JP18728097A JPH113232A JP H113232 A JPH113232 A JP H113232A JP 9187280 A JP9187280 A JP 9187280A JP 18728097 A JP18728097 A JP 18728097A JP H113232 A JPH113232 A JP H113232A
Authority
JP
Japan
Prior art keywords
module
signal
asynchronous
asynchronous signal
signals
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
JP9187280A
Other languages
English (en)
Inventor
Devang K Shah
デヴァン・ケイ・シャ
John Zolnowsky
ジョン・ゾルノウスキー
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 JPH113232A publication Critical patent/JPH113232A/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

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)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Selective Calling Equipment (AREA)

Abstract

(57)【要約】 【課題】 信号処理、マスキング、情報、および待ち行
列化のセマンティックを保存しながら、非同期信号を配
信するための効果的かつ効率のよいシステムを提供す
る。 【解決手段】 信号の生成を待つ第1モジュールが呼び
出される。信号が生成されると、第1モジュールは信号
の生成を通知する。続いて、第1モジュールは信号を第
2モジュールに向け直し、第2モジュールへの信号配信
を引き起こす。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチスレッド環
境における信号の実施に関し、詳細にはユーザ・レベル
およびカーネル・レベル両方のスレッドをサポートする
システムにおける、非同期信号の適切な配信に関する。
【0002】
【従来の技術】スレッドはプロセス内の制御のシーケン
スであり、それに関連する文脈情報をほとんどもたな
い。したがって、スレッドが有する記憶要件は最小限で
ある。スレッドは2つのクラス、すなわちユーザ・レベ
ルでのみ可視のユーザ・スレッドと、カーネル・レベル
でのみ可視のカーネル・スレッドとに分類することがで
きる。これらのクラスのハイブリッドが、ユーザ・レベ
ルでも可視なカーネル可視エンティティである、軽量プ
ロセス(LWP)である。最後に、ユーザおよびカーネ
ル両方に対して可視であり、フルコンプレメント文脈情
報を伴うプロセスがある。プロセスは一般に、独立型実
行を行うことができる。
【0003】従来の単一スレッド・プロセスはプログラ
ム実行中に単一の制御順序に従う。しかし、マルチプロ
セッシング(MP)・アーキテクチャがより一般的にな
るにつれて、複数のスレッドを使用することは重要なプ
ログラミング・パラダイムになった。マルチスレッド
(MT)プロセスにはいくつかのプログラム制御シーケ
ンスがあり、したがって、いくつかの独立した動作を行
うことができる。MPシステムでは、これらの動作が同
時に起こることができ、個々のスレッドが別々のプロセ
ッサ上で実行される。この並列性によって、MTアプリ
ケーションの性能は向上する。しかしMTはまた、計算
および入出力トランザクションなど、オペレーションの
重複を改善することによって、単一プロセッサにも性能
上の利益を与える。MTにより、さらに一様な計算負
荷、さらに高い処理能力、オーバヘッドの削減、および
簡略なプログラム構造など、その他のいくつかの利益も
また提供される。
【0004】MTを実施するための方法は多数あるが、
それらの技術は主に3つの一般的なカテゴリに分類され
る。これらのカテゴリは、1)多数対1、2)1対1、
および3)多数対多数という、カーネル・レベル・スレ
ッドの所与の数と関連づけられたユーザ・レベル・スレ
ッドの数に基づいている。
【0005】多数対1モデルの実施により、アプリケー
ションは、同時に実行できる多数のスレッドを生成する
ことができる。このモデルはまた、「ユーザ・レベル・
スレッド」モデルとも呼ばれる。多数対1の実施では、
全てのスレッドの動作はユーザ・スペースに限定され、
全てのスレッドの管理発行を処理するユーザ・スレッド
・ライブラリによって完全にサポートされる。このユー
ザ・スレッド・ライブラリは、実行するスレッドの選択
権はあるが、任意の所与の時間にスレッドをただ1つだ
け実行するようにプロセスを制限する。その結果、この
モデルが与える並列性は低く、MPアーキテクチャが与
える利点を完全には活用できない。
【0006】1対1モデルでは、各ユーザ・レベル・ス
レッドはカーネルにアクセスできる。この場合の主な制
約は、スレッドのカーネル可視属性のために、デベロッ
パが注意を払わなければならない点である。もう1つの
制約は、そのようなスレッドの記憶要件のために、デベ
ロッパがこれらのスレッドの使用を節約しなければなら
ない点である。したがって、1対1モデルの多くの実施
は、生成される可能性があるスレッド数を制限する。こ
のタイプのスレッドは、前述のLWPと同様である。
【0007】多数対多数モデルでは、以上の制限のいく
つかが回避される。「2レベル」モデルとも呼ばれるこ
のモデルは、プログラミングの労力を最小限にする。個
々のスレッドの計算「コスト」および「重み」もまた軽
減される。多数対多数モデルは、1対1モデルと同様の
カーネル・アクセスを提供しながら、多数対1モデルと
同数のスレッドをサポートすることができる。LWPの
サポートに加えて、このモデルはまた、ユーザ・レベル
・スレッド・ライブラリも提供する。LWPは、1対1
モデルと同様に、ユーザおよびカーネル両方に対して可
視である。ユーザ・スレッドは、多数対1モデルと同様
に、ユーザに対してのみ可視である。この場合、ユーザ
・スレッドは、実行中のLWPと関連づけることができ
る。したがって、カーネルは、現在活動状態のLWPの
みを管理すればよい。多数対多数の実施は、アプリケー
ションが使用できるスレッド数の制限を有効に取り除き
ながら、ユーザ・レベルでのプログラミングを容易にす
る。
【0008】2レベルMTアーキテクチャの一例として
は、SunsoftTMのSolarisTMOSがある
(SunTM、Sun MicrosystemsTM、S
olaris、およびSunsoftは、米国およびそ
の他の国における商標または登録商標)。Solari
sの2レベル・アーキテクチャは、LWPを提供するこ
とによって、実施からプログラミング・インタフェース
を分離する。カーネルは個々のLWPを別個にディスパ
ッチするので、個々のLWPは、独立したシステム・コ
ールを実行し、独立したページ・フォルトを受け、複数
のプロセッサ上で並行して動作することができる。LW
Pによって、カーネルとの相互作用を考慮する必要な
く、スレッドを使用することができる。ユーザ・レベル
では、スレッド・ライブラリは、カーネルのスケジュー
ラから分離したスケジューラを含む。したがって、スレ
ッド・ライブラリは、動作可能なスレッドのLWP上へ
の多重化およびスケジューリングを管理する。ユーザ・
スレッドは、LWPによってカーネル・レベルでサポー
トされる。
【0009】Solarisは、ユーザ・レベル・スレ
ッドをLWPに結合させる、またはこのスレッドを未結
合のままにするオプションをアプリケーション・プログ
ラマに提供する。ユーザ・レベル・スレッドをLWPに
結合させることによって、これら2つの間の接続が確立
される。スレッド結合は、即時応答を必要とするアプリ
ケーションなど、それ自体の同時実行性(すなわち並列
実行)を精密に制御し続ける必要があるアプリケーショ
ンには有効である。未結合のユーザ・レベル・スレッド
は、それらの同時実行性の制御をスレッド・ライブラリ
に委ね、スレッド・ライブラリは、LWPのプールを自
動的に拡大および縮小させ、アプリケーションの未結合
スレッドの要求を満たす。LWPはまた、いくつかのユ
ーザ・レベル・スレッドによって共有されることもあ
る。
【0010】上記の実施の主な特徴は、スレッドの属性
もまたカーネルに対して不可視であることも含めて、ユ
ーザ・スレッドがカーネルに対して不可視であることで
ある。これにより、ユーザ・スレッドに関連する管理用
タスクは、カーネルからユーザ・スレッド・ライブラリ
およびユーザ・プロセスに下ろされる。しかし、スレッ
ドの信号マスクなどの属性もまた、カーネルに対して不
可視である。信号とは、システム事象の実行可能なエン
ティティを通知するための、カーネル内の機構のことで
ある。これらの事象は、プロセス間通信、サービス要求
に対するシステム応答、エラー条件、およびこのような
その他のオカレンスの形態をとることができる。この文
脈では、マスクとは、スレッドなどの実行可能なエンテ
ィティが、それによって1つまたは複数の信号を一時的
に無視することができる機構のことである。通常は信号
をマスクすることができ、マスクされた信号がカーネル
によって保留中として保持されることがある。これによ
って、プログラムは、クリティカル・プログラム・セク
ションの実行中に保留中として一時的に保持される特定
の信号を有し、これらの信号による割り込みを防止する
ことが可能になる。
【0011】この方式の実施における難題は、カーネル
をできる限り巻き込まないようにすることによって達成
される性能および資源の保全目標を保持しながら、信号
の配信およびスケジューリングなどの領域における正確
な(すなわち所期の)プログラム動作を引き出すことに
ある。このことは、非同期信号の配信の領域で特に重要
である。
【0012】これに関して生じる可能性があるいくつか
の問題は、例によって最もよく説明される。この例で
は、プロセス(P1)は2つのスレッド(T1およびT
2)及び1つのLWP(L1)を有する。T1は、L1
上でスケジュールされ、システム・コールで遮断される
(例えば、システムが要求にサービスするのを待つ)。
T1では、信号SIGがマスクされており、したがって
SIGには応答しない。T2はユーザ・レベルの待ち行
列で保留中であり、プロセス・ローカル同期変数(例え
ば条件変数)からの通知を待つ。T2では、信号SIG
はマスクされない。P1は、遮断するシステム・コール
からT1を取り出す責任を持つ、信号SIGにインスト
ールされた信号ハンドラ(例えば割り込みルーチン)を
有する。P1は、もう1つのプロセスからSIGが配信
されるのを待つ。SIGがP1に送信されると、P1
は、T2が覚醒し、信号ハンドラを実行し、その結果T
1を活動化すると予想する。
【0013】カーネルは、マスキング・セマンティッ
ク、情報配信、および信号の待ち行列化を確実に正確に
維持しながら、T1またはT2の信号マスクについての
明白な知識なしで、SIGを配信しなければならない。
さらに、信号マスキングは、本質的にユーザ・レベルの
動作のままであるものとし、したがって前述の性能の利
点を保持する。
【0014】
【発明が解決しようとする課題】この問題の1つの可能
な出現は、T1のマスクをL1に受け継がせる(L1に
「プッシュ・ダウンされる」)システムで見られる。こ
のシナリオではL1でSIGがマスクされているので、
信号ハンドラが実行されることがなく、かつT1が覚醒
されることがなく、その結果デッドロック状態になる。
【0015】この問題のもう1つの可能な出現は、SI
GがL1に配信される際に、カーネルがT1のシステム
・コールに偶然に割り込むことである。大域ハンドラ
は、この信号がT2に向け直されたこと、および実際に
はT1が信号ハンドラを実行しないことを確認するはず
であるが、T1への割り込みの副作用は予期しないもの
であり不可避である。このシナリオは、少なくとも1つ
の信号モデルの態様、すなわち信号マスキング・セマン
ティックを侵害する。このセマンティックは、スレッド
が信号をマスクし、システム・コールに遮断される場合
には、マスクされた信号がシステム・コールに割り込ま
ないことを必要とする。
【0016】上記の実施のもう1つの可能な明示は、病
的シナリオであり、その場合は、全てのアプリケーショ
ンLWPおよびそれらに関連づけられたスレッドは、特
定の信号をマスクする。しかし、この信号がマスクされ
ていない状態では、スレッドはユーザ・レベルの休止中
の待ち行列上で休止している。この信号を受信する利用
可能なスレッドが存在しないので、この信号はこのスレ
ッドに配信されない。したがって、信号は配信されない
ことになる。
【0017】実際の信号配信の影響もまた考慮するもの
とする。実際の信号配信は、1度だけ実行されるものと
する。さらに、実際の信号配信は、信号がマスク解除さ
れているスレッドのみに向けられるものとする。そうで
ない場合には、一般に信号の生成および配信を管理する
セマンティックが侵害される可能性がある。
【0018】したがって、2レベル・マルチスレッド環
境において、非同期信号の適当な配信を提供することが
望ましく、かつ重要である。さらに、これらの信号配信
は、望まない副作用を引き起こさない、又は信号化セマ
ンティックを侵害しないものとする。最後に、信号のデ
ッドロックおよび非配信は回避されるものとする。
【0019】
【課題を解決するための手段】本発明によって、2レベ
ル・マルチスレッド・プログラミング環境で生成された
信号の適切な配信のためのシステムを提供する。本発明
は、信号処理、マスキング、情報、および待ち行列化の
セマンティックを保存しながら、非同期信号を配信する
ための効果的かつ効率のよいシステムを提供する。した
がって、本発明の方法は、本信号モデルの全てのキー特
性を保持する。
【0020】一実施態様では、本発明の方法は、2レベ
ル・マルチスレッド・アーキテクチャで非同期信号をス
レッドに配信するための、コンピュータで実施する方法
を提供する。信号は、実行可能なエンティティに、ユー
ザ動作およびシステム事象を通知するためのカーネル内
の機構である。最初に、軽量プロセス(LWP)は、非
同期信号が生成されると、この信号の通知を受信するよ
うに指定されている。このLWPはaslwpと呼ばれ
る。aslwpはその後、いくつかの非同期信号の中の
任意の1つを受信するように構成される。次にaslw
pは、1つまたは複数の非同期信号の生成を待つ。as
lwpは、非同期信号が生成されるとその信号を認識す
る値を戻すルーチンを呼び出すことによって、これを行
う。続いて、aslwpは全ての信号を遮断するように
構成される。aslwpは、いくつかのスレッドの中の
少なくとも1つが非同期信号を受信することになるかど
うかを判別する。これらのスレッドの中の少なくとも1
つが信号を受信することになる場合は、aslwpはス
レッドの中の1つを選択する。続いて、aslwpはこ
の信号を選択したスレッドに向け直す。信号を受信する
ことになるスレッドが存在しない場合は、aslwpは
この信号に関する情報を記憶する。この保留中信号は、
後にスレッドがこれをマスク解除したときに処理され
る。
【0021】もう1つの実施態様では、本発明の方法
は、いくつかの非同期信号の中の任意の1つを受ける第
1モジュールを構成するステップと、生成された非同期
信号を識別する値を戻す第2モジュールを呼び出すステ
ップと、その他のいくつかのモジュールの中の少なくと
も1つが非同期信号を受けることになるかどうかを判別
するステップとを含む、非同期信号を配信するためのコ
ンピュータで実施する方法を提供する。これらのモジュ
ールの中の少なくとも1つが非同期信号を受けることに
ならない場合は、いくつかのモジュールから1つのモジ
ュールが選択され、非同期信号が選択されたモジュール
に向け直され、非同期信号が選択されたモジュールにに
配信される。そうでない場合は、非同期信号は記憶され
る。
【0022】本明細書の発明の性質および利点は、本明
細書の残りの部分および添付の図面を参照することによ
ってさらに理解することができる。
【0023】
【発明の実施の形態】図1は、本発明の実施に適したホ
スト・コンピュータ・システム10のブロック・ダイア
グラムである。ホスト・コンピュータ・システム10
は、1つまたは複数の中央処理装置14(1)〜14
(N)、システム・メモリ16(通常はRAM)、入出
力(I/O)制御装置18、表示アダプタ26を介した
表示画面24などの外部装置、シリアル・ポート28お
よび30、キーボード32、記憶インタフェース34、
フロッピィ・ディスク38を受けるように作動可能なフ
ロッピィ・ディスク・ドライブ36、CD−ROM42
を受けるように作動可能なCD−ROMプレイヤ40を
含むなどの主要サブシステムを相互接続するバス12を
有する。ホスト・コンピュータ・システム10は単一の
中央処理装置(例えば中央処理装置14(1))をサポ
ートする場合があり、これは単一プロセッサ・システム
と呼ばれる。あるいは、ホスト・コンピュータ・システ
ム10は複数の中央処理装置(例えば中央処理装置14
(1)〜14(N))をサポートする場合がある。この
ようなシステムはマルチプロセッサ・システムと呼ばれ
る。記憶インタフェース34は固定ディスク・ドライブ
44に接続することができる。固定ディスク・ドライブ
44は、ホスト・コンピュータ・システム10の一部で
ある場合と、または分離してその他のインタフェース・
システムを介してアクセスされる場合とがある。シリア
ル・ポート28を介して接続されたマウス46、シリア
ル・ポート30を介して接続されたネットワーク・イン
タフェース48など、その他の多くの装置を接続するこ
とができる。ネットワーク・インタフェース48は、電
話回線を介して遠隔サーバへの直接接続、またはPOP
(pointof presence)を介してインタ
ーネットへの直接接続を提供することができる。その他
の多くの装置またはサブシステム(図示せず)を、同様
の方法で接続することができる。
【0024】また、以下に論じるように、本発明を実施
する際に、図1に示す全ての装置が必要とされるとは限
らない。装置およびサブシステムは、図1に示すものと
は異なる方法で相互接続することができる。例えば、ホ
スト・コンピュータ・システム10は、単一プロセッサ
・システムである場合と、マルチプロセッサ・システム
である場合とがある。図1に示すようなコンピュータ・
システムの動作は、当技術分野では容易に理解されるも
のであり、本明細書では詳細には論じない。本発明を実
施するためのプログラムは、システム・メモリ16,固
定ディスク44,CD−ROM42,またはフロッピィ
・ディスク38などのコンピュータ読取り可能記憶媒体
に、作動可能に配置すなわち記憶される。
【0025】図2は、図1に示すシステムなどのコンピ
ュータ・システムで信号を処理する、現行方法のフロー
チャートである。信号は、ユーザ動作およびシステム事
象を実行可能なエンティティに通知するための、カーネ
ル内のメカニズムである。信号を生成するソースは、ユ
ーザ動作(例えば、ユーザがctrl−Cを打ち込む)
およびシステム事象(例えば、一般保護障害、浮動小数
点エラー、またはハードウェア割り込み)を含む。ステ
ップ200で、モジュールは非同期信号の生成を待つ。
モジュールとは、プロセス、スレッド、軽量プロセス、
ユーザ・プログラム、カーネル・プログラムまたはシェ
ル・スクリプトなど実行可能なエンティティのことであ
る。生成されると、信号はステップ210でモジュール
に配信される。何らかの理由(例えば、モジュールがシ
ステム資源を待つことを妨げられている)で信号が配信
されない場合は、信号は保留中のまま信号待ち行列に残
される。
【0026】簡略にするために、図2のフローチャート
には、単一の信号を処理する際に実行されるステップの
みを示す。通常は、1つのOSは前記のような信号のい
くつかを絶えず処理している。この絶え間ない信号の生
成により、適当なモジュールへの配信を保留中のままに
して、信号情報は記憶され、その後に信号は遅れて配信
される。ただし、様々な信号の様々な各所期モジュール
への配信は、生成と同じ順序で起こるとは限らない。例
えば、あるモジュールでは、特定の保留中信号がマスク
されていることがある。したがって、このことまたはそ
の他の影響によって、生成とは異なる順序で信号配信が
生じる可能性がある。したがって、図2のフローチャー
トに描写した明白な同時性は、個々の信号に対して実行
される処理を個別に見た場合に関してのみ正確である。
この制限は、以下のそれぞれの記述に当てはまる。
【0027】ただし、Solarisオペレーティング
・システムで使用されるマルチスレッド・システムなど
では、カーネルが、ユーザ・スレッド信号のマスクにア
クセスできないために問題が生じる。この文脈では、マ
スクとは、スレッドなどの実行可能なエンティティが、
それによって1つまたは複数の信号を一時的に無視する
ことができる機構のことである。これにより、そうでな
い場合には当該の信号を受信することがないユーザ・ス
レッドへの、適当な信号配信を保証する解決策が必要と
なる。
【0028】図3は、本発明の方法の一実施形態を示す
図である。本発明の方法では、信号の生成プロセスおよ
び配信プロセスは、4つのステップに分割される。本発
明の方法は、信号通知および信号向け直しという、2つ
の中間ステップを導入する。信号通知は、指定されたモ
ジュールに信号を実際に配信せず、指定されたLWPに
信号の生成を通知することにより、信号生成の拡張とし
て機能する。信号向け直しは、実際の配信の前に、信号
をどのLWPに配信すべきかを、指定されたLWPに示
すことにより、信号配信の拡張として機能する。この手
法により、カーネルはさらに信号配信に巻き込まれるこ
とになるが、1対1モデルで必要とされたレベルほどで
はない。
【0029】ステップ300で、aslwpは信号の生
成を待つ。aslwp(非同期軽量プロセス)は、全て
の非同期信号の通知を受信するために、ユーザ・スレッ
ド・ライブラリが生成したLWPである。続いてステッ
プ310で、カーネルはaslwpに非同期信号を通知
する。ステップ320で、aslwpは、この信号を、
この信号がマスクされていないスレッドを備えたLWP
に向け直す。ステップ330で、この信号がマスクされ
ていないスレッドを備えたLWPに信号が配信される。
【0030】信号がプロセスに送信されると、aslw
pはこの信号を通知される。信号通知は、図2のステッ
プ200に示すように、現行の信号配信モデルの信号生
成部分を完了させる。しかし、配信はまだ起こっていな
い。したがって、aslwpが通知を受信したときに、
副作用は引き起こされず、信号情報は転送されず、識別
信号の待ち行列化も影響されていない。通知を受信する
と、aslwpは目標スレッドを選択する。aslwp
は、この目標スレッドのLWPを介して、この目標スレ
ッドに信号を向け直す。目標スレッドが見つからない場
合は、この信号は保留中として記憶される。後に、ある
スレッドがこの信号をマスク解除したときに、この信号
はそのスレッドのLWPに向け直される。通知を受信す
るモジュールがそれ自体に信号を向け直すので、これは
自己向け直しと呼ばれる。信号の実際の配信は、この向
け直しの後に、目標スレッドのLWPに向けて起こるこ
とになる。
【0031】したがって、信号は1度だけ生成され、配
信される。1度だけの生成は、信号処理のセマンティッ
クを保存する。信号がマスク解除されているスレッドへ
の1度だけの配信もまた、信号マスキングのセマンティ
ックを保存する。信号が最終的に配信されるまで、信号
情報および待ち行列はカーネル内に保存されるので、正
確な信号情報および待ち行列化のセマンティックは保存
される。したがって本発明の方法は、本信号モデルのキ
ー態様を全て保持する。さらに、この方法は、中央処理
装置14(1)のみで構成されるホスト・コンピュータ
・システム10などの単一プロセッサ・システム、およ
び中央処理装置14(1)〜14(N)で構成されるホ
スト・コンピュータ・システム10などのマルチプロセ
ッサ・システム、その両方に対して利益を提供する。
【0032】代替の方法では、本発明の方法は、asl
wpを介した、カーネルからユーザ・レベルまでの呼び
出しとして見ることができる。このシナリオでは、カー
ネルはaslwpを使用してどのLWPに信号を向ける
べきかをユーザ・レベル・スレッド・ライブラリに質問
する。aslwpが実行するユーザ・レベル・プログラ
ムは、ユーザ・レベル・スレッドのマスクを調査し、目
標スレッドを選択する。続いてaslwpは、目標スレ
ッドが動作しているLWPをカーネルに知らせることに
よって、信号を目標スレッドに向け直す。カーネルは、
このLWPへの実際の信号配信を実行することによって
信号配信を完了する。このようにして、ユーザ・レベル
のモジュールは、カーネル・レベルのモジュールと協働
して、信号を適当なユーザ・レベル・スレッドに配信す
る。
【0033】本発明の方法の詳細を図4に示す。ステッ
プ400で、aslwpは、全ての非同期信号を受ける
ように構成される。次いで、aslwpは、aslwp
に非同期信号を待たせるsignal_waitモジュ
ールを呼び出す(ステップ410)。ステップ420
で、aslwpはsignal_waitモジュールが
制御を戻すのを待つ。signal_waitモジュー
ルから戻ると、aslwpはステップ430で信号を無
視するように構成され、したがって、aslwpが他の
システム事象またはユーザ動作によって割り込まれない
ことが保証される。ステップ440で、aslwpは、
どの1つまたは複数のスレッドが、signal_wa
itモジュールからの戻り信号をマスクしていないかを
判別する。ステップ450で、戻り信号がマスク解除さ
れているスレッドが見つかるかどうかを判別する。この
ような信号が見つからない場合は、処理はステップ46
0に続き、そこで信号はユーザ・レベルglobal_
signal_maskにポストされ、保留中として記
憶される。ステップ470では、マスク解除されている
戻り信号を備えた1つまたは複数のスレッドが見つかっ
た場合は、信号は適当なLWPおよびスレッドに向け直
される。これで、生成された信号の処理は完了する。
【0034】aslwpがsignal_waitモジ
ュールを呼び出すときに、制御はsignal_wai
tモジュールに移る。このモジュールで実行される各ス
テップを図5に示す。ステップ500で、signal
_waitモジュールは非同期信号の生成を待つ。非同
期信号が生成されない場合には、signal_wai
tモジュールは信号の生成を待つ。信号が生成される
と、処理はステップ510に移り、そこで信号はasl
wpのkernel_thread_structにポ
ストされる。ステップ520で、signal_wai
tモジュールは、当該の信号が既にnotificat
ion_setにポストされたかどうかを判別する。信
号が既にnotification_setにポストさ
れている場合は、この信号はステップ530でaslw
pのkernel_thread_structに保留
中のまま残される。これは、信号の複数のインスタンス
の生成を処理することを見込んでいる。信号の通知は、
指定されたプロセスに向けられた信号が現れたことの、
aslwpへの単なる指示である。notificat
ion_setに信号がない場合には、処理はステップ
540に移り、そこで信号は、aslwpのkerne
l_thread_structからnotifica
tion_setに移される。信号の待ち行列化情報構
造は、カーネルに残り、実際の信号配信がまだ起こって
いないことを表す。ステップ550で、signal_
waitモジュールは、生成された信号を識別する値を
aslwpに戻す。
【0035】信号の向け直しは、実際の信号配信の前半
を完了させる新しいステップである。実際の信号配信
は、信号が向け直されるLWP上で起こる。2つのエン
ティティ、aslwpまたはスレッドが、信号の向け直
しを引き起こすことができる。aslwpの向け直し
(図6に示す)では、信号を収容できるスレッドをas
lwpが発見した場合に、aslwpはそのスレッドに
信号を向け直す。自己向け直し(図7に示す)では、ス
レッドは、以前にマスクされたglobal_sign
al_maskの保留中信号をマスク解除したときに、
それ自体に信号を向け直す。
【0036】aslwpによる向け直し(図4、ステッ
プ470)について、図6でさらに説明および図示す
る。ステップ600で、目標スレッドが現在LWP上で
動作しているかどうかを判別する。目標スレッドが現在
LWP上で動作していない場合は、ステップ610で、
向け直された未決定信号の目標スレッドのマスクに信号
がポストされる。ステップ620で、このシステムは、
目標スレッドが動作するようにスケジュールされるのを
待つ。続いて、処理はステップ630に続く。しかし、
目標スレッドが現在LWP上で動作している場合は、ス
テップ630で、目標スレッドはそれが現在動作してい
るLWPに結合される。その後、ステップ640で、s
ignal_redirectionモジュールが呼び
出される。
【0037】最初の信号通知時に全てのスレッドが信号
をマスクしている場合は、aslwpは信号をユーザ・
レベルglobal_signal_maskにポスト
する(図4,ステップ460)。スレッドは、glob
al_signal_maskにある信号をマスク解除
する時に、signal_redirectionモジ
ュールを呼び出すことによって、信号をそれ自体に向け
直す。これは自己向け直しと呼ばれ、信号をaslwp
から目標スレッドの現行LWPに向け直す。この信号の
処理を図7に示す。ステップ700で、任意の非同期信
号が任意のスレッドによってマスク解除されているかど
うかを判別する。全てのスレッドが非同期信号をマスク
している場合は、それ以上の動作は不要である。しか
し、1つまたは複数のスレッドが1つまたは複数の非同
期信号をマスク解除している場合は、このシステムは、
ステップ710で、マスク解除された信号がユーザ・レ
ベルglobal_signal_maskで保留中か
どうかを判別する。マスク解除された信号がそのマスク
で保留中でない場合は、目標スレッドはそれ以上の動作
を必要としない。しかし、その信号が保留中の場合は、
処理はステップ720に続き、そこで、この非同期信号
をマスク解除したスレッドは、signal_redi
rectionモジュールを呼び出す。
【0038】前記のシステムが直面する問題は、1つま
たは複数の信号のロスを引き起こすエッジ条件である。
スレッドが、signal_redirectionモ
ジュールを介して既にそのLWPに送信された信号をマ
スクしようとするときに、これが検出され、signa
l_redirectionモジュールが直ちに呼び出
される。これにより、エッジ条件によって信号の損失が
生じないことが保証される。
【0039】図6および7に示すsignal_red
irectionモジュールの呼び出しを、図8にさら
に示す。ステップ800で、信号はnotificat
ion_setから目標LWPのsignal_inf
o_structに移される。ステップ810で、さら
に多くの信号がaslwpに待ち行列化されるかどうか
を判別する。さらに多くの信号がaslwpに待ち行列
化される場合は、プロセスはステップ820に続き、そ
こでaslwpが休止状態であるかどうかを判別する。
休止状態である場合には、ステップ830でaslwp
は活動状態にされる。(現在)実行中のaslwpはそ
の後、ステップ840で、信号が保留中であることを通
知される。ステップ850で、aslwpは、図2ない
し8に示し上記に説明したプロセスを実行することによ
って、保留中信号をサービスする。
【0040】このようにして、本発明の方法は信号の待
ち行列化を実施する。前述のように、指定されたLWP
に以前に送信された非同期信号は、続いてaslwpに
送信される。待ち行列化は、2つの部分からなる処理で
実現される。つまり、同一の信号の複数のオカレンス
は、aslwpによって受信され、待ち行列化される。
最初に、aslwpは待ち行列中の第1信号を処理す
る。その他の全ての信号のインスタンスは、待ち行列化
されたまま残る。これらの待ち行列化された信号は、a
slwpを活動化させることがあるが、最後のsign
al_redirectionモジュールの呼び出しに
よってnotification_setから信号が配
信されるまで、aslwpは休止状態に戻ることにな
る。信号がついに配信され、その結果notifica
tion_setから削除されたとき、aslwpは、
signal_redirectionモジュールを使
用して、もう1度信号を検査する。次に、以前の信号は
もはやnotification_setで保留中では
ないので、aslwpは保留中信号をnotifica
tion_setに進めてユーザ・レベルに戻り、この
信号を新しい通知として処理する。その後、信号通知に
含まれる動作が現れる。したがって、待ち行列化された
信号は、次々に通知および配信される。
【0041】ステップ860で、目標LWPは信号が配
信を必要としていることを通知される。ステップ870
で、目標LWPは、目標スレッドへの実際の信号配信を
引き起こす。この配信ステップは、図2に示す通常の生
成/配信パラダイムの配信ステップと同様である。
【0042】本発明のアーキテクチャは、マルチスレッ
ド環境において信号生成/配信機構を適切に実施する。
ユーザ・レベルでより高速のマスキングが現れるので、
このシステムはまた、より高速の信号マスキングも提供
する。したがって、本発明のアーキテクチャによって、
高速すなわち楽観的信号マスキングが可能になる。楽観
的信号マスキングは、非同期信号による割り込みのな
い、高速なクリティカル・コード・セクションを構築す
るために重要である。実施する「楽観」とは、信号が現
れないために、これらの信号をマスクするプロセスが、
信号配信機構(すなわちカーネル)にマスクについて知
らせる必要がなく、カーネルの計算負荷が軽減されると
いうことである。1つの信号が現れたが、この信号が比
較的まれな事象であることを期待されるときには、信号
処理はコストがかかる。本発明の方法はまた、この方法
によって楽観的信号マスキングが可能になるので、単一
スレッド・プロセスのみをサポートするある種のシステ
ムに対しては少なくとも有益である。
【0043】前述の明細書では、本発明について特定の
例示的実施形態に関して記述した。しかし、添付の特許
請求の範囲に記載した、より広範な本発明の精神および
範囲を逸脱することなく、それらに様々な修正および変
更を加えることができることは明らかであろう。
【0044】さらに、本明細書に記載のフローチャート
は、本発明の方法を達成するための各ステップの、単な
る概略的な論理流れを例示したものであって、本発明の
範囲を逸脱することなく、ステップを付け加える、また
はフローチャートから取り除くことができる。さらに、
フローチャート中の各ステップの実行順序は、本発明の
範囲を逸脱することなく変更することができる。フロー
チャートによって説明した方法の実施に際して追加の考
慮により、各ステップの選択および順序の変更が必要と
なることがある。
【0045】一般に、この明細書のフローチャートは、
コンピュータ・システム内で実行するソフトウェア・モ
ジュールによって実行される1つまたは複数のステップ
を含む。このモジュールは、当技術分野では周知の任意
の手段によって実現することができる。例えば、Jav
a、「C」、Pascal、FORTRAN、アセンブ
リ言語など、任意数のコンピュータ・プログラミング言
語を使用することができる。さらに手続き型、オブジェ
クト指向、人工知能技術など、様々なプログラミング手
法を使用することができる。
【0046】前記のような多くの変更または修正は、当
技術分野の通常の技術を有する者には容易に理解されよ
う。例えば、記述した実施形態はUNIXシステムに関
連する動作を参照したが、本発明はまた、その他の様々
なオペレーティング・システムにも適用されることにな
ろう。したがって、この明細書および図面は、限定的な
意味ではなく例示とみなすものとし、本発明は、提供し
た特許請求の範囲およびそれらの完全な範囲によっての
み制限される。
【図面な簡単な説明】
【図1】 本発明の実施に適したホスト・コンピュータ
・システムを示すブロック・ダイアグラムである。
【図2】 現行のパラダイムによる、信号の生成および
配信の各ステップを示すフローチャートである。
【図3】 本発明の一実施形態による、信号の生成およ
び配信の各ステップを示すフローチャートである。
【図4】 図3の各ステップをさらに詳細に示すフロー
チャートである。
【図5】 本発明の一実施形態による、signal_
waitルーチンによるaslwpの信号の生成および
通知の各ステップを示すフローチャートである。
【図6】 本発明の一実施形態による、信号の向け直し
の各ステップを示すフローチャートである。
【図7】 本発明の一実施形態による、ポストされた信
号の向け直しの各ステップを示すフローチャートであ
る。
【図8】 本発明の一実施形態による、信号配信の各ス
テップを示すフローチャートである。
【符号の説明】
12 バス 14 中央処理装置 16 システム・メモリ 18 入出力制御装置 20 シリアル・ポート 24 表示画面 26 表示アダプタ 28 シリアル・ポート 32 キーボード 34 記憶インタフェース 36 フロッピィ・ディスク・ドライブ 38 フロッピィ・ディスク 40 CD−ROMプレイヤ 42 CD−ROM 44 固定ディスク 46 マウス 48 ネットワーク・インタフェース
【手続補正書】
【提出日】平成9年10月7日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図2】
【図3】
【図1】
【図4】
【図5】
【図6】
【図7】
【図8】
フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 デヴァン・ケイ・シャ アメリカ合衆国・94404・カリフォルニア 州・フォスター シティ・フォスター シ ティ ブーレバード・1031・アパートメン ト ビイ (72)発明者 ジョン・ゾルノウスキー アメリカ合衆国・95035・カリフォルニア 州・ミルピタス・エル カミーノ ・1127

Claims (32)

    【特許請求の範囲】
  1. 【請求項1】 複数の非同期信号の中の任意の1つを受
    けるために第1モジュールを構成するステップと、 前記の非同期信号を識別する値を、前記の第1モジュー
    ルに戻す第2モジュールを呼び出すステップと、 複数のモジュールの中の少なくとも1つが、前記の非同
    期信号を受けることになるかどうかを判別し、 前記の複数のモジュールの中の少なくとも1つが前記の
    非同期信号を受けることになる場合には、 前記の複数のモジュールの中の前記の少なくとも1つか
    ら、選択されたモジュールを選択し、 前記の非同期信号を前記の選択されたモジュールに向け
    直し、 前記の非同期信号を前記の選択されたモジュールに配信
    し、 そうでない場合には前記の非同期信号を記憶するステッ
    プとを含む非同期信号を配信するためのコンピュータで
    実施する方法。
  2. 【請求項2】 前記の第1モジュールが第1軽量プロセ
    スを含み、前記の第1軽量プロセスがアプリケーション
    内の一続きの命令であり、オペレーティング・システム
    によるアクセスが可能であり、ユーザ・アプリケーショ
    ンによるアクセスが可能であり、前記の複数の非同期信
    号を全て受けるように構成されている請求項1に記載の
    方法。
  3. 【請求項3】 前記の選択ステップが、少なくとも部分
    的には前記の第1軽量プロセスによって実行される請求
    項2に記載の方法。
  4. 【請求項4】 前記の選択されたモジュールが第1ユー
    ザ・スレッドであり、前記の第1ユーザ・スレッドがア
    プリケーション内の一続きの命令であり、オペレーティ
    ング・システムによるアクセスが不可能であり、ユーザ
    ・アプリケーションによるアクセスが可能である請求項
    1に記載の方法。
  5. 【請求項5】 前記の非同期信号の生成を待つステップ
    と、 前記の非同期信号と同タイプの先行の非同期信号が、前
    記の選択されたモジュールへの配信を待っているかどう
    かを判別し、 前記の先行の非同期信号が前記の選択されたモジュール
    への配信を待っている場合には、 前記の非同期信号を保留中のまま残し、 前記の第1モジュールに戻ることなく前記の第2モジュ
    ールの前記の各ステップを再開し、 そうでない場合には、前記の値を前記の第1モジュール
    に戻すステップを、 前記の第2モジュールが含む請求項1に記載の方法。
  6. 【請求項6】 前記の選択されたモジュールを、そのモ
    ジュールが現在動作している関連したモジュールと結合
    させるステップと、 前記の第1モジュールによる処理を待つ複数の非同期信
    号のそれぞれにサービスするステップと、 前記の第1モジュールによる処理を待つ非同期信号がな
    くなるまで前記のサービスステップを繰り返すステップ
    と、 前記の非同期信号が配信を必要としていることを、前記
    の関連したモジュールに示すステップとを前記の向け直
    しステップが含む請求項1に記載の方法。
  7. 【請求項7】 前記の非同期信号の生成を待つステップ
    と、 前記の非同期信号と同タイプの先行の非同期信号が、前
    記の選択されたモジュールを待っているかどうかを判別
    するステップと、 前記の先行の非同期信号が前記の選択されたモジュール
    への配信を待っている場合には、 前記の第1モジュールに戻ることなく前記の第2モジュ
    ールの前記の各ステップを再開し、 そうでない場合には、前記の値を前記の第1モジュール
    に戻すステップを、 前記の第2モジュールが含む請求項1に記載の方法。
  8. 【請求項8】 前記の選択されたモジュールが現在動作
    しているかどうかを判別するステップと、そのモジュー
    ルが現在動作していない場合には、 そのモジュールの実行の再開を待つステップと、 そのモジュールが現在動作している関連したモジュール
    と、そのモジュールを結合するステップと、 第3モジュールを呼び出すステップとを前記の向け直し
    ステップが含む請求項7に記載の方法。
  9. 【請求項9】 前記の関連したモジュールが第2軽量プ
    ロセスを含む請求項8に記載の方法。
  10. 【請求項10】 前記の第1モジュールによる処理を待
    つ複数の非同期信号のそれぞれにサービスするステップ
    と、 前記の第1モジュールによる処理を待つ非同期信号がな
    くなるまで前記のサービスステップを繰り返すステップ
    と、 前記の非同期信号が配信を必要としていることを、前記
    の関連したモジュールに示すステップとを前記の第3モ
    ジュールが含む請求項8に記載の方法。
  11. 【請求項11】 前記の複数の非同期信号の任意の信号
    が、前記の第1モジュールによる処理を待っているかど
    うかを判別するステップと、 前記の複数の非同期信号の中の少なくとも1つが、第1
    モジュールによる処理を待っていると判別した後に、 前記の第1モジュールが休止状態にあるかどうかを判別
    するステップと、前記の第1モジュールが休止状態にあ
    る場合には、前記の第1モジュールを活動状態にするス
    テップと、 前記の複数の非同期信号の中の前記の少なくとも1つを
    使用して、非同期信号を配信するための前記の方法を実
    行するステップとを前記のサービスステップが含む請求
    項10に記載の方法。
  12. 【請求項12】 以前に受け取っていない前記の複数の
    モジュールの中の1つが、前記の複数の非同期信号の中
    の1つを受けることになるかどうかを判別するステップ
    と、 前記の複数のモジュールの前記の中の1つが、前記の複
    数の非同期信号の中の前記の1つを受けることになると
    判別した後に、前記の複数の非同期信号の中の前記の1
    つに関連する前記の情報が記憶されたかどうかを判別す
    るステップと、 前記の複数の非同期信号の中の前記の1つに関連する前
    記の情報が記憶されたと判別した後に、第3モジュール
    を呼び出すステップとをさらに含む請求項1に記載の方
    法。
  13. 【請求項13】 前記の第1モジュールによる処理を待
    つ複数の非同期信号のそれぞれにサービスするステップ
    と、 前記の第1モジュールによる処理を待つ非同期信号がな
    くなるまで前記のサービスステップを繰り返すステップ
    と、 前記の非同期信号が配信を必要としていることを、前記
    の関連したモジュールに示すステップとを前記の第3モ
    ジュールが含む請求項12に記載の方法。
  14. 【請求項14】 前記の複数の非同期信号の任意の信号
    が、前記の第1モジュールによる処理を待っているかど
    うかを判別するステップと、 前記の複数の非同期信号の中の少なくとも1つが、第1
    モジュールによる処理を待っていると判別した後に、 前記の第1モジュールが休止状態にあるかどうかを判別
    するステップと、前記の第1モジュールが休止状態にあ
    る場合には、前記の第1モジュールを活動状態にするス
    テップと、 前記の複数の非同期信号の中の前記の少なくとも1つを
    使用して、非同期信号を配信するための前記の方法を実
    行するステップとを前記のサービスステップが含む請求
    項13に記載の方法。
  15. 【請求項15】 非同期信号が生成されたかどうかを判
    別するステップと、 前記の非同期信号の生成を第1モジュールに通知するス
    テップと、 前記の第1モジュールから、前記の非同期信号を、これ
    を受信できる第2モジュールに向け直すステップと前記
    の非同期信号を前記の第2モジュールに配信するステッ
    プとを含む、非同期信号を配信するためのコンピュータ
    で実施する方法。
  16. 【請求項16】 複数のモジュールから前記の第2モジ
    ュールを選択するステップと、 前記の非同期信号が前記の第2モジュールに配信される
    ことになることを示すステップとを前記の向け直しステ
    ップが含む請求項15に記載の方法。
  17. 【請求項17】 前記のコンピュータで実施する方法
    が、単一の中央処理装置を含むコンピュータで実施され
    る請求項15に記載の方法。
  18. 【請求項18】 前記のコンピュータで実施する方法
    が、複数の中央処理装置を含むコンピュータで実施され
    る請求項15に記載の方法。
  19. 【請求項19】 第2モジュールによって受信される非
    同期信号を受信するステップと、 前記の非同期信号を、前記の第2モジュールから前記の
    第1モジュールに向け直すステップとを含む、非同期信
    号を第1モジュールに配信するための方法。
  20. 【請求項20】 前記の第2モジュールによって受信さ
    れる非同期信号を受信し、 前記の非同期信号を前記の第2モジュールから前記の第
    1モジュールに向け直すように構成された第2モジュー
    ルを実行することによって、非同期信号を第1モジュー
    ルに配信するように構成された処理システムを含むコン
    ピュータ・システム。
  21. 【請求項21】 非同期信号が生成されているかどうか
    を判別し、 前記の非同期信号の生成を第1モジュールに通知し、 前記の非同期信号を、前記の第1モジュールから、前記
    の非同期信号を受信できる第2モジュールに向け直し、 前記の非同期信号を前記の第2モジュールに配信するよ
    うに構成されることによって、非同期信号を配信するよ
    うに構成された処理システムを含むコンピュータ・シス
    テム。
  22. 【請求項22】 前記の非同期信号の生成を待ち、 前記の非同期信号と同タイプの先行の非同期信号が、前
    記の選択されたモジュールへの配信を待っているかどう
    かを判別し、 前記の先行の非同期信号が前記の選択されたモジュール
    への配信を待っている場合には、 前記の非同期信号を保留中のまま残し、 前記の第1モジュールに戻ることなく前記の第2モジュ
    ールの前記の各ステップを再開し、 そうでない場合には、前記の値を前記の第1モジュール
    に戻すことによって非同期信号が生成されているかどう
    かを、前記の処理システムが判別する請求項21に記載
    のコンピュータ・システム。
  23. 【請求項23】 前記の選択されたモジュールを、その
    モジュールが現在動作している関連したモジュールと結
    合させ、 前記の第1モジュールによる処理を待つ複数の非同期信
    号のそれぞれにサービスし、 前記の非同期信号が配信を必要としていることを、前記
    の関連したモジュールに示し、 前記の非同期信号を前記の選択されたモジュールに配信
    することによって、前記の処理システムが前記の非同期
    信号を向け直す請求項22に記載のコンピュータ・シス
    テム。
  24. 【請求項24】 前記のコンピュータで実施する方法
    が、単一の中央処理装置を含むコンピュータで実施され
    る請求項21に記載の方法。
  25. 【請求項25】 前記のコンピュータで実施する方法
    が、複数の中央処理装置を含むコンピュータで実施され
    る請求項21に記載の方法。
  26. 【請求項26】 非同期信号を配信するためのコンピュ
    ータ・プログラムを記録した記録媒体において、 非同期信号が生成されているかどうかを判別するプログ
    ラムと、 前記の非同期信号の生成を第1モジュールに通知するプ
    ログラムと、 前記の非同期信号を、前記の第1モジュールから、前記
    の非同期信号を受信できる第2モジュールに向け直すプ
    ログラムと、 前記の非同期信号を前記の第2モジュールに配信するプ
    ログラムと、 を記録したコンピュータ読取り可能記録媒体。
  27. 【請求項27】 非同期信号の生成を第1モジュールに
    通知する前記のプログラムが、 前記の非同期信号の生成を待つプログラムと、 前記の非同期信号と同タイプの先行の非同期信号が、前
    記の選択されたモジュールへの配信を待っているかどう
    かを判別し、 前記の先行の非同期信号が前記の選択されたモジュール
    への配信を待っている場合には、 前記の非同期信号を保留中のまま残し、 および前記の第1モジュールに戻ることなく前記の第2
    モジュールの前記の各ステップを再開し、 そうでない場合には、前記の値を前記の第1モジュール
    に戻すプログラムとをさらに含む請求項26に記載の記
    録媒体。
  28. 【請求項28】 前記の非同期信号を向け直す前記のプ
    ログラムが、 前記の選択されたモジュールを、そのモジュールが現在
    動作している関連したモジュールと結合させるプログラ
    ムと、 前記の第1モジュールによる処理を待つ複数の非同期信
    号のそれぞれにサービスするプログラムと、 前記の非同期信号が配信を必要としていることを、前記
    の関連したモジュールに示すプログラムとをさらに含む
    請求項26に記載の記録媒体。
  29. 【請求項29】 非同期信号を第1モジュールに配信す
    るためのコンピュータ・プログラムを記録した記録媒体
    において、 第2モジュールによって受信される非同期信号を受信す
    るプログラムと、 前記の非同期信号を前記の第2モジュールから前記の第
    1モジュールに向け直すプログラムと、を記憶するコン
    ピュータ読取り可能記録媒体。
  30. 【請求項30】 少なくとも1つの実行可能なプログラ
    ムへのアクセスを有する第1電子記憶システムと、 非同期信号が生成されているかどうかを判別し、 前記の非同期信号の生成を第1モジュールに通知し、 前記の非同期信号を、前記の第1モジュールから、前記
    の非同期信号を受信できる第2モジュールに向け直し、 前記の非同期信号を前記の第2モジュールに配信するよ
    うに構成されることによって、前記の少なくとも1つの
    実行可能なプログラムを実行し、少なくとも1つの非同
    期信号を生成し、これを前記の少なくとも1つの実行可
    能なプログラムに配信するように構成された処理システ
    ムとを含むコンピュータ・システム。
  31. 【請求項31】 前記の非同期信号の生成を待ち、 前記の非同期信号と同タイプの先行の非同期信号が、前
    記の選択されたモジュールへの配信を待っているかどう
    かを判別し、 前記の先行の非同期信号が前記の選択されたモジュール
    への配信を待っている場合には、 前記の非同期信号を保留中のまま残し、 前記の第1モジュールに戻ることなく前記の第2モジュ
    ールの前記の各ステップを再開し、 そうでない場合には、前記の値を前記の第1モジュール
    に戻すようにさらに構成されることによって、前記の第
    1モジュールに前記の非同期信号の生成を通知するよう
    に前記の処理システムが構成される請求項30に記載の
    コンピュータ・システム。
  32. 【請求項32】 前記の選択されたモジュールを、その
    モジュールが現在動作している関連したモジュールと結
    合させ、 前記の第1モジュールによる処理を待つ複数の非同期信
    号のそれぞれにサービスし、 前記の非同期信号が配信を必要としていることを、前記
    の関連したモジュールに示し、 前記の非同期信号を前記の選択されたモジュールに配信
    するようにさらに構成されることによって、前記の非同
    期信号を向け直すように前記の処理システムが構成され
    る請求項31に記載のコンピュータ・システム。
JP9187280A 1996-07-01 1997-06-30 2レベル・マルチスレッド・システムにおける信号の生成および配信 Pending JPH113232A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/674323 1996-07-01
US08/674,323 US5991790A (en) 1996-07-01 1996-07-01 Generation and delivery of signals in a two-level, multithreaded system

Publications (1)

Publication Number Publication Date
JPH113232A true JPH113232A (ja) 1999-01-06

Family

ID=24706155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9187280A Pending JPH113232A (ja) 1996-07-01 1997-06-30 2レベル・マルチスレッド・システムにおける信号の生成および配信

Country Status (3)

Country Link
US (1) US5991790A (ja)
EP (1) EP0817047A3 (ja)
JP (1) JPH113232A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012094175A (ja) * 2004-03-31 2012-05-17 Intel Corp ユーザーレベルのマルチスレッドを提供する方法およびシステム

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457064B1 (en) 1998-04-27 2002-09-24 Sun Microsystems, Inc. Method and apparatus for detecting input directed to a thread in a multi-threaded process
US6735770B1 (en) * 1998-04-27 2004-05-11 Sun Microsystems, Inc. Method and apparatus for high performance access to data in a message store
US6409602B1 (en) 1998-11-06 2002-06-25 New Millenium Gaming Limited Slim terminal gaming system
US6801943B1 (en) * 1999-04-30 2004-10-05 Honeywell International Inc. Network scheduler for real time applications
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
EP1120979A1 (en) * 2000-01-24 2001-08-01 BRITISH TELECOMMUNICATIONS public limited company Communications network
US7695363B2 (en) 2000-06-23 2010-04-13 Igt Gaming device having multiple display interfaces
US7699699B2 (en) 2000-06-23 2010-04-20 Igt Gaming device having multiple selectable display interfaces based on player's wagers
US6892200B2 (en) * 2001-11-13 2005-05-10 America Online, Incorporated Javascript engine
US7210127B1 (en) 2003-04-03 2007-04-24 Sun Microsystems Methods and apparatus for executing instructions in parallel
US7600221B1 (en) 2003-10-06 2009-10-06 Sun Microsystems, Inc. Methods and apparatus of an architecture supporting execution of instructions in parallel
US8103592B2 (en) 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7500245B2 (en) * 2005-07-08 2009-03-03 Microsoft Corporation Changing code execution path using kernel mode redirection
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US8021230B2 (en) 2004-08-19 2011-09-20 Igt Gaming system having multiple gaming machines which provide bonus awards
US8251791B2 (en) 2004-08-19 2012-08-28 Igt Gaming system having multiple gaming machines which provide bonus awards
US7963847B2 (en) 2004-08-19 2011-06-21 Igt Gaming system having multiple gaming machines which provide bonus awards
US7877629B2 (en) * 2005-06-01 2011-01-25 Sanmina-Sci Facilitating handling of exceptions in a program implementing a M-on-N threading model
US7753773B2 (en) 2005-08-26 2010-07-13 Igt Gaming device having physical concentric symbol generators which are operable to provide a plurality of different games to a player
US8137188B2 (en) 2005-09-09 2012-03-20 Igt Server based gaming system having multiple progressive awards
US8128491B2 (en) 2005-09-09 2012-03-06 Igt Server based gaming system having multiple progressive awards
US7841939B2 (en) 2005-09-09 2010-11-30 Igt Server based gaming system having multiple progressive awards
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US8512130B2 (en) 2006-07-27 2013-08-20 Igt Gaming system with linked gaming machines that are configurable to have a same probability of winning a designated award
US8616959B2 (en) 2006-09-27 2013-12-31 Igt Server based gaming system having system triggered loyalty award sequences
US7862430B2 (en) 2006-09-27 2011-01-04 Igt Server based gaming system having system triggered loyalty award sequences
US7674180B2 (en) 2006-09-27 2010-03-09 Igt Server based gaming system having system triggered loyalty award sequences
US8051417B2 (en) * 2007-01-30 2011-11-01 Hewlett-Packard Development Company, L.P. Target thread selection in a multi-threaded process
US7985133B2 (en) 2007-07-30 2011-07-26 Igt Gaming system and method for providing an additional gaming currency
US8900053B2 (en) 2007-08-10 2014-12-02 Igt Gaming system and method for providing different bonus awards based on different types of triggered events
US9142097B2 (en) 2007-10-26 2015-09-22 Igt Gaming system and method for providing play of local first game and remote second game
US8359459B2 (en) * 2008-05-27 2013-01-22 Oracle America, Inc. Using hardware support to reduce synchronization costs in multithreaded applications
US9039516B2 (en) 2009-07-30 2015-05-26 Igt Concurrent play on multiple gaming machines
US9875618B2 (en) 2014-07-24 2018-01-23 Igt Gaming system and method employing multi-directional interaction between multiple concurrently played games
US9972171B2 (en) 2015-09-24 2018-05-15 Igt Gaming system and method for providing a triggering event based on a collection of units from different games

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0272837A3 (en) * 1986-12-22 1988-09-07 AT&T Corp. Inter-process signal handling in a multi-processor system
US5062040A (en) * 1986-12-22 1991-10-29 At&T Bell Laboratories Handling of notification of asynchronous events by user and stub processes of a distributed process executing on a plurality of processors of a multi-processor system
JPH0831038B2 (ja) * 1990-02-13 1996-03-27 インターナショナル・ビジネス・マシーンズ・コーポレイション 割込みマネジャおよび割込み処理方法
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
US5355484A (en) * 1991-08-12 1994-10-11 International Business Machines Corporation Dynamically established event monitors in event management services of a computer system
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012094175A (ja) * 2004-03-31 2012-05-17 Intel Corp ユーザーレベルのマルチスレッドを提供する方法およびシステム
JP2012160202A (ja) * 2004-03-31 2012-08-23 Intel Corp ユーザーレベルのマルチスレッドを提供する方法およびシステム
US10585667B2 (en) 2004-03-31 2020-03-10 Intel Corporation Method and system to provide user-level multithreading
US10613858B2 (en) 2004-03-31 2020-04-07 Intel Corporation Method and system to provide user-level multithreading
US10628153B2 (en) 2004-03-31 2020-04-21 Intel Corporation Method and system to provide user-level multithreading
US10635438B2 (en) 2004-03-31 2020-04-28 Intel Corporation Method and system to provide user-level multithreading

Also Published As

Publication number Publication date
EP0817047A3 (en) 2000-03-29
EP0817047A2 (en) 1998-01-07
US5991790A (en) 1999-11-23

Similar Documents

Publication Publication Date Title
JPH113232A (ja) 2レベル・マルチスレッド・システムにおける信号の生成および配信
US6314471B1 (en) Techniques for an interrupt free operating system
US6272517B1 (en) Method and apparatus for sharing a time quantum
US6895585B2 (en) Method of mixed workload high performance scheduling
US7493436B2 (en) Interrupt handling using simultaneous multi-threading
JP3610120B2 (ja) トランザクション・システム内のサーバの数を動的に制御する方法
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
JP4056465B2 (ja) マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置
US7941624B2 (en) Parallel memory migration
US20050251806A1 (en) Enhancement of real-time operating system functionality using a hypervisor
US7996843B2 (en) Symmetric multi-processor system
US6845504B2 (en) Method and system for managing lock contention in a computer system
EP0783734B1 (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
EP1685486B1 (en) Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation
US20090077564A1 (en) Fast context switching using virtual cpus
US8539499B1 (en) Symmetric multiprocessing with virtual CPU and VSMP technology
US20050015768A1 (en) System and method for providing hardware-assisted task scheduling
US5526521A (en) Method and system for process scheduling from within a current context and switching contexts only when the next scheduled context is different
US20040117793A1 (en) Operating system architecture employing synchronous tasks
US7103631B1 (en) Symmetric multi-processor system
CA1304513C (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
US6704766B1 (en) Method and apparatus for dynamically controlling the execution of a request handler on a processor resource
US11461134B2 (en) Apparatus and method for deferral scheduling of tasks for operating system on multi-core processor
Rothberg Interrupt handling in Linux
JP2003005987A (ja) エミュレーション装置