JPH1055284A - スレッドをスケジュールする方法及びそのシステム - Google Patents
スレッドをスケジュールする方法及びそのシステムInfo
- Publication number
- JPH1055284A JPH1055284A JP9130550A JP13055097A JPH1055284A JP H1055284 A JPH1055284 A JP H1055284A JP 9130550 A JP9130550 A JP 9130550A JP 13055097 A JP13055097 A JP 13055097A JP H1055284 A JPH1055284 A JP H1055284A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- queue
- processor
- processors
- threads
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012795 verification Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 32
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
(57)【要約】
【課題】 リアル・タイム・アプリケーション用のマル
チプロセッサ・システムにプロセス・スケジューラまた
はディスパッチャを提供する。 【解決手段】 各プロセッサ用のディスパッチ・キュー
と、拘束されていないより優先度の高いリアル・タイム
・スレッドのための別個のグローバル・ディスパッチ・
キューとを維持するディスパッチャ・モデルを提案す
る。プロセッサはそれ自体のキューとディスパッチャを
持つ。プロセッサのディスパッチャは、実行する候補ス
レッドとしてシステム内のキューの1つから実行するス
レッドを選択する。実行のために候補スレッドが選択さ
れると、プロセッサはグローバル・リアル・タイム・キ
ューとプロセッサ自体のディスパッチ・キューの中のス
レッドと照らし合わせて検証し、システム内のより優先
度の高い実行可能スレッドを選択する。
チプロセッサ・システムにプロセス・スケジューラまた
はディスパッチャを提供する。 【解決手段】 各プロセッサ用のディスパッチ・キュー
と、拘束されていないより優先度の高いリアル・タイム
・スレッドのための別個のグローバル・ディスパッチ・
キューとを維持するディスパッチャ・モデルを提案す
る。プロセッサはそれ自体のキューとディスパッチャを
持つ。プロセッサのディスパッチャは、実行する候補ス
レッドとしてシステム内のキューの1つから実行するス
レッドを選択する。実行のために候補スレッドが選択さ
れると、プロセッサはグローバル・リアル・タイム・キ
ューとプロセッサ自体のディスパッチ・キューの中のス
レッドと照らし合わせて検証し、システム内のより優先
度の高い実行可能スレッドを選択する。
Description
【0001】
【発明の属する技術分野】本発明は、リアル・タイム環
境におけるマルチプロセッサ・システムのための効率的
なプロセス・スケジューリングを行う方法および装置に
関する。
境におけるマルチプロセッサ・システムのための効率的
なプロセス・スケジューリングを行う方法および装置に
関する。
【0002】
【従来の技術】マルチプロセッサ・システム(MP)
は、共通又は分担計算タスクで協調動作する複数のCP
U又はプロセッサの存在を特徴とする。1つのコンピュ
ータ・システム内に複数のプロセッサがあるため、多く
のプロセッサが計算負荷を分担することができるように
することによって、または多くのより小さなタスクを別
々のプロセッサで並列して行うことができるようにする
ことによって、パフォーマンスを向上させることができ
る。マルチプロセッサ・システムは、1つのプロセッサ
が障害を起こしても必ずしもシステム全体のクラッシュ
にはならないため、システムの信頼性を向上させること
ができる。
は、共通又は分担計算タスクで協調動作する複数のCP
U又はプロセッサの存在を特徴とする。1つのコンピュ
ータ・システム内に複数のプロセッサがあるため、多く
のプロセッサが計算負荷を分担することができるように
することによって、または多くのより小さなタスクを別
々のプロセッサで並列して行うことができるようにする
ことによって、パフォーマンスを向上させることができ
る。マルチプロセッサ・システムは、1つのプロセッサ
が障害を起こしても必ずしもシステム全体のクラッシュ
にはならないため、システムの信頼性を向上させること
ができる。
【0003】しかし、複数のプロセッサの導入により、
別々のプロセッサ上のカーネルで2つ以上のプロセスが
同時に実行されるため、資源管理と割振りの問題が複雑
化する。したがって、オペレーティング・システムのス
ケジューラ・モジュールによって、どのプロセッサがプ
ロセスを実行するかを決定し、その一般的な態様では、
何らかの目的機能を最適化するために任意の特性を持つ
1組のプロセッサ上で1組のプロセスをスケジュールす
る必要がある。これには、1組のプロセスの中から実行
するプロセスを選択する必要がある。
別々のプロセッサ上のカーネルで2つ以上のプロセスが
同時に実行されるため、資源管理と割振りの問題が複雑
化する。したがって、オペレーティング・システムのス
ケジューラ・モジュールによって、どのプロセッサがプ
ロセスを実行するかを決定し、その一般的な態様では、
何らかの目的機能を最適化するために任意の特性を持つ
1組のプロセッサ上で1組のプロセスをスケジュールす
る必要がある。これには、1組のプロセスの中から実行
するプロセスを選択する必要がある。
【0004】オペレーティング・システムにおける基本
抽象概念として、「タスク」と「スレッド」がある。タ
スクは、資源管理の単位であり、スレッドは1つの制御
の流れである。各スレッドは、レジスタの状態とスタッ
クを持つ。システムは、各スレッドにそのスケジュール
可能性に関する特別の状態情報を関連づける。これに
は、スレッド・ディスパッチ優先度と、どのプロセッサ
でスレッドを実行することができるかを決定するプロセ
ッサ・アフィニティ(affinity)が含まれる。
抽象概念として、「タスク」と「スレッド」がある。タ
スクは、資源管理の単位であり、スレッドは1つの制御
の流れである。各スレッドは、レジスタの状態とスタッ
クを持つ。システムは、各スレッドにそのスケジュール
可能性に関する特別の状態情報を関連づける。これに
は、スレッド・ディスパッチ優先度と、どのプロセッサ
でスレッドを実行することができるかを決定するプロセ
ッサ・アフィニティ(affinity)が含まれる。
【0005】図1(A)に、ディスパッチャがディスパ
ッチ優先度によって索引づけされたディスパッチ・キュ
ーの配列101を使用するマルチプロセッサ・システム
のための従来技術の単一キュー・ディスパッチャを示
す。図1(A)で、スレッドは実行可能になるとそのデ
ィスパッチ優先度に対応するディスパッチ・キュー(典
型的にはその最後に)に入れられる。プロセッサは新し
いスレッドに切り替わると常に、最高の優先度の空でな
いディスパッチ・キューの先頭にあるスレッドを選択す
る。スレッドは、ディスパッチ・キューに入っている
間、ディスパッチ優先度を変更することができない。そ
のスレッドが外され、そのディスパッチ優先度を調整し
た後で、そのスレッドを異なるディスパッチ・キューに
入れることができるだけである。
ッチ優先度によって索引づけされたディスパッチ・キュ
ーの配列101を使用するマルチプロセッサ・システム
のための従来技術の単一キュー・ディスパッチャを示
す。図1(A)で、スレッドは実行可能になるとそのデ
ィスパッチ優先度に対応するディスパッチ・キュー(典
型的にはその最後に)に入れられる。プロセッサは新し
いスレッドに切り替わると常に、最高の優先度の空でな
いディスパッチ・キューの先頭にあるスレッドを選択す
る。スレッドは、ディスパッチ・キューに入っている
間、ディスパッチ優先度を変更することができない。そ
のスレッドが外され、そのディスパッチ優先度を調整し
た後で、そのスレッドを異なるディスパッチ・キューに
入れることができるだけである。
【0006】図1(B)に、同期オブジェクトを伴う必
要があるスレッドが、その同期オブジェクトに関連づけ
られたスリープ・キュー102に入れられる、従来技術
の単一キュー・ディスパッチャを示す。スリープ・キュ
ーはディスパッチ優先度順に維持され、その結果、同期
オブジェクトが解放されるとそのオブジェクトを待って
いる最高の優先度を持つスレッドがスリープ・キューの
先頭になる。
要があるスレッドが、その同期オブジェクトに関連づけ
られたスリープ・キュー102に入れられる、従来技術
の単一キュー・ディスパッチャを示す。スリープ・キュ
ーはディスパッチ優先度順に維持され、その結果、同期
オブジェクトが解放されるとそのオブジェクトを待って
いる最高の優先度を持つスレッドがスリープ・キューの
先頭になる。
【0007】図1(A)および図1(B)に示す従来技
術のシステムは、単一のスピン・スケジュール・ロック
を使用してすべてのスケジューリング操作を保護する。
各スケジューラはロックを獲得したり解放したりするこ
とができる。スケジュール・ロックが現在プロセッサに
よって保持されている場合、そのロックのスケジュール
・ロックの「スピン」を必要とする他のプロセッサはア
クセスを待つ。具体的には、同期オブジェクトの解放に
よっていずれかのスレッドが実行可能になると、スケジ
ュール・ロックが保持されると同時に、そのスレッドが
ディスパッチ・キューに入れられる。割込みルーチンか
らの妨害と遅延を防ぐために、スケジュール・ロックの
保持者は、高い割込みレベルで実行される。
術のシステムは、単一のスピン・スケジュール・ロック
を使用してすべてのスケジューリング操作を保護する。
各スケジューラはロックを獲得したり解放したりするこ
とができる。スケジュール・ロックが現在プロセッサに
よって保持されている場合、そのロックのスケジュール
・ロックの「スピン」を必要とする他のプロセッサはア
クセスを待つ。具体的には、同期オブジェクトの解放に
よっていずれかのスレッドが実行可能になると、スケジ
ュール・ロックが保持されると同時に、そのスレッドが
ディスパッチ・キューに入れられる。割込みルーチンか
らの妨害と遅延を防ぐために、スケジュール・ロックの
保持者は、高い割込みレベルで実行される。
【0008】したがって、図1(A)および図1(B)
に示す従来技術のシステムでは、1つのスケジュール・
ロックをめぐる競合によって、プロセッサがスケジュー
リングの決定を行うのを並んで待つことになる可能性が
あり、その結果、いくつかの遊休プロセッサが生じるこ
とがある。その結果、ジョブ処理の高速化のために複数
のプロセッサを使用する目的全体を達成することができ
ないだけでなく、貴重なコンピュータ資源が使用されな
くなる。
に示す従来技術のシステムでは、1つのスケジュール・
ロックをめぐる競合によって、プロセッサがスケジュー
リングの決定を行うのを並んで待つことになる可能性が
あり、その結果、いくつかの遊休プロセッサが生じるこ
とがある。その結果、ジョブ処理の高速化のために複数
のプロセッサを使用する目的全体を達成することができ
ないだけでなく、貴重なコンピュータ資源が使用されな
くなる。
【0009】この状況は、各プロセッサがそれ自体のデ
ィスパッチ・キューとそれ自体のスケジュール・ロック
とを持つことができる複数ディスパッチ・キュー・シス
テムを導入することによって多少改善することができ
る。そのようなマルチキュー・マルチロック・システム
を図2(A)に示す。このシステムでは、各プロセッサ
は、それ自体のディスパッチ・キューを維持する。たと
えば、図2(A)の各プロセッサ1、2、...Nに関
連づけられた別々のディスパッチ・キューがある。
ィスパッチ・キューとそれ自体のスケジュール・ロック
とを持つことができる複数ディスパッチ・キュー・シス
テムを導入することによって多少改善することができ
る。そのようなマルチキュー・マルチロック・システム
を図2(A)に示す。このシステムでは、各プロセッサ
は、それ自体のディスパッチ・キューを維持する。たと
えば、図2(A)の各プロセッサ1、2、...Nに関
連づけられた別々のディスパッチ・キューがある。
【0010】図2(A)のシステムでは、新しいスレッ
ドを実行する準備ができたプロセッサは、それ自体のデ
ィスパッチ・キューの中から実行可能なスレッドの探索
を開始する。それ自体のキューが空でない場合、プロセ
ッサは最も優先度の高い実行可能スレッドを自身のキュ
ーから取り出す。しかし、それ自体のキューが空の場
合、プロセッサは他のディスパッチ・キューに実行可能
なスレッドがないか探索する。さらに図2(A)を参照
すると、別のいずれかのディスパッチ・キューに実行可
能なスレッドがある場合、そのスレッドが特定のプロセ
ッサでのみ実行可能であるとしてマークされていない限
り、プロセッサはその別のディスパッチ・キューからそ
のスレッドを取り出してそのスレッドを実行することが
できる。しかし、図1および図2に示すような従来技術
のディスパッチャは、リアル・タイム・アプリケーショ
ンには適合しない。
ドを実行する準備ができたプロセッサは、それ自体のデ
ィスパッチ・キューの中から実行可能なスレッドの探索
を開始する。それ自体のキューが空でない場合、プロセ
ッサは最も優先度の高い実行可能スレッドを自身のキュ
ーから取り出す。しかし、それ自体のキューが空の場
合、プロセッサは他のディスパッチ・キューに実行可能
なスレッドがないか探索する。さらに図2(A)を参照
すると、別のいずれかのディスパッチ・キューに実行可
能なスレッドがある場合、そのスレッドが特定のプロセ
ッサでのみ実行可能であるとしてマークされていない限
り、プロセッサはその別のディスパッチ・キューからそ
のスレッドを取り出してそのスレッドを実行することが
できる。しかし、図1および図2に示すような従来技術
のディスパッチャは、リアル・タイム・アプリケーショ
ンには適合しない。
【0011】リアル・タイム・コンピューティング・シ
ステムは、限られた時間内に必要なレベルのサービスま
たは処理を届けるように設計されている。リアル・タイ
ム・コンピューティング・システムは、仮想現実、工場
オートメーション、ロボティクス、テレビ会議、マルチ
メディア・ブロードキャスト・システムなどの分野に使
用される。これらのアプリケーションは一般に「混合モ
ード」である。すなわち、スケジュール可能なエンティ
ティに区分化することができ、そのうちのいくつかがリ
アル・タイム応答を必要とする。制限時間応答を実現す
るには、時間が重要なアプリケーションがスケジューリ
ング動作を制御する必要がある。
ステムは、限られた時間内に必要なレベルのサービスま
たは処理を届けるように設計されている。リアル・タイ
ム・コンピューティング・システムは、仮想現実、工場
オートメーション、ロボティクス、テレビ会議、マルチ
メディア・ブロードキャスト・システムなどの分野に使
用される。これらのアプリケーションは一般に「混合モ
ード」である。すなわち、スケジュール可能なエンティ
ティに区分化することができ、そのうちのいくつかがリ
アル・タイム応答を必要とする。制限時間応答を実現す
るには、時間が重要なアプリケーションがスケジューリ
ング動作を制御する必要がある。
【0012】マルチプロセッサ・システムを使用してリ
アル・タイム・アプリケーションに対応する場合、プロ
セスのスケジューリングがさらに複雑になり、したがっ
て、リアル・タイム・オペレーティング・システムは、
時間が重要なタスクにリアル・タイム機能を与えること
ができなければならない。したがって、リアル・タイム
・システムは、特定の外部事象に対する即時応答を行う
ことができなければならず、事象発生後に特定のプロセ
スを所定の制限時間内にスケジューリングすることがで
きなければならない。また、リアル・タイム・システム
は、オペレーティング・システムが特定のプロセスを一
定制限時間内にスケジュールすることができるように保
証する必要がある。
アル・タイム・アプリケーションに対応する場合、プロ
セスのスケジューリングがさらに複雑になり、したがっ
て、リアル・タイム・オペレーティング・システムは、
時間が重要なタスクにリアル・タイム機能を与えること
ができなければならない。したがって、リアル・タイム
・システムは、特定の外部事象に対する即時応答を行う
ことができなければならず、事象発生後に特定のプロセ
スを所定の制限時間内にスケジューリングすることがで
きなければならない。また、リアル・タイム・システム
は、オペレーティング・システムが特定のプロセスを一
定制限時間内にスケジュールすることができるように保
証する必要がある。
【0013】リアル・タイムの高優先度スレッドを可能
な限り迅速に処理するために、図2(A)のシステムを
改良して図2(B)に示すような別個のリアル・タイム
・キューを設けることができる。図2(B)で、複数デ
ィスパッチャ・キューのより高いレベルに追加のスーパ
ーキューを追加して、実行可能リアル・タイム・スレッ
ドをシステム規模で見ることができるようにする。この
スーパーキューは、何らかの所定の閾値優先度レベルよ
りも高い優先度を持つ無制限リアル・タイム・スレッド
を保持するプロセッサ・キューを含むディスパッチ・キ
ューのキューである。したがって、スーパーキューは、
そのプロセッサの最高優先度スレッドがリアル・タイム
・スレッドとみなされるのに十分な優先度を持つプロセ
ッサをリストする。
な限り迅速に処理するために、図2(A)のシステムを
改良して図2(B)に示すような別個のリアル・タイム
・キューを設けることができる。図2(B)で、複数デ
ィスパッチャ・キューのより高いレベルに追加のスーパ
ーキューを追加して、実行可能リアル・タイム・スレッ
ドをシステム規模で見ることができるようにする。この
スーパーキューは、何らかの所定の閾値優先度レベルよ
りも高い優先度を持つ無制限リアル・タイム・スレッド
を保持するプロセッサ・キューを含むディスパッチ・キ
ューのキューである。したがって、スーパーキューは、
そのプロセッサの最高優先度スレッドがリアル・タイム
・スレッドとみなされるのに十分な優先度を持つプロセ
ッサをリストする。
【0014】図2(B)を参照すると、プロセッサはま
ず、スーパーキュー内の実行可能スレッドを探索する。
スーパーキューに空でない高優先度キューが入っている
場合、プロセッサはそのキューから最高優先度の実行可
能スレッドを取り出す。スーパーキューが空の場合、プ
ロセッサは自身のキューを調べる。自分のキューも空の
場合、プロセッサは他のディスパッチャ・キューに進ん
で実行可能スレッドを探索する。システムに空でないデ
ィスパッチャ・キューがある場合、プロセッサはそのキ
ューから最高優先度の実行可能スレッドを取り出し、そ
のスレッドの実行を開始する。
ず、スーパーキュー内の実行可能スレッドを探索する。
スーパーキューに空でない高優先度キューが入っている
場合、プロセッサはそのキューから最高優先度の実行可
能スレッドを取り出す。スーパーキューが空の場合、プ
ロセッサは自身のキューを調べる。自分のキューも空の
場合、プロセッサは他のディスパッチャ・キューに進ん
で実行可能スレッドを探索する。システムに空でないデ
ィスパッチャ・キューがある場合、プロセッサはそのキ
ューから最高優先度の実行可能スレッドを取り出し、そ
のスレッドの実行を開始する。
【0015】リアル・タイム・スレッドは、スーパーキ
ューを調べることによってディスパッチされる。したが
って、プロセッサが実行するスレッドを選択するとき、
まずスーパーキューを先に調べ、次にそのプロセッサ自
体のキューを調べる。
ューを調べることによってディスパッチされる。したが
って、プロセッサが実行するスレッドを選択するとき、
まずスーパーキューを先に調べ、次にそのプロセッサ自
体のキューを調べる。
【0016】図2(B)に関して上述した解決策は従来
の技術の改良であり、リアル・タイム・マルチプロセッ
サ・スケジューリングの簡単な解決策を提供するが、リ
アル・タイム・スレッドのスケジューリングに重大なレ
ース問題がある。たとえば、以下のような状況でレース
条件が生じる可能性がある。スーパーキューで実行可能
なリアル・タイム・スレッドが2つあることがプロセッ
サ1と2に通知されたとする。プロセッサ1と2は、ス
ーパーキューの検査に進み、どのプロセッサ・キューが
その2つのスレッドを持っているかを調べる。この2つ
のリアル・タイム・スレッドは、たとえばプロセッサ3
とプロセッサ4のディスパッチ・キューに入っており、
プロセッサ3のキューに入っているリアル・タイム・ス
レッドはプロセッサ4のキューに入っているものより優
先度が高い。
の技術の改良であり、リアル・タイム・マルチプロセッ
サ・スケジューリングの簡単な解決策を提供するが、リ
アル・タイム・スレッドのスケジューリングに重大なレ
ース問題がある。たとえば、以下のような状況でレース
条件が生じる可能性がある。スーパーキューで実行可能
なリアル・タイム・スレッドが2つあることがプロセッ
サ1と2に通知されたとする。プロセッサ1と2は、ス
ーパーキューの検査に進み、どのプロセッサ・キューが
その2つのスレッドを持っているかを調べる。この2つ
のリアル・タイム・スレッドは、たとえばプロセッサ3
とプロセッサ4のディスパッチ・キューに入っており、
プロセッサ3のキューに入っているリアル・タイム・ス
レッドはプロセッサ4のキューに入っているものより優
先度が高い。
【0017】スーパーキューから最高のリアル・タイム
・スレッドがプロセッサ3のディスパッチ・キューに入
っているとわかった後、両方のプロセッサ1および2は
プロセッサ3のキューにアクセスしてリアル・タイム・
スレッドを取り出そうとする。しかし、プロセッサ1の
方が先にプロセッサ3のキューにアクセスし、リアル・
タイム・スレッドを取り出す。プロセッサ2は、まだプ
ロセッサ3のキュー内でスレッドを探しており、最高の
優先度のリアル・タイム・スレッドがプロセッサ1によ
って取り出されたばかりであることを知らず、プロセッ
サ3のキューから優先度が次に高いスレッドを取り出そ
うとする。しかし、プロセッサ3のキュー内で優先度が
次に高い実行可能スレッドは、優先度がきわめて低いス
レッドである可能性がある。その結果、プロセッサ4の
キュー内のリアル・タイム・スレッドはキュー内に残さ
れたまま、いずれかのプロセッサがそれを処理すること
ができるようになるまでスケジュールされるのを待つこ
とになる。
・スレッドがプロセッサ3のディスパッチ・キューに入
っているとわかった後、両方のプロセッサ1および2は
プロセッサ3のキューにアクセスしてリアル・タイム・
スレッドを取り出そうとする。しかし、プロセッサ1の
方が先にプロセッサ3のキューにアクセスし、リアル・
タイム・スレッドを取り出す。プロセッサ2は、まだプ
ロセッサ3のキュー内でスレッドを探しており、最高の
優先度のリアル・タイム・スレッドがプロセッサ1によ
って取り出されたばかりであることを知らず、プロセッ
サ3のキューから優先度が次に高いスレッドを取り出そ
うとする。しかし、プロセッサ3のキュー内で優先度が
次に高い実行可能スレッドは、優先度がきわめて低いス
レッドである可能性がある。その結果、プロセッサ4の
キュー内のリアル・タイム・スレッドはキュー内に残さ
れたまま、いずれかのプロセッサがそれを処理すること
ができるようになるまでスケジュールされるのを待つこ
とになる。
【0018】上述のシナリオは不正確な同期によって生
じる可能性のある多くの不都合の一例であり、プロセッ
サ1と2の間に連絡がないためにレース条件になり、そ
の結果、より優先度の高いリアル・タイム・スレッドが
キュー内で待つと同時に、より低い優先度のスレッドが
処理されることになる。したがって、不正確なシステム
同期によって、低レベルのプロセッサ使用状況下であっ
てもリアル・タイム・スレッドのデッドラインが守られ
なくなる可能性がある。
じる可能性のある多くの不都合の一例であり、プロセッ
サ1と2の間に連絡がないためにレース条件になり、そ
の結果、より優先度の高いリアル・タイム・スレッドが
キュー内で待つと同時に、より低い優先度のスレッドが
処理されることになる。したがって、不正確なシステム
同期によって、低レベルのプロセッサ使用状況下であっ
てもリアル・タイム・スレッドのデッドラインが守られ
なくなる可能性がある。
【0019】
【発明が解決しようとする課題】したがって、多くのレ
ース条件があり、ディスパッチャの実行にエラーがある
従来技術のディスパッチャでは、リアル・タイム(R
T)スレッドがリアル・タイム動作でなくなり、場合に
よってはシステムが停止する可能性がある。
ース条件があり、ディスパッチャの実行にエラーがある
従来技術のディスパッチャでは、リアル・タイム(R
T)スレッドがリアル・タイム動作でなくなり、場合に
よってはシステムが停止する可能性がある。
【0020】したがって、現在、マルチプロセッサ・シ
ステムにディスパッチャを備えるための様々な装置と方
法が使用されている。しかし、それらはリアル・タイム
・アプリケーションには適合せず、多くのアプリケーシ
ョンにリアル・タイム・サービスを届けることができ
ず、多くのレース条件が伴う。したがって、マルチプロ
セッサ・システムのためにタイム・シェアリング(T
S)とリアル・タイム(RT)の両方のスケジューリン
グ方策に効率的に対応することができるディスパッチャ
を設けると有利であろう。
ステムにディスパッチャを備えるための様々な装置と方
法が使用されている。しかし、それらはリアル・タイム
・アプリケーションには適合せず、多くのアプリケーシ
ョンにリアル・タイム・サービスを届けることができ
ず、多くのレース条件が伴う。したがって、マルチプロ
セッサ・システムのためにタイム・シェアリング(T
S)とリアル・タイム(RT)の両方のスケジューリン
グ方策に効率的に対応することができるディスパッチャ
を設けると有利であろう。
【0021】
【課題を解決するための手段】本発明は、リアル・タイ
ム・アプリケーション用のマルチプロセッサ・システム
のためにプロセス・スケジューラすなわちディスパッチ
ャを提供する。本発明の実施態様では、システムが各プ
ロセッサのためのディスパッチ・キューと、制限のない
優先度のより高いリアル・タイム・スレッドのための別
個のグローバル・ディスパッチ・キューとを維持するこ
とができるように、各プロセッサはそれ自体にキューと
ディスパッチャを持つ。各キューにはスケジューリング
操作を保護するように別々のスケジュール・ロックが関
連づけられている。プロセッサは、新しいスレッドをグ
ローバル高優先度リアル・タイム・キューか、プロセッ
サ自体のキューか、または他のいずれかのプロセッサの
キューに入れることができる。
ム・アプリケーション用のマルチプロセッサ・システム
のためにプロセス・スケジューラすなわちディスパッチ
ャを提供する。本発明の実施態様では、システムが各プ
ロセッサのためのディスパッチ・キューと、制限のない
優先度のより高いリアル・タイム・スレッドのための別
個のグローバル・ディスパッチ・キューとを維持するこ
とができるように、各プロセッサはそれ自体にキューと
ディスパッチャを持つ。各キューにはスケジューリング
操作を保護するように別々のスケジュール・ロックが関
連づけられている。プロセッサは、新しいスレッドをグ
ローバル高優先度リアル・タイム・キューか、プロセッ
サ自体のキューか、または他のいずれかのプロセッサの
キューに入れることができる。
【0022】プロセッサのディスパッチャは、各キュー
に付随する優先度変数に基づいて、実行候補スレッドと
して、グローバル・リアル・タイム・キューかプロセッ
サ自体のキューかまたは他のプロセッサのキューから実
行するスレッドを選択することができる。スレッド選択
のためのキュー内の優先度の検査は、どのようなスケジ
ュール・ロックも必要とせず、コミュニケーションのミ
スは適切な同期アルゴリズムを使用して防止される。実
行のために候補スレッドを選択すると、プロセッサは他
のプロセッサにその選択を通知し、次に、グローバル・
リアル・タイム・キュー内とプロセッサ自体のディスパ
ッチ・キュー内のスレッドを照らし合わせて検証し、シ
ステム内で最も優先度の高い実行可能スレッドを選択す
る。
に付随する優先度変数に基づいて、実行候補スレッドと
して、グローバル・リアル・タイム・キューかプロセッ
サ自体のキューかまたは他のプロセッサのキューから実
行するスレッドを選択することができる。スレッド選択
のためのキュー内の優先度の検査は、どのようなスケジ
ュール・ロックも必要とせず、コミュニケーションのミ
スは適切な同期アルゴリズムを使用して防止される。実
行のために候補スレッドを選択すると、プロセッサは他
のプロセッサにその選択を通知し、次に、グローバル・
リアル・タイム・キュー内とプロセッサ自体のディスパ
ッチ・キュー内のスレッドを照らし合わせて検証し、シ
ステム内で最も優先度の高い実行可能スレッドを選択す
る。
【0023】したがって、本発明によってディスパッチ
ャは、レース条件を防止し、ロック競合を最小限にする
ことができると同時に、高優先度スレッドが可能な限り
迅速にディスパッチされるように保証することができ
る。本発明の好ましい実施態様は、スレッドをディスパ
ッチする操作とスレッドを実行可能にする操作とを同期
させることによって実施される。
ャは、レース条件を防止し、ロック競合を最小限にする
ことができると同時に、高優先度スレッドが可能な限り
迅速にディスパッチされるように保証することができ
る。本発明の好ましい実施態様は、スレッドをディスパ
ッチする操作とスレッドを実行可能にする操作とを同期
させることによって実施される。
【0024】
【発明の実施の形態】本発明は、マルチプロセッサ・ス
ケジューリング・システムであり、リアル・タイム・ア
プリケーションについて説明する。以下の説明では、本
発明をより綿密に説明することができるように多くの特
定の詳細を記載する。しかし、当業者なら、本発明はそ
れらの特定の詳細がなくても本発明を実施することがで
きることがわかるであろう。他の場合には、本発明が不
明瞭にならないように、公知の機構については詳述して
いない。
ケジューリング・システムであり、リアル・タイム・ア
プリケーションについて説明する。以下の説明では、本
発明をより綿密に説明することができるように多くの特
定の詳細を記載する。しかし、当業者なら、本発明はそ
れらの特定の詳細がなくても本発明を実施することがで
きることがわかるであろう。他の場合には、本発明が不
明瞭にならないように、公知の機構については詳述して
いない。
【0025】マルチプロセッサ・システムでは、基本的
に2つの資源割振り決定が行われる。1つは、コードと
データを物理メモリ内のどこに入れるかであり、もう一
つは各プロセスをどのプロセッサで実行するかである。
すなわち、割当て決定またはプロセッサ管理である。こ
れらの決定は、マルチプロセッサ・システムでは難しい
決定であり、マルチプロセッサ・システムではプロセッ
サ管理の最適化が重要である。
に2つの資源割振り決定が行われる。1つは、コードと
データを物理メモリ内のどこに入れるかであり、もう一
つは各プロセスをどのプロセッサで実行するかである。
すなわち、割当て決定またはプロセッサ管理である。こ
れらの決定は、マルチプロセッサ・システムでは難しい
決定であり、マルチプロセッサ・システムではプロセッ
サ管理の最適化が重要である。
【0026】割当て決定またはジョブおよびプロセッサ
のスケジューリングには、どのジョブにシステム資源を
めぐる競合を積極的に行わせるかを決定する高レベルス
ケジューリングまたはジョブ・スケジューリングと、ど
のプロセスにシステム資源をめぐる競合を行わせるかを
決定する中間レベルのスケジューリングと、ディスパッ
チャが行う低レベルのスケジューリングから成る多重レ
ベルスケジューリング方策が含まれる。ディスパッチャ
は、次に実行可能になったときにどの実行可能プロセス
をどのプロセッサに割り当てるかを決定する。
のスケジューリングには、どのジョブにシステム資源を
めぐる競合を積極的に行わせるかを決定する高レベルス
ケジューリングまたはジョブ・スケジューリングと、ど
のプロセスにシステム資源をめぐる競合を行わせるかを
決定する中間レベルのスケジューリングと、ディスパッ
チャが行う低レベルのスケジューリングから成る多重レ
ベルスケジューリング方策が含まれる。ディスパッチャ
は、次に実行可能になったときにどの実行可能プロセス
をどのプロセッサに割り当てるかを決定する。
【0027】本発明の好ましい実施形態では完全プリエ
ンプティブ(割込)・スケジューリング方式を使用す
る。このスケジューリング方式では、プロセッサは、現
在実行中のプロセスを中止し、他のより優先度の高いプ
ロセスを実行することができるようにする。割込には複
雑な切換えによるオーバーヘッドが伴うが、優先度の高
いプロセスが迅速なアテンションを必要とするシステム
では有用である。たとえばリアル・タイム・システムで
は、厳しいデッドラインを守れないと致命的な結果にな
る可能性があり、したがって、需要可能なサービス時間
を保証するのにプリエンプティブ・スケジューリングが
必要である。
ンプティブ(割込)・スケジューリング方式を使用す
る。このスケジューリング方式では、プロセッサは、現
在実行中のプロセスを中止し、他のより優先度の高いプ
ロセスを実行することができるようにする。割込には複
雑な切換えによるオーバーヘッドが伴うが、優先度の高
いプロセスが迅速なアテンションを必要とするシステム
では有用である。たとえばリアル・タイム・システムで
は、厳しいデッドラインを守れないと致命的な結果にな
る可能性があり、したがって、需要可能なサービス時間
を保証するのにプリエンプティブ・スケジューリングが
必要である。
【0028】本発明では、実行中のプロセスがブロック
されまたは割り込まれるたびに、プロセス・スケジュー
ラまたはディスパッチャがその機能を実行する。その目
的は、実行可能キューのセットから次に実行するプロセ
スを選択することである。ディスパッチャはオペレーテ
ィング・システム・カーネルに常駐し、実行可能キュー
を監視し、要求を処理してアプリケーションをロードす
る。これには、アプリケーションのすべてのタスクとス
レッドを作成し、メモリを確保し、コードとデータをメ
モリにロードする必要がある。アプリケーションが正常
にロードされて実行可能になったと見なされる前に、す
べての資源を確保する。したがって、ディスパッチャ
は、オペレーティング・システムのオーバーヘッドが最
小になるようにするためにかなり効率が高くなければな
らない。
されまたは割り込まれるたびに、プロセス・スケジュー
ラまたはディスパッチャがその機能を実行する。その目
的は、実行可能キューのセットから次に実行するプロセ
スを選択することである。ディスパッチャはオペレーテ
ィング・システム・カーネルに常駐し、実行可能キュー
を監視し、要求を処理してアプリケーションをロードす
る。これには、アプリケーションのすべてのタスクとス
レッドを作成し、メモリを確保し、コードとデータをメ
モリにロードする必要がある。アプリケーションが正常
にロードされて実行可能になったと見なされる前に、す
べての資源を確保する。したがって、ディスパッチャ
は、オペレーティング・システムのオーバーヘッドが最
小になるようにするためにかなり効率が高くなければな
らない。
【0029】マルチプロセッサ・システムでは、リアル
・タイム優先度スケジューリングは1つの制約、すなわ
ち各プロセッサに対して、そのプロセッサで実行可能な
スレッドよりも優先度が高いスレッドがどのキューにも
ないという制約を満たさなければならない。スループッ
トの観点から見ると、各プロセッサがそれ自体のディス
パッチ・キューを持っていて、それによってプロセッサ
間のロック競合が最小限になるのが最もよい。
・タイム優先度スケジューリングは1つの制約、すなわ
ち各プロセッサに対して、そのプロセッサで実行可能な
スレッドよりも優先度が高いスレッドがどのキューにも
ないという制約を満たさなければならない。スループッ
トの観点から見ると、各プロセッサがそれ自体のディス
パッチ・キューを持っていて、それによってプロセッサ
間のロック競合が最小限になるのが最もよい。
【0030】したがって、本発明のこの実施形態はプロ
セッサ自体のディスパッチ・キューに加えて、制限のな
い優先度のより高いリアル・タイム・スレッドのために
別個のグローバル・ディスパッチ・キューを維持するデ
ィスパッチャ・モデルを提案する。さらに、本発明のこ
の実施形態は、ディスパッチャが常に正しい決定を行う
ように保証するのではなく、選択検証方式を使用する。
この両方の特徴によって、本発明のこの実施形態は、ロ
ック競合を最小限にすると同時に、高優先度スレッドが
可能な限り迅速にディスパッチされるように保証する。
これは、スレッドをディスパッチする操作とスレッドを
実行可能にする操作とを同期させることによって実施さ
れる。本発明のこの実施形態のディスパッチャ・モデル
は、SunOS Solaris 2.5で実施され
る。
セッサ自体のディスパッチ・キューに加えて、制限のな
い優先度のより高いリアル・タイム・スレッドのために
別個のグローバル・ディスパッチ・キューを維持するデ
ィスパッチャ・モデルを提案する。さらに、本発明のこ
の実施形態は、ディスパッチャが常に正しい決定を行う
ように保証するのではなく、選択検証方式を使用する。
この両方の特徴によって、本発明のこの実施形態は、ロ
ック競合を最小限にすると同時に、高優先度スレッドが
可能な限り迅速にディスパッチされるように保証する。
これは、スレッドをディスパッチする操作とスレッドを
実行可能にする操作とを同期させることによって実施さ
れる。本発明のこの実施形態のディスパッチャ・モデル
は、SunOS Solaris 2.5で実施され
る。
【0031】本発明は、図3に図示するような汎用コン
ピュータで実施することができる。キーボード310と
マウス311が双方向システム・バス318に結合され
ている。キーボードとマウスは、ユーザ入力をコンピュ
ータ・システムに導入し、ユーザ入力をCPU313に
伝えるためのものである。図3のコンピュータ・システ
ムは、ビデオ・メモリ314と、メイン・メモリ315
と、大容量記憶装置312も備え、それらはすべてキー
ボード310、マウス311、およびCPU313と共
に双方向システム・バス318に結合されている。大容
量記憶装置312は、磁気、光、または光磁気記憶シス
テムなどの固定媒体と取外し可能媒体の両方またはその
他の任意の使用可能な大容量記憶技法を含むことができ
る。バス318は、たとえばビデオ・メモリ314また
はメイン・メモリ315をアドレスするための32本の
アドレス線を含む。システム・バス318は、たとえば
CPU313、メイン・メモリ315、ビデオ・メモリ
314、および大容量記憶装置312などの構成要素間
でデータを伝送する32ビット・データ・バスも含む。
あるいは、別々のデータ線とアドレス線の代わりに多重
化データ/アドレス線を使用することもできる。
ピュータで実施することができる。キーボード310と
マウス311が双方向システム・バス318に結合され
ている。キーボードとマウスは、ユーザ入力をコンピュ
ータ・システムに導入し、ユーザ入力をCPU313に
伝えるためのものである。図3のコンピュータ・システ
ムは、ビデオ・メモリ314と、メイン・メモリ315
と、大容量記憶装置312も備え、それらはすべてキー
ボード310、マウス311、およびCPU313と共
に双方向システム・バス318に結合されている。大容
量記憶装置312は、磁気、光、または光磁気記憶シス
テムなどの固定媒体と取外し可能媒体の両方またはその
他の任意の使用可能な大容量記憶技法を含むことができ
る。バス318は、たとえばビデオ・メモリ314また
はメイン・メモリ315をアドレスするための32本の
アドレス線を含む。システム・バス318は、たとえば
CPU313、メイン・メモリ315、ビデオ・メモリ
314、および大容量記憶装置312などの構成要素間
でデータを伝送する32ビット・データ・バスも含む。
あるいは、別々のデータ線とアドレス線の代わりに多重
化データ/アドレス線を使用することもできる。
【0032】メイン・メモリ315は、ダイナミック・
ランダム・アクセス・メモリ(DRAM)から成る。ビ
デオ・メモリ314は、デュアル・ポート・ビデオ・ラ
ンダム・アクセス・メモリである。ビデオ・メモリ31
4の一方のポートはビデオ増幅器316に結合されてい
る。ビデオ増幅器316は陰極線管(CRT)ラスタ・
モニタ317を駆動するために使用される。ビデオ増幅
器316は、当技術分野で公知であり、任意の適合する
手段によって実施することができる。この回路は、ビデ
オ・メモリ314に記憶されている画素データを、モニ
タ317で使用するに適したラスタ信号に変換する。モ
ニタ317は、グラフィック・イメージを表示するのに
適するタイプのモニタである。
ランダム・アクセス・メモリ(DRAM)から成る。ビ
デオ・メモリ314は、デュアル・ポート・ビデオ・ラ
ンダム・アクセス・メモリである。ビデオ・メモリ31
4の一方のポートはビデオ増幅器316に結合されてい
る。ビデオ増幅器316は陰極線管(CRT)ラスタ・
モニタ317を駆動するために使用される。ビデオ増幅
器316は、当技術分野で公知であり、任意の適合する
手段によって実施することができる。この回路は、ビデ
オ・メモリ314に記憶されている画素データを、モニ
タ317で使用するに適したラスタ信号に変換する。モ
ニタ317は、グラフィック・イメージを表示するのに
適するタイプのモニタである。
【0033】上述のコンピュータ・システムは例示的な
ものに過ぎない。本発明は、どのようなタイプのコンピ
ュータ・システムまたはプログラミングまたは処理環境
でも実施することができる。
ものに過ぎない。本発明は、どのようなタイプのコンピ
ュータ・システムまたはプログラミングまたは処理環境
でも実施することができる。
【0034】図4(A)に、本発明の好ましい実施形態
による複数ディスパッチャ・キュー・システムを示す。
図4(A)を参照すると、この複数ディスパッチャ・キ
ュー・システムは、プロセッサ1、2、...、Nのた
めの別々のディスパッチャ・キュー401、40
2、...、403と、その他に、高優先度リアル・タ
イム・スレッドを保持するために使用されるグローバル
高優先度リアル・タイム・キュー404を備える。各デ
ィスパッチ・キューはそれに関連づけられたそれ自体の
スケジューリング・ロックを持ち、それによってすべて
のスケジューリング操作を保護する。そのため、キュー
からスレッドをディスパッチしようとするプロセッサは
そのキューからスレッドを取り出す前にそのキューのロ
ックを獲得する必要がある。したがって、すべてのプロ
セッサのための単一のディスパッチ・キューに単一のス
ケジュール・ロックを使用する従来技術のスケジューラ
とは異なり、複数のディスパッチ・キューのために複数
のスケジュール・ロックを使用する本発明ではロック競
合が減少する。
による複数ディスパッチャ・キュー・システムを示す。
図4(A)を参照すると、この複数ディスパッチャ・キ
ュー・システムは、プロセッサ1、2、...、Nのた
めの別々のディスパッチャ・キュー401、40
2、...、403と、その他に、高優先度リアル・タ
イム・スレッドを保持するために使用されるグローバル
高優先度リアル・タイム・キュー404を備える。各デ
ィスパッチ・キューはそれに関連づけられたそれ自体の
スケジューリング・ロックを持ち、それによってすべて
のスケジューリング操作を保護する。そのため、キュー
からスレッドをディスパッチしようとするプロセッサは
そのキューからスレッドを取り出す前にそのキューのロ
ックを獲得する必要がある。したがって、すべてのプロ
セッサのための単一のディスパッチ・キューに単一のス
ケジュール・ロックを使用する従来技術のスケジューラ
とは異なり、複数のディスパッチ・キューのために複数
のスケジュール・ロックを使用する本発明ではロック競
合が減少する。
【0035】図4(A)の好ましい実施形態では、ディ
スパッチャはディスパッチ優先度によって索引づけされ
た1配列のディスパッチ・キューを使用する。また、ス
レッドが実行可能になるとそのスレッドはそのディスパ
ッチ優先度に対応するディスパッチ・キューに(典型的
には最後に)入れられる。しかし、FIFOスレッド・
キューイングの代わりに他のキューイング方法を使用す
ることもできる。リアル・タイム・アプリケーションの
スケジューリング要件に応じて、たとえばLIFO(後
入れ先出し)、SJF(最短ジョブ優先)、SRT(最
短残り時間)またはその他の高度なキューイング機構を
使用することができる。
スパッチャはディスパッチ優先度によって索引づけされ
た1配列のディスパッチ・キューを使用する。また、ス
レッドが実行可能になるとそのスレッドはそのディスパ
ッチ優先度に対応するディスパッチ・キューに(典型的
には最後に)入れられる。しかし、FIFOスレッド・
キューイングの代わりに他のキューイング方法を使用す
ることもできる。リアル・タイム・アプリケーションの
スケジューリング要件に応じて、たとえばLIFO(後
入れ先出し)、SJF(最短ジョブ優先)、SRT(最
短残り時間)またはその他の高度なキューイング機構を
使用することができる。
【0036】図4(B)に、図4(A)のプロセッサ1
のためにディスパッチ・キューを使用するディスパッチ
・キュー構造の詳細を図示する。図4(B)で、何らか
の優先度値を持つスレッド1、2、および3がディスパ
ッチ・キューに入れられている。スレッド1はキューの
先頭にあり、FIFOシステムを適用する場合には、そ
の優先度カテゴリ内で実行のためにキューからディスパ
ッチされる最初のスレッドとなる。図4(B)のスレッ
ドは、それらのスレッドに関連づけられたプロセッサ・
アフィニティ特性も有する。
のためにディスパッチ・キューを使用するディスパッチ
・キュー構造の詳細を図示する。図4(B)で、何らか
の優先度値を持つスレッド1、2、および3がディスパ
ッチ・キューに入れられている。スレッド1はキューの
先頭にあり、FIFOシステムを適用する場合には、そ
の優先度カテゴリ内で実行のためにキューからディスパ
ッチされる最初のスレッドとなる。図4(B)のスレッ
ドは、それらのスレッドに関連づけられたプロセッサ・
アフィニティ特性も有する。
【0037】プロセッサ・アフィニティは、スレッドを
どのプロセッサで実行することができるかを決定するた
めに使用される。スレッドのほとんどはすべてのプロセ
ッサで実行可能であり、したがってそのようにラベルづ
けされる。しかし、特定のプロセッサだけで実行可能で
あって、他のプロセッサでは実行することができないス
レッドがある。このスレッドには、その特定の指定プロ
セッサに対するプロセッサ・アフィニティが与えられ
る。スレッドが特定のプロセッサに対するアフィニティ
を持っている場合、そのスレッドは他のプロセッサによ
って奪われたり、他のプロセッサに移行したりすること
はできない。たとえば図4(B)のスレッド2はプロセ
ッサ1に対するプロセッサアフィニティを持ち、プロセ
ッサ1でのみ実行可能である。したがって、1つのプロ
セッサでのみ実行可能なスレッド、すなわち制限された
スレッドは、制限されたプロセッサのディスパッチ・キ
ューにのみ入れられ、そのプロセッサによってのみディ
スパッチされる。
どのプロセッサで実行することができるかを決定するた
めに使用される。スレッドのほとんどはすべてのプロセ
ッサで実行可能であり、したがってそのようにラベルづ
けされる。しかし、特定のプロセッサだけで実行可能で
あって、他のプロセッサでは実行することができないス
レッドがある。このスレッドには、その特定の指定プロ
セッサに対するプロセッサ・アフィニティが与えられ
る。スレッドが特定のプロセッサに対するアフィニティ
を持っている場合、そのスレッドは他のプロセッサによ
って奪われたり、他のプロセッサに移行したりすること
はできない。たとえば図4(B)のスレッド2はプロセ
ッサ1に対するプロセッサアフィニティを持ち、プロセ
ッサ1でのみ実行可能である。したがって、1つのプロ
セッサでのみ実行可能なスレッド、すなわち制限された
スレッドは、制限されたプロセッサのディスパッチ・キ
ューにのみ入れられ、そのプロセッサによってのみディ
スパッチされる。
【0038】プロセッサが他のプロセッサからスレッド
を奪うことができるためには、そのスレッドは奪う側の
プロセッサで実行可能でなければならない。たとえば、
図4(B)を参照すると、スレッド1および3は、プロ
セッサ1以外のプロセッサが奪い、キューから取り出
し、実行することができる。
を奪うことができるためには、そのスレッドは奪う側の
プロセッサで実行可能でなければならない。たとえば、
図4(B)を参照すると、スレッド1および3は、プロ
セッサ1以外のプロセッサが奪い、キューから取り出
し、実行することができる。
【0039】図5に、本発明の好ましい実施形態による
マルチプロセッサ・システムの構成を示す。各プロセッ
サ1、2、...、Nは、図5に示すようにそれ自体の
スケジューラとディスパッチ・キューを持つ。たとえ
ば、プロセッサ1はバスを介してそれに結合されたスケ
ジューラ505とディスパッチ・キュー509を持つ。
システム・プロセッサで実行するためにいつどのスレッ
ドをディスパッチするかは、スケジューラまたはディス
パッチャが決定する。スケジューラ1、2、...、N
と、したがってプロセッサ1、2、...Nは、バスを
介してグローバル高優先度リアル・タイム・キュー50
1および共有メモリ503に結合されている。スレッド
は、すべてのプロセッサによって共有される同期オブジ
ェクトを使用して相互作用することができる。
マルチプロセッサ・システムの構成を示す。各プロセッ
サ1、2、...、Nは、図5に示すようにそれ自体の
スケジューラとディスパッチ・キューを持つ。たとえ
ば、プロセッサ1はバスを介してそれに結合されたスケ
ジューラ505とディスパッチ・キュー509を持つ。
システム・プロセッサで実行するためにいつどのスレッ
ドをディスパッチするかは、スケジューラまたはディス
パッチャが決定する。スケジューラ1、2、...、N
と、したがってプロセッサ1、2、...Nは、バスを
介してグローバル高優先度リアル・タイム・キュー50
1および共有メモリ503に結合されている。スレッド
は、すべてのプロセッサによって共有される同期オブジ
ェクトを使用して相互作用することができる。
【0040】図5の各プロセッサには、様々な目的に使
用される1組のスケジューリング変数が関連づけられて
いる。たとえば、変数cpu_runrunおよびcp
u_kprunrunは、現行スレッドの割込に対する
要求を記録し、スケジューリングの決定を行うために使
用される。その他の変数としては、cpu_dispt
hreadとcpu_threadがある。変数cpu
_threadは、プロセッサで現在実行中のスレッド
を指す。変数cpu_dispthreadは、他のプ
ロセッサと通信するために使用され、プロセッサでのデ
ィスパッチのために最後に選択されたスレッドの識別情
報を記録する。
用される1組のスケジューリング変数が関連づけられて
いる。たとえば、変数cpu_runrunおよびcp
u_kprunrunは、現行スレッドの割込に対する
要求を記録し、スケジューリングの決定を行うために使
用される。その他の変数としては、cpu_dispt
hreadとcpu_threadがある。変数cpu
_threadは、プロセッサで現在実行中のスレッド
を指す。変数cpu_dispthreadは、他のプ
ロセッサと通信するために使用され、プロセッサでのデ
ィスパッチのために最後に選択されたスレッドの識別情
報を記録する。
【0041】変数cpu_runrunまたはcpu_
kprunrunは、他のプロセッサが新しいスレッド
をプロセッサのキューに入れて、そのプロセッサがその
プロセッサのキューに入れられたばかりの新しいスレッ
ドよりも優先度の低いスレッドを実行していることがわ
かった場合に、そのプロセッサのために他のプロセッサ
によって設定される。変数cpu_kprunrunは
変数cpu_runrunよりも優先度が高い。変数c
pu_runrunまたはcpu_kprunrunが
設定されると、プロセッサは現行スレッドに割り込んで
新しいより優先度の高いスレッドを処理するようにスケ
ジューリング決定を行う必要がある。
kprunrunは、他のプロセッサが新しいスレッド
をプロセッサのキューに入れて、そのプロセッサがその
プロセッサのキューに入れられたばかりの新しいスレッ
ドよりも優先度の低いスレッドを実行していることがわ
かった場合に、そのプロセッサのために他のプロセッサ
によって設定される。変数cpu_kprunrunは
変数cpu_runrunよりも優先度が高い。変数c
pu_runrunまたはcpu_kprunrunが
設定されると、プロセッサは現行スレッドに割り込んで
新しいより優先度の高いスレッドを処理するようにスケ
ジューリング決定を行う必要がある。
【0042】図5のどのプロセッサも、実行のためにス
レッドをシステム内のどのキューにでも入れることがで
きる。たとえば、プロセッサ1は、新しいスレッドが特
定のプロセッサ・アフィニティ特性を持っていない限
り、新しいスレッドをそれ自体のキュー、グローバル高
優先度リアル・タイム・キュー、または他のプロセッサ
のキューに入れることができる。
レッドをシステム内のどのキューにでも入れることがで
きる。たとえば、プロセッサ1は、新しいスレッドが特
定のプロセッサ・アフィニティ特性を持っていない限
り、新しいスレッドをそれ自体のキュー、グローバル高
優先度リアル・タイム・キュー、または他のプロセッサ
のキューに入れることができる。
【0043】図5には、単一のバスを介して接続された
マルチプロセッサが図示されているが、本発明の実施形
態では他の代替アーキテクチャも当然可能である。たと
えば、マルチプロセッサ・システムのパフォーマンスを
向上させるために、相互接続網にマルチバス・マルチプ
ロセッサ構成またはクロスバー・スイッチ・システムを
使用することもできる。
マルチプロセッサが図示されているが、本発明の実施形
態では他の代替アーキテクチャも当然可能である。たと
えば、マルチプロセッサ・システムのパフォーマンスを
向上させるために、相互接続網にマルチバス・マルチプ
ロセッサ構成またはクロスバー・スイッチ・システムを
使用することもできる。
【0044】プロセッサ上でスレッドをディスパッチま
たはスケジュールするには、プロセッサは実行するスレ
ッドを見つける必要がある。図6に、選択および検証方
式を使用してプロセッサ上で実行するスレッドをスケジ
ュールするディスパッチャについて説明するフローチャ
ートを示す。
たはスケジュールするには、プロセッサは実行するスレ
ッドを見つける必要がある。図6に、選択および検証方
式を使用してプロセッサ上で実行するスレッドをスケジ
ュールするディスパッチャについて説明するフローチャ
ートを示す。
【0045】図6を参照すると、ステップ601で、次
のスレッドの実行が可能になったプロセッサが、高優先
度リアル・タイム・キュー内に項目がないかどうかを調
べることによって、実行するスレッドの選択を開始す
る。図7に、ステップ601のスレッド選択プロセスを
詳述するフローチャートを示す。
のスレッドの実行が可能になったプロセッサが、高優先
度リアル・タイム・キュー内に項目がないかどうかを調
べることによって、実行するスレッドの選択を開始す
る。図7に、ステップ601のスレッド選択プロセスを
詳述するフローチャートを示す。
【0046】キュー内の優先度の検査では、各プロセッ
サに関連づけられたローカル変数を調べる必要があり、
ロックは不要である。たとえば、優先度変数disp_
maxrunpriを使用してキュー内の最高優先度レ
ベルを示すことができる。その後で、ミスコミュニケー
ションを防ぐためにデッカーのアルゴリズムなどの何ら
かの適切な同期アルゴリズムを使用してプロセッサ・デ
ィスパッチ・キューとリアル・タイム・キューの両方で
変数disp_maxrunpriを調べることができ
る。しかし、本発明の他の実施形態ではその他の任意の
適合する同期アルゴリズムを使用することができる。調
べる優先度変数は、各ディスパッチ・キューで維持され
るアトミック変数であるため、誤ったキューの選択によ
って生じるスケジューリング誤りは検証ステップで見つ
けられる。しかし、選択したキューからスレッドを取り
出すにはスケジュール・ロックが必要である。
サに関連づけられたローカル変数を調べる必要があり、
ロックは不要である。たとえば、優先度変数disp_
maxrunpriを使用してキュー内の最高優先度レ
ベルを示すことができる。その後で、ミスコミュニケー
ションを防ぐためにデッカーのアルゴリズムなどの何ら
かの適切な同期アルゴリズムを使用してプロセッサ・デ
ィスパッチ・キューとリアル・タイム・キューの両方で
変数disp_maxrunpriを調べることができ
る。しかし、本発明の他の実施形態ではその他の任意の
適合する同期アルゴリズムを使用することができる。調
べる優先度変数は、各ディスパッチ・キューで維持され
るアトミック変数であるため、誤ったキューの選択によ
って生じるスケジューリング誤りは検証ステップで見つ
けられる。しかし、選択したキューからスレッドを取り
出すにはスケジュール・ロックが必要である。
【0047】次に図7を参照すると、決定ブロック70
1でリアル・タイム・キューがそれ自体のディスパッチ
・キューよりも優先度の高いスレッドを持っている場
合、プロセッサ・ディスパッチャはステップ702でリ
アル・タイム・キューのロックを獲得し、図4のキュー
404のようなリアル・タイム・キューから最高の優先
度のスレッドを取り出し、そのスレッドの実行に移る。
1でリアル・タイム・キューがそれ自体のディスパッチ
・キューよりも優先度の高いスレッドを持っている場
合、プロセッサ・ディスパッチャはステップ702でリ
アル・タイム・キューのロックを獲得し、図4のキュー
404のようなリアル・タイム・キューから最高の優先
度のスレッドを取り出し、そのスレッドの実行に移る。
【0048】次のスレッドを取り出せるようになったプ
ロセッサは、それ自体のキューを調べる前にまずリアル
・タイム・キューを調べ、それによってそのプロセッサ
自体のキュー内のスレッドの前により優先度の高いリア
ル・タイム・キュー内のスレッドを処理して、リアル・
タイム・スレッドに可能な最も速いサービスを提供す
る。決定ブロック701で、リアル・タイム・キューに
実行可能なより優先度の高いスレッドがなくなったと判
断された場合、プロセッサはステップ703に進んでそ
れ自体のディスパッチ・キューに実行可能なスレッドが
ないか調べる。それ自体のキューが空でない場合、プロ
セッサはステップ704に進んでそれ自体のキューのロ
ックを獲得し、それ自体のキューから最高の優先度のス
レッドを取り出す。
ロセッサは、それ自体のキューを調べる前にまずリアル
・タイム・キューを調べ、それによってそのプロセッサ
自体のキュー内のスレッドの前により優先度の高いリア
ル・タイム・キュー内のスレッドを処理して、リアル・
タイム・スレッドに可能な最も速いサービスを提供す
る。決定ブロック701で、リアル・タイム・キューに
実行可能なより優先度の高いスレッドがなくなったと判
断された場合、プロセッサはステップ703に進んでそ
れ自体のディスパッチ・キューに実行可能なスレッドが
ないか調べる。それ自体のキューが空でない場合、プロ
セッサはステップ704に進んでそれ自体のキューのロ
ックを獲得し、それ自体のキューから最高の優先度のス
レッドを取り出す。
【0049】プロセッサ自体のディスパッチ・キューが
空の場合、プロセッサはステップ705に進み、他のプ
ロセッサのディスパッチ・キューを調べて実行可能スレ
ッドを見つける。他のいずれかのディスパッチ・キュー
内に特定のプロセッサ・アフィニティを持たない実行可
能スレッドがある場合、プロセッサはそのディスパッチ
・キューのスケジューリング・ロックを獲得し、ステッ
プ706に進んでその別のプロセッサからスレッドを奪
う。
空の場合、プロセッサはステップ705に進み、他のプ
ロセッサのディスパッチ・キューを調べて実行可能スレ
ッドを見つける。他のいずれかのディスパッチ・キュー
内に特定のプロセッサ・アフィニティを持たない実行可
能スレッドがある場合、プロセッサはそのディスパッチ
・キューのスケジューリング・ロックを獲得し、ステッ
プ706に進んでその別のプロセッサからスレッドを奪
う。
【0050】決定ブロック705でプロセッサが空でな
いディスパッチ・キューまたはその中の実行可能スレッ
ドを見つけることができなかった場合、プロセッサはス
テップ707に進んで遊休スレッドを選択し、それによ
ってスレッド選択プロセスを完了する。遊休スレッドと
は、どのディスパッチ優先度よりも優先度が低く、ディ
スパッチ・キューには決して現れない特別なスレッドで
ある。実行可能な他のスレッドがない場合は常に遊休ス
レッドが実行のために選択され、他のスレッドが実行可
能になると常に切り替わる。
いディスパッチ・キューまたはその中の実行可能スレッ
ドを見つけることができなかった場合、プロセッサはス
テップ707に進んで遊休スレッドを選択し、それによ
ってスレッド選択プロセスを完了する。遊休スレッドと
は、どのディスパッチ優先度よりも優先度が低く、ディ
スパッチ・キューには決して現れない特別なスレッドで
ある。実行可能な他のスレッドがない場合は常に遊休ス
レッドが実行のために選択され、他のスレッドが実行可
能になると常に切り替わる。
【0051】したがって、プロセッサはシステム内の高
優先度キュー、そのプロセッサ自体のディスパッチ・キ
ュー、他のプロセッサのディスパッチ・キューのうちの
いずれか1つから実行するスレッドを選択することがで
きる。しかし、それ自体のキューまたは他のディスパッ
チ・キューを調べる前にまず先に404のような高優先
度リアル・タイム・キューを調べることによって、プロ
セッサはリアル・タイム・キューに他のディスパッチ・
キューよりも高い優先度を与える。このグローバル優先
度マッピングを図8に示す。
優先度キュー、そのプロセッサ自体のディスパッチ・キ
ュー、他のプロセッサのディスパッチ・キューのうちの
いずれか1つから実行するスレッドを選択することがで
きる。しかし、それ自体のキューまたは他のディスパッ
チ・キューを調べる前にまず先に404のような高優先
度リアル・タイム・キューを調べることによって、プロ
セッサはリアル・タイム・キューに他のディスパッチ・
キューよりも高い優先度を与える。このグローバル優先
度マッピングを図8に示す。
【0052】図8に示すように、タイムシェアリング・
スレッドは、ジョブ・スケジューリングまたはディスパ
ッチで最低の優先度が与えられている。タイムシェアリ
ング・スレッドはタイム・スライス技法に支えられてお
り、1タイム・スライス当たり数百ミリ秒の割合で動的
にスケジュールされる。タイムシェアリング・スケジュ
ーラは、すべてのスレッドに等しく実行の機会を与える
のに十分であることが多いラウンドロビン方式でコンテ
キストを切り換える。タイムシェアリング・スレッドよ
りも優先度の高いシステム・スレッドは、特別なシステ
ム・スレッドと割込みスレッドを含む。割込みスレッド
には常にシステム内で最高の優先度が与えられる。
スレッドは、ジョブ・スケジューリングまたはディスパ
ッチで最低の優先度が与えられている。タイムシェアリ
ング・スレッドはタイム・スライス技法に支えられてお
り、1タイム・スライス当たり数百ミリ秒の割合で動的
にスケジュールされる。タイムシェアリング・スケジュ
ーラは、すべてのスレッドに等しく実行の機会を与える
のに十分であることが多いラウンドロビン方式でコンテ
キストを切り換える。タイムシェアリング・スレッドよ
りも優先度の高いシステム・スレッドは、特別なシステ
ム・スレッドと割込みスレッドを含む。割込みスレッド
には常にシステム内で最高の優先度が与えられる。
【0053】リアル・タイム・スレッドは、図8で割込
みスレッドとシステム・スレッドの間に位置する。リア
ル・タイム・スレッドは、厳密にその優先度とそれに付
随する時間量とに基づいてスケジュールされる。スレッ
ドに時間量またはタイム・スライスを割り当てて、その
スレッドを実行することができるプロセッサ時間の長さ
を制限する。スレッドがその時間量が満了する前に完了
しない場合には、そのスレッドは割り込まれて次に待っ
ている最高の優先度のスレッドがディスパッチされて実
行される。たとえば、無限の時間量を持つリアル・タイ
ム・スレッドはそれが終了するか、ブロックするかまた
は割り込まれるまで実行される。
みスレッドとシステム・スレッドの間に位置する。リア
ル・タイム・スレッドは、厳密にその優先度とそれに付
随する時間量とに基づいてスケジュールされる。スレッ
ドに時間量またはタイム・スライスを割り当てて、その
スレッドを実行することができるプロセッサ時間の長さ
を制限する。スレッドがその時間量が満了する前に完了
しない場合には、そのスレッドは割り込まれて次に待っ
ている最高の優先度のスレッドがディスパッチされて実
行される。たとえば、無限の時間量を持つリアル・タイ
ム・スレッドはそれが終了するか、ブロックするかまた
は割り込まれるまで実行される。
【0054】図8の異なる優先度領域のためにラインを
分割するときにどのような優先度レベルを使用すること
ができるか、したがってどのような優先度スレッドにた
とえばグローバル・リアル・タイム・キューに入る資格
を与えるかを決定する基準は、いくつかの要因を考慮す
ることによって設定することができる。たとえば、リア
ル・タイム・キュー内のスレッドは応答性のために最適
化されるのに対し、リアル・タイム・キューに入ってい
ないスレッドはスループットのために最適化され、単位
時間当たりに実行される命令数が最大化される。
分割するときにどのような優先度レベルを使用すること
ができるか、したがってどのような優先度スレッドにた
とえばグローバル・リアル・タイム・キューに入る資格
を与えるかを決定する基準は、いくつかの要因を考慮す
ることによって設定することができる。たとえば、リア
ル・タイム・キュー内のスレッドは応答性のために最適
化されるのに対し、リアル・タイム・キューに入ってい
ないスレッドはスループットのために最適化され、単位
時間当たりに実行される命令数が最大化される。
【0055】図6に戻ると、ステップ601で実行する
候補スレッドを選択した後、プロセッサはステップ60
2に進み、ローカル・プロセッサ変数を設定して(たと
えば変数cpu_dispthreadを設定して)最
新のスレッド優先度を示すことによって、選択した候補
スレッドを実行するという仮通知を他のプロセッサにブ
ロードキャストした後、ステップ601で獲得したスケ
ジュール・ロックを解放する。
候補スレッドを選択した後、プロセッサはステップ60
2に進み、ローカル・プロセッサ変数を設定して(たと
えば変数cpu_dispthreadを設定して)最
新のスレッド優先度を示すことによって、選択した候補
スレッドを実行するという仮通知を他のプロセッサにブ
ロードキャストした後、ステップ601で獲得したスケ
ジュール・ロックを解放する。
【0056】ステップ603で、プロセッサはそのプロ
セッサがたとえばcpu_runrun変数およびcp
u_kprunrun変数をクリアすることによって、
再スケジュールしなければならないという通知をすべて
クリアする。しかし、プロセッサがスレッド選択プロセ
スを行っていた間に他のいずれかのプロセッサによって
グローバル・リアル・タイム・キューまたはそのプロセ
ッサ自体のキューに新たなより優先度の高いスレッドが
入れられている可能性があるため、プロセッサは選択し
た候補スレッドがそのプロセッサが取ることができる最
高優先度の実行可能スレッドであることをまだ確定する
ことができない。このため、選択した候補スレッドが最
善の選択であることをスケジューラが検証することがで
きない限り、従来の技術の項で前述したようなレース条
件が生じる。
セッサがたとえばcpu_runrun変数およびcp
u_kprunrun変数をクリアすることによって、
再スケジュールしなければならないという通知をすべて
クリアする。しかし、プロセッサがスレッド選択プロセ
スを行っていた間に他のいずれかのプロセッサによって
グローバル・リアル・タイム・キューまたはそのプロセ
ッサ自体のキューに新たなより優先度の高いスレッドが
入れられている可能性があるため、プロセッサは選択し
た候補スレッドがそのプロセッサが取ることができる最
高優先度の実行可能スレッドであることをまだ確定する
ことができない。このため、選択した候補スレッドが最
善の選択であることをスケジューラが検証することがで
きない限り、従来の技術の項で前述したようなレース条
件が生じる。
【0057】したがって、ステップ604で、選択した
スレッドが可能な最善の選択であるかどうかに関する検
証を行う。このためには、高優先度リアル・タイム・キ
ューとそれ自体のキューに戻って、より優先度の高いス
レッドが高優先度リアル・タイム・キューまたはそれ自
体のキューに新たに入れられていないかどうかを調べる
必要がある。選択した候補スレッドがどちらのキュー内
の他のどのスレッドよりも優先度が高い場合、プロセッ
サはステップ605に進み、選択した候補スレッドを実
行する。
スレッドが可能な最善の選択であるかどうかに関する検
証を行う。このためには、高優先度リアル・タイム・キ
ューとそれ自体のキューに戻って、より優先度の高いス
レッドが高優先度リアル・タイム・キューまたはそれ自
体のキューに新たに入れられていないかどうかを調べる
必要がある。選択した候補スレッドがどちらのキュー内
の他のどのスレッドよりも優先度が高い場合、プロセッ
サはステップ605に進み、選択した候補スレッドを実
行する。
【0058】しかし、いずれかのキュー内で新たなより
優先度の高いスレッドが見つかった場合は、選択側のプ
ロセッサは選択した候補スレッドを、キュー格納アルゴ
リズムに基づいていずれかのキュー(おそらくはそのス
レッドを取り出したキュー)に戻し、ステップ601に
戻って改めてスレッド選択プロセスを開始する。
優先度の高いスレッドが見つかった場合は、選択側のプ
ロセッサは選択した候補スレッドを、キュー格納アルゴ
リズムに基づいていずれかのキュー(おそらくはそのス
レッドを取り出したキュー)に戻し、ステップ601に
戻って改めてスレッド選択プロセスを開始する。
【0059】したがって、本発明のこの実施形態の選択
および検証方式は、最終選択スレッドが、プロセッサが
実行のために選択することができる最高の優先度を実際
に待つように保証する。また、従来の技術の項で前述し
たレース問題もこれで防止され、システム内でより優先
度の高いスレッドが、ディスパッチ待ち時間が最小のリ
アル・タイム・サービスを受けるように保証される。
および検証方式は、最終選択スレッドが、プロセッサが
実行のために選択することができる最高の優先度を実際
に待つように保証する。また、従来の技術の項で前述し
たレース問題もこれで防止され、システム内でより優先
度の高いスレッドが、ディスパッチ待ち時間が最小のリ
アル・タイム・サービスを受けるように保証される。
【0060】図9にスレッドを実行可能にしているプロ
セッサを説明しているフローチャートを示す。ステップ
901でそのスレッド用のプロセッサが選択され、決定
ブロック901で、スレッドが拘束されているかどうか
が判断される。スレッドが拘束されている場合、ステッ
プ902でスレッドは選択されたプロセッサのキューに
入れられる。スレッドが拘束されていない場合、決定ブ
ロック903でスレッドがリアル・タイム優先度を持っ
ているかどうかが判断される。リアル・タイム・スレッ
ドは、スレッドのディスパッチにおいてシステムの応答
性の方がスループットよりも重要である十分な優先度を
持っているスレッドである。
セッサを説明しているフローチャートを示す。ステップ
901でそのスレッド用のプロセッサが選択され、決定
ブロック901で、スレッドが拘束されているかどうか
が判断される。スレッドが拘束されている場合、ステッ
プ902でスレッドは選択されたプロセッサのキューに
入れられる。スレッドが拘束されていない場合、決定ブ
ロック903でスレッドがリアル・タイム優先度を持っ
ているかどうかが判断される。リアル・タイム・スレッ
ドは、スレッドのディスパッチにおいてシステムの応答
性の方がスループットよりも重要である十分な優先度を
持っているスレッドである。
【0061】リアル・タイム・スレッドを区別する基準
として所定の閾値を使用することができる。たとえば好
ましい実施形態では変数kppreemptpriを閾
値として使用して、リアル・タイム・スレッドを判断す
る。変数kppreemptpriは、システム・アプ
リケーションに応じて任意の適切な値に設定することが
できる。したがって、スレッドが拘束されておらず、そ
の優先度がkppreemptpriより上の場合、そ
のスレッドはステップ904で高優先度リアル・タイム
・キューに入れられる。ステップ905で、スレッドを
スケジュールするためのプロセッサを選択してからステ
ップ907に進む。ステップ903で、スレッドがkp
preemptpriよりも下の優先度を持っている場
合、プロセッサはステップ906に進み、そのスレッド
が最後に実行されていたプロセッサにスレッドを入れ
て、ステップ907に進む。
として所定の閾値を使用することができる。たとえば好
ましい実施形態では変数kppreemptpriを閾
値として使用して、リアル・タイム・スレッドを判断す
る。変数kppreemptpriは、システム・アプ
リケーションに応じて任意の適切な値に設定することが
できる。したがって、スレッドが拘束されておらず、そ
の優先度がkppreemptpriより上の場合、そ
のスレッドはステップ904で高優先度リアル・タイム
・キューに入れられる。ステップ905で、スレッドを
スケジュールするためのプロセッサを選択してからステ
ップ907に進む。ステップ903で、スレッドがkp
preemptpriよりも下の優先度を持っている場
合、プロセッサはステップ906に進み、そのスレッド
が最後に実行されていたプロセッサにスレッドを入れ
て、ステップ907に進む。
【0062】図10に、図9のプロセッサ選択ステップ
905を詳細に示す。ステップ10001で、「最善の
プロセッサ」が、スレッドが最後に実行されたプロセッ
サに設定される。次にステップ1002で、システム内
の各プロセッサはそのプロセッサの現行スレッドが挿入
されるスレッドよりも優先度が低いスレッドであるかど
うかを判断する。その現行スレッドの方が優先度が高い
場合、プロセッサはステップ1005に進む。そうでな
い場合は、ステップ1003でプロセッサの現行スレッ
ドが「最善のプロセッサ」上のスレッドよりも優先度が
低いスレッドであるかどうかを判断する。現行スレッド
の方が優先度が低い場合は、ステップ1004で「最善
のプロセッサ」が現行プロセッサに等しく設定される。
ステップ1005で、「最善のプロセッサ」が、挿入す
るスレッドをスケジュールする目標プロセッサとして選
択される。
905を詳細に示す。ステップ10001で、「最善の
プロセッサ」が、スレッドが最後に実行されたプロセッ
サに設定される。次にステップ1002で、システム内
の各プロセッサはそのプロセッサの現行スレッドが挿入
されるスレッドよりも優先度が低いスレッドであるかど
うかを判断する。その現行スレッドの方が優先度が高い
場合、プロセッサはステップ1005に進む。そうでな
い場合は、ステップ1003でプロセッサの現行スレッ
ドが「最善のプロセッサ」上のスレッドよりも優先度が
低いスレッドであるかどうかを判断する。現行スレッド
の方が優先度が低い場合は、ステップ1004で「最善
のプロセッサ」が現行プロセッサに等しく設定される。
ステップ1005で、「最善のプロセッサ」が、挿入す
るスレッドをスケジュールする目標プロセッサとして選
択される。
【0063】図9に戻って、スレッドを実行する目標プ
ロセッサが選択された後、決定ブロック907でスレッ
ドがプロセッサが処理していた最後のスレッドよりも高
い優先度を持っているかどうかが判断される。スレッド
の優先度がより高い場合、ステップ908で何らかのロ
ーカル変数、たとえばcpu_runrun変数および
cpu_kprunrun変数を設定することによって
プロセッサに通知される。ステップ907でスレッドの
優先度がより高くない場合、スケジューリング・プロセ
ッサはステップ909に進む。
ロセッサが選択された後、決定ブロック907でスレッ
ドがプロセッサが処理していた最後のスレッドよりも高
い優先度を持っているかどうかが判断される。スレッド
の優先度がより高い場合、ステップ908で何らかのロ
ーカル変数、たとえばcpu_runrun変数および
cpu_kprunrun変数を設定することによって
プロセッサに通知される。ステップ907でスレッドの
優先度がより高くない場合、スケジューリング・プロセ
ッサはステップ909に進む。
【0064】本明細書で説明した特定の実施形態は、本
発明を限定しないものと理解される。本発明は、プリエ
ンプティブ優先度スケジューリング・システムを使用す
るどのようなマルチプロセッサ・システムと組み合わせ
ても実施することができる。
発明を限定しないものと理解される。本発明は、プリエ
ンプティブ優先度スケジューリング・システムを使用す
るどのようなマルチプロセッサ・システムと組み合わせ
ても実施することができる。
【0065】以上、リアル・タイム・アプリケーション
に適したマルチプロセッサ・システム用のプロセス・ス
ケジューラまたはディスパッチャについて説明した。
に適したマルチプロセッサ・システム用のプロセス・ス
ケジューラまたはディスパッチャについて説明した。
【図1】 ディスパッチャがディスパッチ優先度で索引
づけされた1配列のディスパッチ・キューを使用する、
マルチプロセッサ環境用の従来技術の単一キュー・ディ
スパッチャ・システムを示す図(A)と、ブロック化ス
レッドが同期オブジェクトを待つ従来技術の単一キュー
・ディスパッチャ・システムを示す図(B)である。
づけされた1配列のディスパッチ・キューを使用する、
マルチプロセッサ環境用の従来技術の単一キュー・ディ
スパッチャ・システムを示す図(A)と、ブロック化ス
レッドが同期オブジェクトを待つ従来技術の単一キュー
・ディスパッチャ・システムを示す図(B)である。
【図2】 従来のマルチキュー・マルチロック・システ
ムを示す図(A)と追加のスーパーキューを備えたマル
チキュー・マルチロック・システムを示す図(B)であ
る。
ムを示す図(A)と追加のスーパーキューを備えたマル
チキュー・マルチロック・システムを示す図(B)であ
る。
【図3】 本発明の実施形態を実施するのに適した汎用
コンピュータを示す図である。
コンピュータを示す図である。
【図4】 本発明による複数ディスパッチャ・キュー・
システムの好ましい実施形態を示す図(A)と、(A)
のプロセッサのディスパッチ・キューを使用するディス
パッチ・キュー構造の詳細を示す図(B)である。
システムの好ましい実施形態を示す図(A)と、(A)
のプロセッサのディスパッチ・キューを使用するディス
パッチ・キュー構造の詳細を示す図(B)である。
【図5】 本発明によるマルチプロセッサ・システムの
好ましい構成を示す図である。
好ましい構成を示す図である。
【図6】 プロセッサで実行するスレッドのディスパッ
チャ・スケジューリングを説明するフローチャートであ
る。
チャ・スケジューリングを説明するフローチャートであ
る。
【図7】 図6のステップ601のスレッド選択プロセ
スを詳細に説明するフローチャートである。
スを詳細に説明するフローチャートである。
【図8】 グローバル優先度マッピング方法を示す図で
ある。
ある。
【図9】 スレッドを実行可能にするプロセッサを説明
するフローチャートである。
するフローチャートである。
【図10】 図9のプロセッサ選択ステップ905を詳
細に説明するフローチャートである。
細に説明するフローチャートである。
310 キーボード 311 マウス 312 大容量記憶装置 313 CPU 314 ビデオ・メモリ 315 メイン・メモリ 316 ビデオ増幅器 317 陰極線管ラスタ・モニタ 318 双方向システム・バス 501 グローバル高優先度リアル・タイム・キュー 503 共有メモリ 505 スケジューラ 509 ディスパッチ・キュー
【手続補正書】
【提出日】平成9年7月30日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図5】
【図8】
【図4】
【図6】
【図7】
【図9】
【図10】
Claims (6)
- 【請求項1】 複数のプロセッサを備えるマルチプロセ
ッサ・システムでプリエンプティブ優先度スケジューリ
ングに基づいてスレッドをスケジュールする方法であっ
て、 それぞれが前記複数のプロセッサに結合され、スケジュ
ールするスレッドを格納する複数のローカル・ディスパ
チ・キューの1つと、複数の前記プロセッサのそれぞれ
がアクセスすることができ、スケジュールするスレッド
を格納するグローバル・キューとから実行する候補スレ
ッドとしてスレッドを選択するステップと、 プロセッサに候補スレッドを通知するステップと、 そのローカル・ディスパッチ・キューおよび前記グロー
バル・キューの中により優先度の高いスレッドが入って
いるかどうかを調べるステップと、 より優先度の高いスレッドがある場合、最初に選択した
スレッドに割り込み、実行する候補スレッドとしてより
優先度の高いスレッドを選択するステップと、候補スレ
ッドを実行するステップとを含む方法。 - 【請求項2】 スレッドがプロセッサに束縛されている
場合、前記プロセッサのローカル・ディスパッチ・キュ
ーにスレッドを入れるステップをさらに含む請求項1に
記載の方法。 - 【請求項3】 プリエンプティブ優先度スケジューリン
グに基づくマルチプロセッサ・スケジューリング・シス
テムであって、 複数のプロセッサと、 前記複数のプロセッサのそれぞれがいずれか1つに結合
されている複数のスケジューラと、 前記複数のプロセッサのそれぞれがいずれか1つに結合
されている複数のローカル・ディスパッチ・キューと、
を有し、前記複数のスケジューラが通信媒体に結合さ
れ、さらに前記通信媒体に結合されたグローバル・ディ
スパッチ・キューと、 前記通信媒体に結合された共有メモリとを備えるシステ
ム。 - 【請求項4】 複数のプロセッサを備えるマルチプロセ
ッサ・システムにおいてプリエンプティブ優先度スケジ
ューリングに基づいてスレッドをスケジュールするよう
にプログラムされたコンピュータで読取り可能なプログ
ラムを記録した記録媒体において、 前記複数のプロセッサのうちの1つにスレッド選択およ
び検証方法を使用して実行する候補スレッドを選択させ
るプログラムを含み、前記スレッド選択および検証方法
は、 それぞれが前記複数のプロセッサのうちの1つに結合さ
れ、スケジュールするスレッドを格納する複数のローカ
ル・ディスパッチ・キューと、前記複数のプロセッサの
それぞれがアクセスすることができ、スケジュールする
スレッドを格納するグローバル・キューとのうちから実
行する候補スレッドとしてスレッドを選択するステップ
と、 プロセッサに候補スレッドを通知するステップと、 そのローカル・キューおよび前記グローバル・キューに
より優先度の高いスレッドが入っているかどうかを調べ
るステップと、 より高い優先度のスレッドがある場合、最初に選択した
スレッドにプリエンプティブに割り込み、実行する候補
スレッドとしてより優先度の高いスレッドを選択するス
テップとを含み、 前記コンピュータ読取り可能なプログラムは、 前記複数のプロセッサのうちの前記1つのプロセッサに
選択した候補スレッドを実行させるように構成されてい
る記録媒体。 - 【請求項5】 前記複数のプロセッサのうちの1つに、
前記複数のローカル・ディスパッチ・キューのうちから
スレッドを入れる1つのローカル・ディスパッチ・キュ
ーを選択させるプログラムと、 スレッドが束縛されている場合、前記複数のプロセッサ
のうちの1つのプロセッサに、前記プロセッサのローカ
ル・ディスパッチ・キューにスレッドを入れさせるよう
に構成されたプログラムとをさらに含む請求項4に記載
の記録媒体。 - 【請求項6】 スレッドがリアル・タイム優先度を持っ
ている場合、前記複数のプロセッサのうちの1つのプロ
セッサに、前記グローバル・キューにスレッドを入れさ
せるように構成されたコンピュータ読取り可能なプログ
ラムをさらに含む請求項4に記載の記録媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/643,543 US5826081A (en) | 1996-05-06 | 1996-05-06 | Real time thread dispatcher for multiprocessor applications |
US08/643543 | 1996-05-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1055284A true JPH1055284A (ja) | 1998-02-24 |
Family
ID=24581254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9130550A Pending JPH1055284A (ja) | 1996-05-06 | 1997-05-06 | スレッドをスケジュールする方法及びそのシステム |
Country Status (4)
Country | Link |
---|---|
US (2) | US5826081A (ja) |
EP (1) | EP0806730B1 (ja) |
JP (1) | JPH1055284A (ja) |
DE (1) | DE69729822T2 (ja) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000242512A (ja) * | 1999-02-19 | 2000-09-08 | Hitachi Ltd | 複数のオペレーティングシステムを実行する計算機 |
JP2002063148A (ja) * | 2000-07-13 | 2002-02-28 | Internatl Business Mach Corp <Ibm> | 多重プロセッサ・システム |
US6848107B1 (en) | 1998-11-18 | 2005-01-25 | Fujitsu Limited | Message control apparatus |
JP2005235228A (ja) * | 2004-02-20 | 2005-09-02 | Sony Computer Entertainment Inc | マルチプロセッサシステムにおけるタスク管理方法および装置 |
KR100623217B1 (ko) | 2003-06-27 | 2006-09-18 | 가부시끼가이샤 도시바 | 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템 |
JP2007133858A (ja) * | 2005-09-30 | 2007-05-31 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
JP2007156976A (ja) * | 2005-12-07 | 2007-06-21 | Hitachi Kokusai Electric Inc | 情報処理システム |
JP2007537504A (ja) * | 2004-04-02 | 2007-12-20 | シンビアン ソフトウェア リミテッド | コンピュータ装置用のオペレーティング・システムの、またはそれに関する改良 |
JP2009510614A (ja) * | 2005-09-27 | 2009-03-12 | 株式会社ソニー・コンピュータエンタテインメント | セルプロセッサ方法と装置 |
JP2009510611A (ja) * | 2005-09-27 | 2009-03-12 | 株式会社ソニー・コンピュータエンタテインメント | セルプロセッサ方法と装置 |
JP2009510613A (ja) * | 2005-09-27 | 2009-03-12 | 株式会社ソニー・コンピュータエンタテインメント | セルプロセッサのためのspuタスクマネージャ |
US8135867B2 (en) | 2005-09-27 | 2012-03-13 | Sony Computer Entertainment, Inc. | Secure operation of processors |
JP2014508982A (ja) * | 2010-12-15 | 2014-04-10 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 異種処理デバイスの動的ワークパーティション |
JP2017538212A (ja) * | 2014-12-18 | 2017-12-21 | インテル コーポレイション | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 |
JP2018531438A (ja) * | 2015-10-22 | 2018-10-25 | オラクル・インターナショナル・コーポレイション | トランザクション処理環境においてmssq通知を提供するためのシステムおよび方法 |
Families Citing this family (199)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US6438573B1 (en) * | 1996-10-09 | 2002-08-20 | Iowa State University Research Foundation, Inc. | Real-time programming method |
US6324562B1 (en) * | 1997-03-07 | 2001-11-27 | Fujitsu Limited | Information processing apparatus, multitask control method, and program recording medium |
US6829764B1 (en) * | 1997-06-23 | 2004-12-07 | International Business Machines Corporation | System and method for maximizing usage of computer resources in scheduling of application tasks |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6567839B1 (en) | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
GB2334116A (en) * | 1998-02-04 | 1999-08-11 | Ibm | Scheduling and dispatching queued client requests within a server computer |
JP3937371B2 (ja) * | 1998-05-08 | 2007-06-27 | 富士通株式会社 | 競合制御方法及び競合制御システム |
US6427161B1 (en) * | 1998-06-12 | 2002-07-30 | International Business Machines Corporation | Thread scheduling techniques for multithreaded servers |
US6243788B1 (en) * | 1998-06-17 | 2001-06-05 | International Business Machines Corporation | Cache architecture to enable accurate cache sensitivity |
US6434589B1 (en) * | 1998-06-19 | 2002-08-13 | Tellabs Operations, Inc. | Telecommunications job scheduling |
DE69942339D1 (de) * | 1998-08-24 | 2010-06-17 | Microunity Systems Eng | System mit breiter operandenarchitektur und verfahren |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US7451448B1 (en) | 1998-08-28 | 2008-11-11 | Oracle International Corporation | Methods for selectively quiescing a computer system |
US7017156B1 (en) | 1998-08-28 | 2006-03-21 | Oracle International Corporation | System for computing an estimate execution time by totaling the time value base on an architecture or a software operating environment |
US7526767B1 (en) * | 1998-08-28 | 2009-04-28 | Oracle International Corporation | Methods for automatic group switching according to a resource plan |
US6910210B1 (en) * | 1998-11-24 | 2005-06-21 | Microsoft Corp. | System and method for terminating applications |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US6477562B2 (en) * | 1998-12-16 | 2002-11-05 | Clearwater Networks, Inc. | Prioritized instruction scheduling for multi-streaming processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7020879B1 (en) | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US7237093B1 (en) | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
US6338078B1 (en) * | 1998-12-17 | 2002-01-08 | International Business Machines Corporation | System and method for sequencing packets for multiprocessor parallelization in a computer network system |
US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
JP3382176B2 (ja) * | 1999-03-26 | 2003-03-04 | 株式会社東芝 | 要求処理方法および要求処理装置 |
US6874144B1 (en) | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
US20030177182A1 (en) * | 1999-06-14 | 2003-09-18 | International Business Machines Corporation | Ensuring a given transactional unit of work arrives at an appropriate server instance |
US6665699B1 (en) * | 1999-09-23 | 2003-12-16 | Bull Hn Information Systems Inc. | Method and data processing system providing processor affinity dispatching |
US7418506B1 (en) * | 1999-11-12 | 2008-08-26 | International Business Machines Corporation | Apparatus for connection management and the method therefor |
US7518993B1 (en) * | 1999-11-19 | 2009-04-14 | The United States Of America As Represented By The Secretary Of The Navy | Prioritizing resource utilization in multi-thread computing system |
US7130806B1 (en) * | 1999-11-24 | 2006-10-31 | International Business Machines Corporation | Resource unit allocation |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US6748593B1 (en) * | 2000-02-17 | 2004-06-08 | International Business Machines Corporation | Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system |
US7093109B1 (en) * | 2000-04-04 | 2006-08-15 | International Business Machines Corporation | Network processor which makes thread execution control decisions based on latency event lengths |
US7058947B1 (en) * | 2000-05-02 | 2006-06-06 | Microsoft Corporation | Resource manager architecture utilizing a policy manager |
US6799208B1 (en) * | 2000-05-02 | 2004-09-28 | Microsoft Corporation | Resource manager architecture |
US7284244B1 (en) | 2000-05-02 | 2007-10-16 | Microsoft Corporation | Resource manager architecture with dynamic resource allocation among multiple configurations |
US7111297B1 (en) * | 2000-05-02 | 2006-09-19 | Microsoft Corporation | Methods and architectures for resource management |
US7137119B1 (en) * | 2000-05-02 | 2006-11-14 | Microsoft Corporation | Resource manager architecture with resource allocation utilizing priority-based preemption |
US6981260B2 (en) * | 2000-05-25 | 2005-12-27 | International Business Machines Corporation | Apparatus for minimizing lock contention in a multiple processor system with multiple run queues when determining the threads priorities |
US7565651B1 (en) * | 2000-05-25 | 2009-07-21 | Oracle International Corporation | Parallel task scheduling system for computers |
US7137117B2 (en) * | 2000-06-02 | 2006-11-14 | Microsoft Corporation | Dynamically variable idle time thread scheduling |
US7849463B2 (en) | 2000-06-02 | 2010-12-07 | Microsoft Corporation | Dynamically variable idle time thread scheduling |
US7140018B1 (en) * | 2000-06-20 | 2006-11-21 | International Business Machines Corporation | Method of using a distinct flow of computational control as a reusable abstract data object |
WO2002006959A1 (en) | 2000-07-14 | 2002-01-24 | Clearwater Networks, Inc. | Instruction fetch and dispatch in multithreaded system |
US7606576B2 (en) * | 2000-07-24 | 2009-10-20 | Infineon Technologies Ag | Distributed micro instruction set processor architecture for high-efficiency signal processing |
US6782410B1 (en) * | 2000-08-28 | 2004-08-24 | Ncr Corporation | Method for managing user and server applications in a multiprocessor computer system |
US7065763B1 (en) * | 2000-09-29 | 2006-06-20 | Emc Corporation | Method of reducing contention of a highly contended lock protecting multiple data items |
US6735760B1 (en) | 2000-11-08 | 2004-05-11 | Sun Microsystems, Inc. | Relaxed lock protocol |
US7080375B2 (en) * | 2000-12-30 | 2006-07-18 | Emc Corporation/Data General | Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products |
US6834385B2 (en) | 2001-01-04 | 2004-12-21 | International Business Machines Corporation | System and method for utilizing dispatch queues in a multiprocessor data processing system |
US20020099759A1 (en) * | 2001-01-24 | 2002-07-25 | Gootherts Paul David | Load balancer with starvation avoidance |
US7694302B1 (en) * | 2001-04-05 | 2010-04-06 | Network Appliance, Inc. | Symmetric multiprocessor synchronization using migrating scheduling domains |
US7178137B1 (en) | 2001-04-05 | 2007-02-13 | Network Appliance, Inc. | Automatic verification of scheduling domain consistency |
US20020184290A1 (en) * | 2001-05-31 | 2002-12-05 | International Business Machines Corporation | Run queue optimization with hardware multithreading for affinity |
US7043758B2 (en) * | 2001-06-15 | 2006-05-09 | Mcafee, Inc. | Scanning computer files for specified content |
US7178145B2 (en) * | 2001-06-29 | 2007-02-13 | Emc Corporation | Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system |
JP3975703B2 (ja) * | 2001-08-16 | 2007-09-12 | 日本電気株式会社 | 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム |
US20030061260A1 (en) * | 2001-09-25 | 2003-03-27 | Timesys Corporation | Resource reservation and priority management |
JP2006515690A (ja) * | 2001-12-14 | 2006-06-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 |
US7653736B2 (en) * | 2001-12-14 | 2010-01-26 | Nxp B.V. | Data processing system having multiple processors and a communications means in a data processing system |
US7996507B2 (en) * | 2002-01-16 | 2011-08-09 | International Business Machines Corporation | Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client |
US7143411B2 (en) * | 2002-03-15 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Capping processor utilization |
US7171479B2 (en) * | 2002-04-26 | 2007-01-30 | International Business Machines Corporation | Efficient delivery of boot code images from a network server |
US8041796B2 (en) * | 2002-05-02 | 2011-10-18 | Hewlett-Packard Development Company, L.P. | Process duration control |
US7310314B1 (en) * | 2002-06-10 | 2007-12-18 | Juniper Networks, Inc. | Managing periodic communications |
US7594233B2 (en) * | 2002-06-28 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Processing thread launching using volunteer information |
US7065766B2 (en) * | 2002-07-11 | 2006-06-20 | International Business Machines Corporation | Apparatus and method for load balancing of fixed priority threads in a multiple run queue environment |
JP3864250B2 (ja) * | 2002-10-31 | 2006-12-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 排他制御装置、排他制御方法、プログラム、及び記録媒体 |
US7028218B2 (en) | 2002-12-02 | 2006-04-11 | Emc Corporation | Redundant multi-processor and logical processor configuration for a file server |
US20040107240A1 (en) * | 2002-12-02 | 2004-06-03 | Globespan Virata Incorporated | Method and system for intertask messaging between multiple processors |
WO2004059481A2 (en) | 2002-12-16 | 2004-07-15 | Globespanvirata Incorporated | System and method for scheduling thread execution |
US20060123421A1 (en) * | 2002-12-27 | 2006-06-08 | Loboz Charles Z | Streamlining cpu utilization by delaying transactions |
WO2004059465A1 (en) * | 2002-12-27 | 2004-07-15 | Unisys Corporation | Streamlining cpu utilisation by delaying transactions |
US8180943B1 (en) * | 2003-03-27 | 2012-05-15 | Nvidia Corporation | Method and apparatus for latency based thread scheduling |
WO2004088887A2 (en) * | 2003-04-04 | 2004-10-14 | Bbc Technology Holdings Limited | System and method for media management |
US8539089B2 (en) * | 2003-04-23 | 2013-09-17 | Oracle America, Inc. | System and method for vertical perimeter protection |
US7278141B2 (en) * | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
JP3889726B2 (ja) * | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
US7548989B2 (en) * | 2003-07-01 | 2009-06-16 | International Business Machines Corporation | Method and system for maintaining consistency during multi-threaded processing of LDIF data |
US7373640B1 (en) | 2003-07-31 | 2008-05-13 | Network Appliance, Inc. | Technique for dynamically restricting thread concurrency without rewriting thread code |
US7318128B1 (en) * | 2003-08-01 | 2008-01-08 | Sun Microsystems, Inc. | Methods and apparatus for selecting processes for execution |
US7263685B2 (en) * | 2003-09-12 | 2007-08-28 | Intel Corporation | Synchronizing use of a device by multiple software components in accordance with information stored at the device |
US8117624B2 (en) * | 2003-09-16 | 2012-02-14 | Matrox Electronic Systems Ltd. | Method and apparatus for performing real-time commands in a non real-time operating system environment |
US7496917B2 (en) * | 2003-09-25 | 2009-02-24 | International Business Machines Corporation | Virtual devices using a pluarlity of processors |
US7478390B2 (en) * | 2003-09-25 | 2009-01-13 | International Business Machines Corporation | Task queue management of virtual devices using a plurality of processors |
US7549145B2 (en) * | 2003-09-25 | 2009-06-16 | International Business Machines Corporation | Processor dedicated code handling in a multi-processor environment |
US7137033B2 (en) * | 2003-11-20 | 2006-11-14 | International Business Machines Corporation | Method, system, and program for synchronizing subtasks using sequence numbers |
US20050132239A1 (en) * | 2003-12-16 | 2005-06-16 | Athas William C. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
US8171480B2 (en) * | 2004-01-27 | 2012-05-01 | Network Appliance, Inc. | Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor |
US8028292B2 (en) * | 2004-02-20 | 2011-09-27 | Sony Computer Entertainment Inc. | Processor task migration over a network in a multi-processor system |
US7565653B2 (en) * | 2004-02-20 | 2009-07-21 | Sony Computer Entertainment Inc. | Methods and apparatus for processor task migration in a multi-processor system |
DE102004009610B4 (de) * | 2004-02-27 | 2007-08-16 | Infineon Technologies Ag | Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten |
US20050210472A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method and data processing system for per-chip thread queuing in a multi-processor system |
US7162666B2 (en) * | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US20060075404A1 (en) * | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US7634773B2 (en) * | 2004-11-24 | 2009-12-15 | Hewlett-Packard Development Company, L.P. | Method and apparatus for thread scheduling on multiple processors |
US7844973B1 (en) * | 2004-12-09 | 2010-11-30 | Oracle America, Inc. | Methods and apparatus providing non-blocking access to a resource |
JP2006243865A (ja) * | 2005-03-01 | 2006-09-14 | Seiko Epson Corp | プロセッサおよび情報処理方法 |
US8789021B2 (en) * | 2005-06-30 | 2014-07-22 | International Business Machines Corporation | Method and apparatus for object-oriented load testing of computing systems |
US7522168B2 (en) | 2005-09-27 | 2009-04-21 | Sony Computer Entertainment Inc. | Cell processor task and data management |
US20070055852A1 (en) * | 2005-09-06 | 2007-03-08 | Alcatel | Processing operation management systems and methods |
US7895596B2 (en) * | 2005-09-13 | 2011-02-22 | Hewlett-Packard Development Company, L.P. | Processor assignment in multi-processor systems |
US20070061805A1 (en) * | 2005-09-15 | 2007-03-15 | Brenner Larry B | Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system |
US7506123B1 (en) | 2005-09-27 | 2009-03-17 | Sony Computer Entertainment Inc. | Method and system for performing memory copy function on a cell processor |
US8316220B2 (en) | 2005-09-27 | 2012-11-20 | Sony Computer Entertainment Inc. | Operating processors over a network |
US7631125B2 (en) * | 2005-09-30 | 2009-12-08 | Intel Corporation | Dynamically migrating channels |
US7810094B1 (en) * | 2005-09-30 | 2010-10-05 | Emc Corporation | Distributed task scheduling for symmetric multiprocessing environments |
US8144149B2 (en) * | 2005-10-14 | 2012-03-27 | Via Technologies, Inc. | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units |
US20070091088A1 (en) * | 2005-10-14 | 2007-04-26 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
US8347293B2 (en) * | 2005-10-20 | 2013-01-01 | Network Appliance, Inc. | Mutual exclusion domains to perform file system processes on stripes |
US8429661B1 (en) * | 2005-12-14 | 2013-04-23 | Nvidia Corporation | Managing multi-threaded FIFO memory by determining whether issued credit count for dedicated class of threads is less than limit |
US8201172B1 (en) | 2005-12-14 | 2012-06-12 | Nvidia Corporation | Multi-threaded FIFO memory with speculative read and write capability |
US20070143761A1 (en) * | 2005-12-15 | 2007-06-21 | Yong Deng | Task scheduler system and method for managing tasks in an embedded system without a real time operating system |
TW200810523A (en) * | 2005-12-23 | 2008-02-16 | Nxp Bv | An AV renderer peripheral with dual interrupt lines for staggered interrupts |
US8595747B2 (en) | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
JP2007188398A (ja) * | 2006-01-16 | 2007-07-26 | Seiko Epson Corp | マルチプロセッサシステム、マルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。 |
US7920282B2 (en) * | 2006-02-23 | 2011-04-05 | International Business Machines Corporation | Job preempt set generation for resource management |
US7756911B2 (en) * | 2006-06-09 | 2010-07-13 | International Business Machines Corporation | Method and system for executing a task and medium storing a program therefor |
US7720061B1 (en) | 2006-08-18 | 2010-05-18 | Juniper Networks, Inc. | Distributed solution for managing periodic communications in a multi-chassis routing system |
US8533710B1 (en) * | 2006-08-31 | 2013-09-10 | Oracle America, Inc. | Using observed thread activity to dynamically tune a virtual machine for responsiveness |
GB2443507A (en) * | 2006-10-24 | 2008-05-07 | Advanced Risc Mach Ltd | Debugging parallel programs |
US7751604B2 (en) * | 2006-11-30 | 2010-07-06 | Fujifilm Corporation | Medical intelligent server architecture |
US20080133271A1 (en) * | 2006-11-30 | 2008-06-05 | Fujifilm Corporation | Job dispatcher for medical intelligent server architecture |
US20080148280A1 (en) * | 2006-12-13 | 2008-06-19 | Stillwell Joseph W | Apparatus, system, and method for autonomically managing multiple queues |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US10452820B2 (en) * | 2007-06-26 | 2019-10-22 | International Business Machines Corporation | Thread-based software license management |
US8432565B2 (en) * | 2007-07-11 | 2013-04-30 | Xerox Corporation | Job distribution among networked resources in a document processing environment |
US8327363B2 (en) * | 2007-07-24 | 2012-12-04 | Microsoft Corporation | Application compatibility in multi-core systems |
US8544014B2 (en) * | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8381215B2 (en) * | 2007-09-27 | 2013-02-19 | Oracle America, Inc. | Method and system for power-management aware dispatcher |
US20090165003A1 (en) * | 2007-12-21 | 2009-06-25 | Van Jacobson | System and method for allocating communications to processors and rescheduling processes in a multiprocessor system |
US20090189896A1 (en) * | 2008-01-25 | 2009-07-30 | Via Technologies, Inc. | Graphics Processor having Unified Shader Unit |
US8286139B2 (en) * | 2008-03-19 | 2012-10-09 | International Businesss Machines Corporation | Call stack sampling for threads having latencies exceeding a threshold |
US7890298B2 (en) * | 2008-06-12 | 2011-02-15 | Oracle America, Inc. | Managing the performance of a computer system |
US9038087B2 (en) * | 2008-06-18 | 2015-05-19 | Microsoft Technology Licensing, Llc | Fence elision for work stealing |
US8701111B2 (en) * | 2008-07-09 | 2014-04-15 | International Business Machines Corporation | Lock windows for reducing contention |
US20100153974A1 (en) * | 2008-12-16 | 2010-06-17 | International Business Machines Corporation | Obtain buffers for an input/output driver |
US20100153957A1 (en) * | 2008-12-16 | 2010-06-17 | Sensormatic Electronics Corporation | System and method for managing thread use in a thread pool |
US9213586B2 (en) * | 2009-03-18 | 2015-12-15 | Sas Institute Inc. | Computer-implemented systems for resource level locking without resource level locks |
US8413153B2 (en) * | 2009-06-12 | 2013-04-02 | Freescale Semiconductor Inc. | Methods and systems for sharing common job information |
US8683476B2 (en) * | 2009-06-30 | 2014-03-25 | Oracle America, Inc. | Method and system for event-based management of hardware resources using a power state of the hardware resources |
US8572617B2 (en) | 2009-07-21 | 2013-10-29 | Sas Institute Inc. | Processor-implemented systems and methods for event handling |
US8245234B2 (en) | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
US8352946B2 (en) * | 2009-08-11 | 2013-01-08 | International Business Machines Corporation | Managing migration ready queue associated with each processor based on the migration ready status of the tasks |
US8832712B2 (en) * | 2009-09-09 | 2014-09-09 | Ati Technologies Ulc | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system |
US8572622B2 (en) * | 2009-12-30 | 2013-10-29 | International Business Machines Corporation | Reducing queue synchronization of multiple work items in a system with high memory latency between processing nodes |
KR101658035B1 (ko) * | 2010-03-12 | 2016-10-04 | 삼성전자주식회사 | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 |
US8904399B2 (en) * | 2010-03-15 | 2014-12-02 | Qualcomm Incorporated | System and method of executing threads at a processor |
JP5376042B2 (ja) * | 2010-03-18 | 2013-12-25 | 富士通株式会社 | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |
US8627331B1 (en) | 2010-04-30 | 2014-01-07 | Netapp, Inc. | Multi-level parallelism of process execution in a mutual exclusion domain of a processing system |
US9141422B2 (en) | 2010-05-18 | 2015-09-22 | Microsoft Technology Licensing, Llc | Plug-in task scheduler |
US20120066683A1 (en) * | 2010-09-09 | 2012-03-15 | Srinath Nadig S | Balanced thread creation and task allocation |
US8924981B1 (en) * | 2010-11-12 | 2014-12-30 | Teradat US, Inc. | Calculating priority indicators for requests in a queue |
US9317329B2 (en) | 2010-11-15 | 2016-04-19 | Qualcomm Incorporated | Arbitrating resource acquisition for applications of a multi-processor mobile communications device |
KR101703328B1 (ko) * | 2010-11-23 | 2017-02-07 | 삼성전자 주식회사 | 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법 |
US20120260080A1 (en) * | 2011-04-08 | 2012-10-11 | Nokia Corporation | Method and Apparatus for Preprocessing Operations During a Boot Process |
US9317341B2 (en) * | 2011-05-24 | 2016-04-19 | Microsoft Technology Licensing, Llc. | Dynamic attribute resolution for orchestrated management |
US8683473B2 (en) * | 2011-05-27 | 2014-03-25 | International Business Machines Corporation | Dynamic task association between independent, unrelated projects |
US9104485B1 (en) | 2011-10-28 | 2015-08-11 | Amazon Technologies, Inc. | CPU sharing techniques |
US8935699B1 (en) * | 2011-10-28 | 2015-01-13 | Amazon Technologies, Inc. | CPU sharing techniques |
US8726255B2 (en) | 2012-05-01 | 2014-05-13 | Concurix Corporation | Recompiling with generic to specific replacement |
US8650538B2 (en) | 2012-05-01 | 2014-02-11 | Concurix Corporation | Meta garbage collection for functional code |
US9104478B2 (en) | 2012-06-15 | 2015-08-11 | Freescale Semiconductor, Inc. | System and method for improved job processing of a number of jobs belonging to communication streams within a data processor |
US8793669B2 (en) | 2012-07-17 | 2014-07-29 | Concurix Corporation | Pattern extraction from executable code in message passing environments |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US9258234B1 (en) | 2012-12-28 | 2016-02-09 | Juniper Networks, Inc. | Dynamically adjusting liveliness detection intervals for periodic network communications |
US9185170B1 (en) | 2012-12-31 | 2015-11-10 | Juniper Networks, Inc. | Connectivity protocol delegation |
US20140208072A1 (en) * | 2013-01-18 | 2014-07-24 | Nec Laboratories America, Inc. | User-level manager to handle multi-processing on many-core coprocessor-based systems |
US9632977B2 (en) | 2013-03-13 | 2017-04-25 | Nxp Usa, Inc. | System and method for ordering packet transfers in a data processor |
JP5859472B2 (ja) * | 2013-03-26 | 2016-02-10 | 株式会社日立製作所 | プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法 |
US9569260B2 (en) * | 2013-05-31 | 2017-02-14 | Microsoft Technology Licensing, Llc | Efficient priority-aware thread scheduling |
US9715406B2 (en) * | 2013-06-14 | 2017-07-25 | Microsoft Technology Licensing, Llc | Assigning and scheduling threads for multiple prioritized queues |
US9378069B2 (en) * | 2014-03-05 | 2016-06-28 | International Business Machines Corporation | Lock spin wait operation for multi-threaded applications in a multi-core computing environment |
US9626218B1 (en) * | 2014-03-10 | 2017-04-18 | Altera Corporation | Repartitioning and reordering of multiple threads into subsets based on possible access conflict, for sequential access to groups of memory banks in a shared memory |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US9769017B1 (en) | 2014-09-26 | 2017-09-19 | Juniper Networks, Inc. | Impending control plane disruption indication using forwarding plane liveliness detection protocols |
US9348644B2 (en) * | 2014-10-08 | 2016-05-24 | International Business Machines Corporation | Application-level dispatcher control of application-level pseudo threads and operating system threads |
US10248463B2 (en) * | 2015-02-13 | 2019-04-02 | Honeywell International Inc. | Apparatus and method for managing a plurality of threads in an operating system |
US10374936B2 (en) | 2015-12-30 | 2019-08-06 | Juniper Networks, Inc. | Reducing false alarms when using network keep-alive messages |
US10397085B1 (en) | 2016-06-30 | 2019-08-27 | Juniper Networks, Inc. | Offloading heartbeat responses message processing to a kernel of a network device |
US10552211B2 (en) * | 2016-09-02 | 2020-02-04 | Intel Corporation | Mechanism to increase thread parallelism in a graphics processor |
US10069949B2 (en) | 2016-10-14 | 2018-09-04 | Honeywell International Inc. | System and method for enabling detection of messages having previously transited network devices in support of loop detection |
US10572400B2 (en) | 2017-06-15 | 2020-02-25 | Mellanox Technologies, Ltd. | Shared processing of a packet flow by multiple cores |
US10810086B2 (en) | 2017-10-19 | 2020-10-20 | Honeywell International Inc. | System and method for emulation of enhanced application module redundancy (EAM-R) |
US10705849B2 (en) * | 2018-02-05 | 2020-07-07 | The Regents Of The University Of Michigan | Mode-selectable processor for execution of a single thread in a first mode and plural borrowed threads in a second mode |
US10783026B2 (en) | 2018-02-15 | 2020-09-22 | Honeywell International Inc. | Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor |
CN108762896B (zh) * | 2018-03-26 | 2022-04-12 | 福建星瑞格软件有限公司 | 一种基于Hadoop集群任务调度方法及计算机设备 |
US11531038B2 (en) * | 2018-06-15 | 2022-12-20 | Elemental Scientific Inc. | System for prioritization of collecting and analyzing liquid samples |
US11750441B1 (en) | 2018-09-07 | 2023-09-05 | Juniper Networks, Inc. | Propagating node failure errors to TCP sockets |
CN113406696B (zh) * | 2021-06-01 | 2023-04-07 | 成都高新减灾研究所 | 实现移动设备地震监测的方法及设备 |
CN115617497B (zh) * | 2022-12-14 | 2023-03-31 | 阿里巴巴达摩院(杭州)科技有限公司 | 线程处理方法、调度组件、监测组件、服务器和存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5185861A (en) * | 1991-08-19 | 1993-02-09 | Sequent Computer Systems, Inc. | Cache affinity scheduler |
GB2284081B (en) * | 1991-08-19 | 1995-10-04 | Sequent Computer Systems Inc | Computing 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 |
US5379428A (en) * | 1993-02-01 | 1995-01-03 | Belobox Systems, Inc. | Hardware process scheduler and processor interrupter for parallel processing computer systems |
US5692193A (en) * | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US6006247A (en) * | 1995-03-21 | 1999-12-21 | International Business Machines Corporation | Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system |
US6728959B1 (en) * | 1995-08-08 | 2004-04-27 | Novell, Inc. | Method and apparatus for strong affinity multiprocessor scheduling |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
-
1996
- 1996-05-06 US US08/643,543 patent/US5826081A/en not_active Expired - Lifetime
-
1997
- 1997-05-01 DE DE69729822T patent/DE69729822T2/de not_active Expired - Fee Related
- 1997-05-01 EP EP97303012A patent/EP0806730B1/en not_active Expired - Lifetime
- 1997-05-06 JP JP9130550A patent/JPH1055284A/ja active Pending
-
1998
- 1998-10-17 US US09/174,111 patent/US6779182B1/en not_active Expired - Lifetime
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6848107B1 (en) | 1998-11-18 | 2005-01-25 | Fujitsu Limited | Message control apparatus |
JP2000242512A (ja) * | 1999-02-19 | 2000-09-08 | Hitachi Ltd | 複数のオペレーティングシステムを実行する計算機 |
US7810096B2 (en) | 1999-02-19 | 2010-10-05 | Hitachi, Ltd. | Computer executing multiple operating systems |
JP2002063148A (ja) * | 2000-07-13 | 2002-02-28 | Internatl Business Mach Corp <Ibm> | 多重プロセッサ・システム |
KR100623217B1 (ko) | 2003-06-27 | 2006-09-18 | 가부시끼가이샤 도시바 | 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템 |
JP4526412B2 (ja) * | 2004-02-20 | 2010-08-18 | 株式会社ソニー・コンピュータエンタテインメント | マルチプロセッサシステムにおけるタスク管理方法および装置 |
JP2005235228A (ja) * | 2004-02-20 | 2005-09-02 | Sony Computer Entertainment Inc | マルチプロセッサシステムにおけるタスク管理方法および装置 |
JP2007537504A (ja) * | 2004-04-02 | 2007-12-20 | シンビアン ソフトウェア リミテッド | コンピュータ装置用のオペレーティング・システムの、またはそれに関する改良 |
US8037474B2 (en) | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
US8135867B2 (en) | 2005-09-27 | 2012-03-13 | Sony Computer Entertainment, Inc. | Secure operation of processors |
JP2009510613A (ja) * | 2005-09-27 | 2009-03-12 | 株式会社ソニー・コンピュータエンタテインメント | セルプロセッサのためのspuタスクマネージャ |
JP2009510614A (ja) * | 2005-09-27 | 2009-03-12 | 株式会社ソニー・コンピュータエンタテインメント | セルプロセッサ方法と装置 |
JP2009510611A (ja) * | 2005-09-27 | 2009-03-12 | 株式会社ソニー・コンピュータエンタテインメント | セルプロセッサ方法と装置 |
JP4712877B2 (ja) * | 2005-09-27 | 2011-06-29 | 株式会社ソニー・コンピュータエンタテインメント | 並列プロセッサのためのタスクマネージャ |
US8141076B2 (en) | 2005-09-27 | 2012-03-20 | Sony Computer Entertainment Inc. | Cell processor methods and apparatus |
JP2012089154A (ja) * | 2005-09-30 | 2012-05-10 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
JP2007133858A (ja) * | 2005-09-30 | 2007-05-31 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
US8533503B2 (en) | 2005-09-30 | 2013-09-10 | Synopsys, Inc. | Managing power consumption in a multicore processor |
US8732439B2 (en) | 2005-09-30 | 2014-05-20 | Synopsys, Inc. | Scheduling in a multicore processor |
US8751773B2 (en) | 2005-09-30 | 2014-06-10 | Synopsys, Inc. | Scheduling in a multicore architecture |
US9164953B2 (en) | 2005-09-30 | 2015-10-20 | Synopsys, Inc. | Scheduling in a multicore architecture |
US9286262B2 (en) | 2005-09-30 | 2016-03-15 | Synopsys, Inc. | Scheduling in a multicore architecture |
US9442886B2 (en) | 2005-09-30 | 2016-09-13 | Synopsys, Inc. | Scheduling in a multicore architecture |
JP2007156976A (ja) * | 2005-12-07 | 2007-06-21 | Hitachi Kokusai Electric Inc | 情報処理システム |
JP2014508982A (ja) * | 2010-12-15 | 2014-04-10 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 異種処理デバイスの動的ワークパーティション |
JP2017538212A (ja) * | 2014-12-18 | 2017-12-21 | インテル コーポレイション | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 |
US10706496B2 (en) | 2014-12-18 | 2020-07-07 | Intel Corporation | Function callback mechanism between a Central Processing Unit (CPU) and an auxiliary processor |
JP2018531438A (ja) * | 2015-10-22 | 2018-10-25 | オラクル・インターナショナル・コーポレイション | トランザクション処理環境においてmssq通知を提供するためのシステムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
DE69729822D1 (de) | 2004-08-19 |
EP0806730A2 (en) | 1997-11-12 |
DE69729822T2 (de) | 2004-12-02 |
US6779182B1 (en) | 2004-08-17 |
EP0806730A3 (en) | 1998-03-11 |
EP0806730B1 (en) | 2004-07-14 |
US5826081A (en) | 1998-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5826081A (en) | Real time thread dispatcher for multiprocessor applications | |
US6633897B1 (en) | Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler | |
US7065766B2 (en) | Apparatus and method for load balancing of fixed priority threads in a multiple run queue environment | |
US6658449B1 (en) | Apparatus and method for periodic load balancing in a multiple run queue system | |
US6748593B1 (en) | Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system | |
US5452452A (en) | System having integrated dispatcher for self scheduling processors to execute multiple types of processes | |
US7721286B2 (en) | Preemptive multi-tasking with cooperative groups of tasks | |
US4604694A (en) | Shared and exclusive access control | |
US7500037B2 (en) | System, method and program for managing locks | |
JP3678414B2 (ja) | 多重プロセッサ・システム | |
US6006247A (en) | Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system | |
US6981260B2 (en) | Apparatus for minimizing lock contention in a multiple processor system with multiple run queues when determining the threads priorities | |
US5469571A (en) | Operating system architecture using multiple priority light weight kernel task based interrupt handling | |
US5274823A (en) | Interrupt handling serialization for process level programming | |
US5784618A (en) | Method and system for managing ownership of a released synchronization mechanism | |
US20080184246A1 (en) | Scheduling Threads In Multiprocessor Computer | |
EP0403229A1 (en) | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors | |
JP5607545B2 (ja) | マイクロプロセッサシステムにおける命令フェッチングの優先順位付け | |
US7590990B2 (en) | Computer system | |
KR20140021433A (ko) | 프로세서간 메시지처리장치 및 방법 | |
US8528006B1 (en) | Method and apparatus for performing real-time commands in a non real-time operating system environment | |
US20030191794A1 (en) | Apparatus and method for dispatching fixed priority threads using a global run queue in a multiple run queue system | |
CA1304513C (en) | Multiple i/o bus virtual broadcast of programmed i/o instructions | |
CN115408117A (zh) | 协程运行方法、装置、计算机设备和存储介质 | |
JPH11249917A (ja) | 並列型計算機及びそのバッチ処理方法及び記録媒体 |