JPH11212810A - タイム・クアンタム共有方法および装置 - Google Patents

タイム・クアンタム共有方法および装置

Info

Publication number
JPH11212810A
JPH11212810A JP31187598A JP31187598A JPH11212810A JP H11212810 A JPH11212810 A JP H11212810A JP 31187598 A JP31187598 A JP 31187598A JP 31187598 A JP31187598 A JP 31187598A JP H11212810 A JPH11212810 A JP H11212810A
Authority
JP
Japan
Prior art keywords
thread
time quantum
processor
threads
determining
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
JP31187598A
Other languages
English (en)
Inventor
Kelvin K Yue
ケルヴィン・ケイ・ユー
Daniel A Stein
ダニエル・エイ・スタイン
Michael A Sebree
マイケル・エイ・セブリー
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
Priority claimed from US08/962,140 external-priority patent/US5987492A/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH11212810A publication Critical patent/JPH11212810A/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 第1のスレッドが閉塞されたときに、第1の
スレッドがその残りのタイム・クアンタムを第2のスレ
ッドと「共有」することを可能にする方法および装置を
提供する。 【解決手段】 スレッドは、データ・ファイルまたはロ
ックのような資源を待っている場合、及びユーザのキー
ストロークのようなイベントを待っている場合、ブロッ
クされる可能性があり、コンシューマ・スレッドが必要
とする資源を「所有」するスレッドがラン・キュー上に
ある場合、ブロック・コンシューマ・スレッドはその残
りのタイム・クアンタムの間実行する権利を、オーナ・
スレッドに転移し、当該オーナ・スレッドが次に実行す
る。これらのスレッドが同じプロセス内にある場合、プ
ロセス・コンテキストの切換えが不要となる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オペレーティング
・システムに関し、更に特定すれば、プロセスのスレッ
ドが、それに割り当てられたプロセッサ時間の残りのク
アンタム(quantum)を他のスレッドと共有する
ことを可能にする方法および装置に関するものである。
【0002】
【従来の技術】最新のコンピュータ・システムは、その
殆どがマルチタスキング・システムである。即ち、これ
らは、1つ以上の「ジョブ」または「プロセス」を所与
の時点に同時にアクティブにすることを可能にする。シ
ステム内にはプロセッサが1つしかない(または、プロ
セッサの数がジョブ/プロセスの数よりも少ない)場合
が多いので、ジョブ/プロセスがプロセッサ資源を共有
することが必要となる。共有プロセッサ(shared
processor)・システムでは、プロセッサは
ある時間を費やして第1のジョブ/プロセッサの一部を
実行し、その後他のジョブ/プロセスの一部を実行する
ように切り替える。したがって、人間のユーザには、1
つ以上のジョブ/プロセスが所与の時点に実行されてい
るように見える。
【0003】コンピュータ・システムの中には、「マル
チ・スレッド(multi−threaded)」コン
ピュータ・プログラムを実行し、1つのプロセスの複数
の「スレッド」を同時に実行可能とするものがある。マ
ルチ・スレッディングは、オペレーティング・システム
およびプロセッサの共有に、余分な複雑度を追加するこ
とになる。
【0004】
【発明が解決しようとする課題】Solarisオペレ
ーティング・システム(サンマイクロシステムズ社から
入手可能)の少なくとも1つの実施態様では、優先度が
最高のジョブをある時間間隔(「タイム・クアンタム
(time quantum)」と呼ぶ)実行し、次い
でその優先度を判定し直す。従来のSolarisシス
テムにおいてアプリケーションの優先度を定義するスケ
ジューリング・クラスには現在4つの異なるものがあ
り、それらはリアル・タイム(Real Time:R
T)、システム(System:SYS)、インタラク
ティブ(Interactive:IA)、およびタイ
ムシェアリング(Timesharing:TS)であ
る。あるジョブが、その実行後に未だシステム内におけ
る最高の優先度を有する場合、更にある時間間隔実行す
ることを許され(例えば、20ないし200ミリ秒)、
その後、優先度を再度判定し直す。再判定の後、それが
もはやシステム内で優先度が最も高いジョブではなくな
った場合、より高い優先度を有するジョブを実行する。
【0005】しかしながら、あるジョブが最高の優先度
を維持する場合、他のアプリケーションは実行の機会を
全く得ることができない。
【0006】従来のオペレーティング・システムは、そ
の多くが複数のスレッドのスケジュールを独立して組
む、タイム・シェアリング・プロセッサ・スケジュール
構想を用いている。かかるシステムでは、各スレッドに
優先度およびタイム・クアンタムを割り当て、ラン・キ
ュー(run queue)上に置いてプロセッサを使
用する順番を待つ。プロセッサが利用可能になると、優
先度が最も高いスレッドを実行キューから取り出し、そ
れを実行する。スレッドは、タイム・クアンタムの期間
だけ、プロセッサを使用することを許可される。スレッ
ドがそれに割り当てられたクアンタムを使い尽くしたと
き、このスレッドの優先度が計算され、新たなタイム・
クアンタムが割り当てられ、このスレッドはラン・キュ
ー上に戻される。次に、プロセッサは優先度が次に高い
スレッドをラン・キューから取り出し、再びそれを実行
し始める。
【0007】プロセッサ上におけるその実行中、スレッ
ドは、あるイベントが発生するか、または何らかのデー
タまたは資源が得られなければ、スレッドはその計算を
継続することができない場合が多い。イベントの一例と
して、ユーザからキー・ストロークが入力されること、
またはファイルからのレコードの使用が可能となること
が考えられる。同様に、スレッドは、他のスレッドと共
有するロック(lock)へのアクセスのように、デー
タが使用可能になるのを待たなければならない場合もあ
る。資源を必要とするスレッドを、「コンシューマ・ス
レッド(consumer thread)」と呼ぶこ
とにする。資源またはデータが使用可能でない、または
当該イベントが未だ行われていないためにコンシューマ
・スレッドが待たなければならない場合、このコンシュ
ーマ・スレッドのことを「ブロック・コンシューマ・ス
レッド(blocked consumer thre
ad)」と呼ぶ。イベントまたはデータが直ちに使用可
能でない場合、プロセッサは、スレッドが当該プロセッ
サを占有している間、単に何もせずに待たせておくよう
なことはしない。代わりに、ブロック・コンシューマ・
スレッドのタイム・クアンタムが終了していない場合で
も、プロセッサはブロック・スレッドをスリープ・キュ
ー(sleep queue)上に置き、他のスレッド
を取り出して実行する。この新たなスレッドは、それ自
体にタイム・クアンタムが予め割り当てられている。ス
リープ・キューの使用により、プロセッサ資源の一層効
率的な使用が可能となる。待機中のイベントが行われた
場合または待機中のデータまたは資源が使用可能となっ
た場合、プロセッサはブロック・コンシューマ・スレッ
ドを起動し、それをラン・キュー上に置き、それがプロ
セッサを使用する順番を待つ。
【0008】ブロックされているスレッドを「スリープ
(sleep)」させるというやり方によって、プロセ
ッサの一層効率的な使用が可能となるが、プロセッサは
次に優先度が高いスレッドを取り出し実行するための時
間を必要とするので、余分なオーバーヘッドが発生する
ことになる。加えて、この手法は、マルチ・スレッド・
アプリケーションによっては、その処理能力を制限する
可能性がある。例えば、マルチ・スレッド・アプリケー
ションが2つのスレッド、即ち、スレッドAおよびスレ
ッドBを有し、これらは1つのプロセッサを有するシス
テムにおいて実行する共通のロックを共有すると仮定す
る。スレッドAはロックを保持し、ラン・キュー上でプ
ロセッサを待っている。スレッドBはプロセッサ上で実
行中であるが、ロックが続くことを必要とする。スレッ
ドAがロックを保持しているので、ロックを使用するこ
とができない。したがって、スレッドBはブロックさ
れ、ロックを待つことになる。スレッドBがブロックさ
れると、プロセッサは、ラン・キューから優先度が最も
高いスレッドを取り出す。
【0009】しかしながら、プロセッサが取り出すスレ
ッドはスレッドAではないかもしれない。実行キュー上
で優先度が最も高いスレッドは、スレッドA,Bと同じ
プロセスのものでないことさえあり得る。プロセッサが
異なるプロセスからスレッドを取り出す場合、プロセッ
サは、(新たなプロセスのスレッドを実行するために)
非効率的かつ高コストの文脈切換(context s
witch)を行わなければならない。最終的にスレッ
ドAを実行するとき、再度文脈切換(コンテキスト切
換)が必要となる(スレッドA,Bのプロセスのスレッ
ドを実行するため)。一層悪いことは、スレッドA(ロ
ックを有する)が実行するときまでに、スレッドB(ロ
ックを必要とする)がラン・キュー上で優先度が最も高
いプロセスではなくなっている可能性があり、直ちに実
行できない場合もあることである。この種の状況は、マ
ルチ・スレッド・アプリケーションが、共有実行システ
ムでは、処理能力を発揮できない1つの理由を例証する
ものである。
【0010】
【課題を解決するための手段】以下に記載する本発明の
実施形態は、スレッドがブロックされている場合、この
スレッドがそのタイム・クアンタムを他のスレッドと
「共有する(分け合う)」ことを可能にする方法および
装置を提供する。スレッドは、例えば、データ・ファイ
ルまたはロックのような資源を待っている場合に、ブロ
ックされる可能性がある。また、スレッドが、ユーザの
キーストロークのようなイベントを待っている場合も、
ブロックされる可能性がある。
【0011】「コンシューマ」スレッドとは、資源を消
費するまたはイベントを待つ必要があるスレッドとして
定義する。本発明の第1の実施形態では、スレッドがブ
ロックされるとき、同じプロセスからのものであり、ブ
ロック・コンシューマ・スレッドによって必要とされる
資源を「所有(own)」し実行を待っている他のスレ
ッドがある場合、ブロック・コンシューマ・スレッドは
その残りのタイム・クアンタムの間実行する権利を、こ
のオーナ・スレッド(owner thread)に移
転(transfer)し、そのオーナ・スレッドが次
に実行する。この移転(移行)が意味するのは、プロセ
ス・コンテキストの切換えが不要となるということであ
る。何故なら、ブロック・コンシューマ・スレッドおよ
びオーナ・スレッドは同じプロセスのスレッドであるか
らである。加えて、この移転は、ブロック・コンシュー
マ・スレッドに資源が使用可能になるまでの時間が短縮
することも意味する。
【0012】他の実施形態では、2つのプロセスを同一
ユーザが所有する場合、オーナ・スレッドは、第1のス
レッドとは異なるプロセスに属していてもよい。この実
施形態では、第1のスレッドが第2のスレッドとその残
りのタイム・クアンタムを共有するが、コンテキストの
切換えが必要となる場合がある。他の実施形態では、オ
ーナ・スレッドは第1のスレッドとは異なるプロセスに
属していてもよく、更に2つのプロセスを異なるユーザ
が所有していてもよい。システムが第1のユーザを、第
2のユーザと資源を共有可能であると規定した場合、第
1のスレッドはその残りのタイム・クアンタムを第2の
スレッドと共有するが、コンテキストの切換えが必要と
なる場合がある。
【0013】本発明の他の実施形態では、あるスレッド
がブロックされているとき、オーナ・スレッドもブロッ
クされているならば、ブロック・コンシューマ・スレッ
ドはその残りのタイム・クアンタムの間実行する権利
を、オーナ・スレッドではないが同じプロセス内にある
他のスレッドに移転する。この移転は、プロセス・コン
テキストの切換えが不要であることを意味する。何故な
ら、ブロック・コンシューマ・スレッド、および残りの
タイム・クアンタムが移転されるスレッドは、同じプロ
セスのスレッドであるからである。
【0014】他の実施形態では、オーナ・スレッドがブ
ロックされている場合、2つのプロセスを同一ユーザが
所有する場合、オーナ・スレッドではないスレッドが、
第1のスレッドとは異なるプロセスに属していてもよ
い。この場合、ブロック・スレッドは、オーナ・スレッ
ドではないスレッドと、その残りのタイム・クアンタム
を共有するが、コンテキストの切換えが必要となる場合
がある。他の実施形態では、オーナ・スレッドではない
スレッドが第1のスレッドとは異なるプロセスに属して
いてもよく、更に2つのプロセスを異なるユーザが所有
していてもよい。システムが、第1のユーザを第2のユ
ーザと資源を共有可能として規定する場合、第1のスレ
ッドは第2のスレッドとその残りのタイム・クアンタム
を共有するが、コンテキストの切換えが必要となる場合
がある。
【0015】同様に、コンシューマ・スレッドが、ユー
ザのキーストロークのような、イベントを待つためにブ
ロックされている場合、このコンシューマ・スレッドの
タイム・クアンタムの残り部分は、ラン・キュー上でそ
の実行の順序を待っている同じプロセスの他のスレッド
に移転される。この第2のスレッドは最も高い優先度を
有するものとするか、あるいは他のいずれかの適切な基
準にしたがって選択することも可能である。この場合
も、この移転はプロセス間のコンテキストの切換えを行
う必要性を回避する。
【0016】他の実施形態では、ブロック・スレッドが
あるイベントを待っているとき、2つのプロセスを同じ
ユーザが双方とも所有する場合、ブロック・スレッドは
その残りのタイム・クアンタムを他のスレッドと共有す
ることができる。この場合、ブロックスレッドは第2の
スレッドと、その残りのタイム・クアンタムを共有する
が、コンテキストの切換えが必要となる場合がある。他
の実施形態では、第2のスレッドが第1のスレッドとは
異なるプロセスに属していてもよく、更に2つのプロセ
スを異なるユーザが所有していてもよい。システムが、
第1のユーザを第2のユーザと資源を共有可能として規
定した場合、第1のスレッドはその残りのタイム・クア
ンタムを第2のスレッドと共有するが、コンテキストの
切換えが必要となる場合がある。
【0017】本発明の目的によれば、ここに具現化しか
つ概述するように、本発明は、プロセス内の複数のスレ
ッド間でタイム・クアンタムを共有する(分け合う)方
法に関し、この方法は、現在プロセッサによって実行さ
れており、関連するタイム・クアンタムを有する第1の
スレッドがブロックされたことを判定するステップと、
プロセッサによって次に実行されるスレッドを判定する
ステップと、第1のスレッドのタイム・クアンタム内の
未使用時間を、次に実行するスレッドに移転する(譲
る)ステップとから成り、これらのステップはデータ処
理システムによって実行される。
【0018】更に、本発明の目的によれば、ここに具現
化しかつ概述するように、本発明は、データ処理システ
ムにおいて複数のスレッド間でタイム・クアンタムを共
有する方法であって、最初にある数のチケットを複数の
スレッドに割り当てるステップと、スレッドに割り当て
たチケット数に応じて、複数のプロセスの各々のスレッ
ドに初期優先度を割り当てるステップと、スレッドのい
ずれか2つの間の実行時間の割合が、スレッドに関連す
る2つのプロセスのチケット数の間の割合と同一となる
ように、複数のスレッドに割り当てられた前記チケット
によって示される順序で複数のプロセスの各スレッドを
実行するステップとから成り、実行ステップは、現在プ
ロセッサによって実行されており、関連するタイム・ク
アンタムを有する第1のスレッドがブロックされたこと
を判定するサブステップと、次に実行するスレッドを判
定するサブステップと、第1のスレッドのタイム・クア
ンタム内の未使用時間を、次に実行するスレッドに移転
するサブステップとを含み、これらのステップは前記デ
ータ処理システムによって実行される。
【0019】本発明の一層深い理解は、添付図面と関連
付けながら以下の説明および特許請求の範囲を参照する
ことによって明らかとなり、認めることができよう。
【0020】
【発明の実施の形態】これより、本発明の好適な実施形
態について詳細に検討する。その例を添付図面に示す。
好都合な場合には、図面全体で同一参照番号を用いて同
一または同様の部分を示すこととする。 1.概要 本発明は、マルチ・スレッド・アプリケーション(mu
lti−threaded application)
を実行するシステムおよび単一のプロセッサまたは複数
のプロセッサを含むシステムを含む、広範囲にわたる様
々なデータ処理システム上で実施可能である。図1およ
び図2は、これらシステムの各々の例をそれぞれ示す。
【0021】本発明は、マルチ・スレッディング(mu
lti−threading)または同様の概念を含
む、あらゆる適切なデータ処理システム内において実施
可能である。本発明は、ブロック(block)されて
いるスレッドがその未使用の割り当てられた実行時間を
他のスレッドと共有する(分け合う)ことを可能にする
が、本発明は、プロセスにおけるスレッドの実行効率を
向上させ、スレッドを実行する際の望ましくないプロセ
ス・コンテキストの切換えおよび遅延を回避する(スレ
ッド共有タイム・クアンタムが同じプロセス内にある場
合)。
【0022】図3ないし図8は、以下で説明する「チケ
ット(ticket)」メタファ(比喩的表現)を用い
て、スレッド間で実行権を共有することを可能にする、
本発明の一実施形態を示す。図9および図10は、「チ
ケット」メタファを用いない本発明の一実施形態を示
す。このように、本発明は、様々なオペレーティング・
システムの環境において使用可能であり、本発明の精神
および範囲から逸脱することなく、プロセッサ資源を共
有するために「チケット」メタファを使用するコンテキ
ストまたは使用しないコンテキストにおいて使用可能で
ある。
【0023】図1は、単一のプロセッサ102およびメ
モリ104を有するデータ処理システム100のブロッ
ク図である。メモリ104は、1つ以上のマルチ・スレ
ッド・アプリケーション(「プロセス」とも呼ぶ)11
0を含み、その少なくとも1つは複数のスレッド112
を 収容する。また、メモリ104はオペレーティング
・システム(OS)108も含み、これはプロセス・ス
ケジューラ・ソフトウエア109を含む。説明中の本発
明の実施形態のステップが実行されるのは、プロセッサ
102がプロセス・スケジューラ・ソフトウエア109
内の命令を実行するときである。本発明は、各マルチ・
スレッド・アプリケーション/プロセス110のスレッ
ド112が、プロセッサ102を共有することを可能に
するものであり、それについては以下で説明する。
【0024】データ処理システム100(およびここで
説明する他のデータ処理システム)は、例えば、SPA
RCチップを基本とするシステム、Ultraサーバ、
またはEnterpriseサーバ(これらは全て、サ
ン マイクロシステムズ社から入手可能である)。ま
た、データ処理システム100は、他の適切なデータ処
理システムのいずれかとすることも可能である。
【0025】オペレーティング・システム108は、例
えば、Unixオペレーティング・システムの変形と
し、本発明を組み込むために修正したものとすることが
できる。UNIXは、米国およびその他の国において登
録商標であり、X/オープン社(X/Open Com
pany Ltd.)により独占的にライセンスされ
る。オペレーティング・システム108は、例えば、サ
ンマイクロシステムズ社から入手可能なSolaris
オペレーティング・システムの変形とし、本発明のファ
ンクショナリティ(functionality)を組
み込んだものとすることができる。
【0026】また、図1は、キーボード、マウス、タッ
チパッド、タッチ・スクリーン等のような、入力デバイ
ス150を含む。更に、図1は、表示画面等のような、
表示装置も含む。更に、図1は、コンピュータ読取可能
媒体162およびコンピュータ読取可能媒体用入力デバ
イス161を含む。コンピュータ読取可能媒体162
は、例えば、フロッピ・ディスク・ドライバ、CDRO
M読取装置、またはDVD読取装置を含み、フロッピ・
ディスク、CDROM、またはDVDドライブのような
コンピュータ読取可能媒体上に格納されているコンピュ
ータ命令を読み取る。また、図1は、システム100の
少なくともいくつかの実施態様には存在する可能性があ
る、ネットワーク接続105も含む。
【0027】以下の説明では、好ましくは、記載する方
法およびフロー・チャートのステップは、メモリ104
(またはその他の適切なメモリ)内に格納されている命
令を実行するプロセッサ102(またはその他の適切な
プロセッサ)によって実行することは理解されよう。ま
た、本発明は、いずれの特定の実施形態またはプログラ
ミング技法にも限定されず、本発明は、ここに記載する
ファンクショナリティを実施するたのあらゆる適切な技
法を用いて実施可能であることは理解されよう。本発明
は、いずれの特定のプログラミング言語にもオペレーテ
ィング・システムにも限定されるものではない。
【0028】メモリ内の命令は、コンピュータ読取可能
媒体からメモリに読み込むことができる。メモリ104
に収容された命令のシーケンスを実行することにより、
プロセッサ102に、ここに記載するプロセス・ステッ
プを実行させる。代替実施形態では、ソフトウエア命令
の代わりに、またはこれと組み合わせて、ハード・ワイ
ヤ回路を用い、本発明を実施することも可能である。こ
のように、本発明の実施形態は、ハードウエア回路およ
びソフトウエアのいずれ具体的な組み合わせにも限定さ
れるものではない。
【0029】ここで用いる「コンピュータ読取可能媒
体」ということばは、プロセッサに命令を与え実行させ
る際に関与するあらゆる媒体を指す。かかる媒体は、不
揮発性媒体、揮発性媒体、および伝送媒体を含むがこれ
らに限定されない、あらゆる形態を取ることができる。
不揮発性媒体は、例えば、記憶デバイスのような、光ま
たは磁気ディスクを含む。揮発性媒体は、ダイナミック
・メモリを含む。伝送媒体は、コンピュータ内のバスを
構成する配線を含み、同軸ケーブル、銅線および光ファ
イバを含む。また、伝送媒体は、無線波および赤外線デ
ータ通信の間に発生するもののような、音響波または光
波の形態を取ることができる。
【0030】コンピュータ読取可能媒体の一般的な形態
は、例えば、フロッピ・ディスク、フレキシブル・ディ
スク、ハード・ディスク、磁気テープ、またはその他の
あらゆる磁気媒体、CD−ROM、その他のあらゆる光
媒体、パンチカード、紙テープ、ホール・パターンを有
するその他のあらゆる物理的媒体、RAM,ROM,E
PROM、FLASH−EPROM、その他のあらゆる
チップまたはカートリッジ、搬送波(キャリア波)、あ
るいはコンピュータが読取可能なその他のあらゆる媒体
を含む。
【0031】1つ以上の命令の1つ以上のシーケンスを
プロセッサに搬送し実行する際に、種々の形態のコンピ
ュータ読取可能媒体が必要となる場合がある。例えば、
命令は、最初は、リモート・コンピュータの磁気ディス
ク上に担持されることがある。リモート・コンピュータ
は命令をそのダイナミック・メモリにロードし、モデム
を用い電話回線を通じて命令を送ることができる。コン
ピュータ・システム専用(local)モデムが電話回
線上のデータを受信し、赤外線送信機を用いてデータを
赤外線信号に変換することができる。バスに結合されて
いる赤外線検出器が、赤外線信号内に搬送されているデ
ータを受信し、データをバス上に置くことができる。バ
スはデータを主メモリに搬送し、プロセッサは主メモリ
から命令を読み出し実行する。主メモリによって受け取
られた命令は、選択肢として、プロセッサによる実行の
前または後のいずれかに、記憶装置上に格納することが
できる。
【0032】本発明は、プロセッサ(複数のプロセッ
サ)およびメモリが異なるマシンの中にある、分散型デ
ータ処理システムにおいても実施可能であることは理解
されよう。また、本発明は、プロセス、スレッド、およ
び/またはプロセッサが全て同じコンピュータにはな
い、分散型システムにおいても実施可能であることも理
解されよう。
【0033】また、メモリ104は、アプリケーション
・プログラム、オペレーティング・システム、データ等
の追加情報を収容することも当業者は理解しよう。これ
らは、明確化のために、図面には示されていない。ま
た、データ処理システム100(またはここに記載する
その他のあらゆるデータ処理システム)は、ディスク・
ドライブ、キーボード、表示装置、ネットワーク接続、
追加メモリ、追加CPU、LAN、入出力回線等のよう
な、図示しない多数のエレメントを含み得ることも理解
されよう。
【0034】図2は、複数のプロセッサ102’および
メモリ104を有する、データ処理システム200のブ
ロック図である。メモリ104は、1つ以上のマルチ・
スレッド・アプリケーション(「プロセス」とも呼ぶ)
110を含み、少なくともその1つは複数のスレッド1
12を有する。また、メモリ104はオペレーティング
・システム(OS)108も含み、これはプロセス・ス
ケジューラ・ソフトウエア109を含む。本発明の記載
中の実施形態のステップは、1つ以上のプロセッサ10
2’がプロセス・スケジューラ・ソフトウエア109内
の命令を実行するときに行われる。本発明は、各マルチ
・スレッド・アプリケーション/プロセス110のスレ
ッド112が複数のプロセッサ102’を比例的に共有
することを可能にする。これについては、以下で説明す
る。 II.マルチ・スレッド・アプリケーション 図3は、マルチ・スレッド・アプリケーションを実行可
能な単一プロセッサ・システム(図1のシステムのよう
な)において、本発明の好適な実施形態を実施するため
に用いられるデータ構造の一例を示す。図4は、マルチ
・スレッド・アプリケーションを実行可能なマルチ・プ
ロセッサ・システム(図2のシステムのような)におい
て、本発明の好適な実施形態を実施するために用いられ
るデータ構造の一例を示す。図5および図6は、図2ま
たは図3のデータ構造を用いた、ステップを示すフロー
・チャートである。
【0035】図3および図4のデータ構造において、各
アプリケーション/プロセス内の多数のスレッドは、チ
ケット・データ構造305を通じて、それらの間でその
プロセスのチケットを「共有」する。尚、図3および図
4のシステムは、マルチ・スレッド・アプリケーション
に加えて、単一スレッド・アプリケーション(図示せ
ず)も含むことができることは理解されよう。この「チ
ケット(ticketing)」システムは、1997
年10月31日出願の、「プロセッサ共有方法および装
置」(Method and Apparatus f
or Processor Sharing)と題する
ユー(Yue)の米国特許出願第08/962,140
号に、更に詳しく記載されている。
【0036】各スレッドは、それ自体の優先度326を
有するが、チケット構造305のフィールド340,3
42内に、プロセス・レベルでチケットが保持されてい
る。また、チケット・データ構造305は、#スロット
・フィールド346およびチケット・キュー・ポインタ
347も含む。#スロット・フィールド346は、各プ
ロセスに割り当てられるプロセッサ・スロットの数を示
す。単一プロセッサ・システムの場合、スロット数は常
に「1」である。複数プロセッサ・システムは、プロセ
ッサ102’の数以下のあらゆる数のスロットを有する
ことができる。チケット・キュー・ポインタ347は、
チケット・キュー350を指し示す。チケット・キュー
350の機能は、プロセッサ・スロットが入手可能にな
るのを待っているプロセスのスレッドを保持することで
ある。実行すべきスレッドはチケット・キュー350か
ら取り出され、プロセッサ(群)102(または10
2’)によって実行するために、ラン・キュー103
(または103’)上に置かれる。
【0037】図5は、単一のプロセッサ102または複
数のプロセッサ102’を共有する、図3および図4の
マルチ・スレッド・アプリケーションと共に実行される
ステップを示すフロー・チャート400である。図5の
ステップ402において、多数のチケットおよび多数の
スロットが各プロセスに割り当てられる。スレッドの優
先度は、そのプロセスのチケット構造305内にある現
チケットの、優先度が割り当てられるときの数に基づい
て割り当てられる。したがって、同じプロセスの複数の
スレッドが異なる優先度を有する可能性がある。
【0038】スレッドがプロセッサ102,102’を
使用したい場合(ステップ404参照)、最初に使用可
能なプロセッサ・スロットがあるか否かについて判定す
るためにチェックを行う(ステップ406)。使用可能
なスロットがある場合(即ち、チケット・キュー350
内に待っているスレッドが他にない場合)、ステップ4
08においてこのスレッドに優先度が決定される。この
優先度は、当該スレッドのps_proc_tデータ構
造304のフィールド326内に置かれ、ステップ41
0においてこのスレッドを実行のためにラン・キュー1
03に入れる。その他の場合(使用可能なプロセッサ・
スロットがない場合)、スレッドはこのプロセスのため
のチケット・キュー350に入れられる(ステップ41
2)。ステップ414において、スロットが使用可能に
なったときに、スレッドをチケット・キュー350から
取り出し、そのプロセスが保持する現チケット数に基づ
いて、ステップ415においてその優先度326を計算
する。次に、ステップ416においてスレッドは、実行
のためにラン・キュー103に入れられる。
【0039】図6は、プロセッサ102による実行のた
めにスレッドをシステムのラン・キュー103上に配置
した後にスレッドを実行するステップを示すフロー・チ
ャート430である。ステップ434において、タイム
・クアンタム・フィールド320内に指定されている所
定のタイム・クアンタムの間スレッドを実行する。スレ
ッドを実行するに連れて、「残り時間」フィールド32
2を実行の単位時間毎に減分(ディクリメント)してい
く。したがって、タイム・クアンタム・フィールドは定
数値であり、残り時間フィールドは、スレッドの実行に
伴い定期的に減分される。残り時間フィールド322
は、スレッドが、プロセッサを使用する現在のチャンス
の間に残っている実行時間量を保持する。スレッドが実
行を完了した後、ステップ436において、実行スレッ
ドのそのプロセスに対する#現チケット342を「1」
だけ減少させる。ステップ438において、保持されて
いるチケットの数が「0」になった場合、ステップ44
0においてチケット数を当該プロセスの初期値にリセッ
トして、制御はステップ442に移る。その他の場合、
制御は直接ステップ442に移る。
【0040】ステップ442において、このプロセスに
対する他のスレッドがチケット・キュー350上にない
場合、ステップ444において現スレッドはそのスロッ
トを放棄し、再度チケット・キュー350に戻される。
そのスロットは、チケット・キュー350の先頭にある
スレッドに与えられ、ステップ446において、この新
たなスレッドに対して、プロセスに対する現チケット数
342に基づいて新たな優先度が計算される。この新た
なスレッド(新たに割り当てられた優先度を有する)
は、ステップ448において、実行のために実行キュー
103上に置かれる。
【0041】一方、ステップ442において、現スレッ
ドが実行を終了したときにチケット・キュー350内に
待っているスレッドがない場合、ステップ490におい
て、現スレッドの優先度を、プロセスに対する現チケッ
ト数に基づいて計算し直し、ステップ492において、
現スレッドを再度実行のためにラン・キュー103上に
置く。尚、ステップ446,490は、スレッドが属す
るプロセスが現在保持するチケット数に基づいて、スレ
ッドの優先度を計算し直すことを注記しておく。
【0042】図4のシステムは複数のスレッド102’
を含むので、各プロセスには、例えば、システム内のプ
ロセッサの数に等しい数346の「スロット」が割り当
てられる。本発明の他の実施態様では、他の数のスロッ
トを用いることも可能である。例えば、スロット数は、
システム内のプロセッサ数よりも小さくして、プロセス
の実行の同時性を減少させることも可能である。説明中
の実施形態では、システムに2つのプロセッサがある場
合、スロット数は「2」となる。したがって、例えば、
システム内にあるプロセッサ102’が2つのみであ
り、プロセスが10個のスレッドを有する場合、プロセ
スのスレッド2つのみを一度にシステムのラン・キュー
に入力することができる。残りのスレッドは、チケット
・キュー350上で待つことになる。
【0043】前の段落では、複数のスレッド間で実行時
間を分与するために用いられる「チケット」メタファに
ついて説明した。スレッド間で実行時間を分与するため
には、他の方法を用いることができ、上述の「チケッ
ト」メタファは必ずしも本発明を実施するシステムの一
部ではないことは理解されよう。以下の段落では、複数
のスレッドに割り当てられた実行タイム・クアンタムを
どのようにして当該スレッドが共有することができるか
について説明する。
【0044】図7は、実行中のコンシューマ・スレッド
がブロックされ、残り時間フィールド322内のその残
りタイム・クアンタムを同じプロセス内の別のスレッド
に移転するときに行われる方法を示すフローチャート4
60である。ステップ462の「現在実行中のスレッ
ド」は、ブロックされているスレッドである。ステップ
462ないし472は、コンシューマ・スレッドが資源
を待っているときに実行する。ステップ480ないし4
84は、コンシューマ・スレッドがイベントを待ってい
る場合に実行する。
【0045】ステップ464は、フィールド327を用
いて、既存のスレッドのどれが必要な資源を所有するの
かについて判定を行う。このスレッドを「オーナ」と呼
ぶ。ステップ466において、オーナがこのプロセスの
ラン・キュー103上にある場合(即ち、オーナ自体が
ブロックされていない場合)、ステップ468におい
て、このブロック・コンシューマ・スレッドの残り時間
322を、当該スレッドのps_proc_tデータ構
造304から、オーナ・スレッドのps_proc_t
データ構造の残り時間フィールド322に移転する。こ
の移転は、オーナ・スレッドの優先度がラン・キュー上
において最も高くない場合でも行われる。次いで、オー
ナ・スレッドが開始され、ブロック・コンシューマ・ス
レッドの残り時間フィールド322内の残りのタイム・
クアンタムを使用することが直ちに可能となる。オーナ
・スレッドはコンシューマ・スレッドと同じプロセスの
一部であるので、プロセス・コンテキストの切換えは必
要でない。
【0046】一方、ステップ470において、オーナ自
体がブロックされている場合、ブロック・コンシューマ
・スレッドの残りのタイム・クアンタムは、ラン・キュ
ーの同じプロセスの先頭にあるスレッドに移転される。
次に、このスレッドが開始され、これはブロック・コン
シューマ・スレッドの残りのタイム・クアンタムを使用
することが直ちに可能となる。新たに開始されたスレッ
ドは、コンシューマ・スレッドと同じプロセスの一部で
あるので、プロセス・コンテキストの切り替えは必要で
ない。この移転は、例えば、残り時間フィールド322
をブロック・コンシューマ・スレッドから第2のスレッ
ドにコピーすることによって行う。あるいは、第1のス
レッドの残り時間フィールド322を、第2のスレッド
の残り時間フィールド322に加算することも可能であ
る。
【0047】ステップ468,470双方に続いて、ブ
ロック・コンシューマ・スレッドをスリープ・キュー3
54上に置く。スレッドは、その資源が使用可能になっ
たときに再開させる。この場合の一例を図8に示す。
【0048】ステップ480は、現在実行中のコンシュ
ーマ・スレッドがイベント(ブロックされている資源で
はなく)を待つ必要があるか否かについて判定を行う。
待つ必要がある場合、ステップ482において、ブロッ
ク・コンシューマ・スレッドの残り時間フィールド32
2内の残りのタイム・クアンタムを、ラン・キュー10
3の先頭にあるスレッドのps_proc_tデータ構
造304に移転する。この移転は、例えば、残り時間フ
ィールド322を、ブロック・コンシューマ・スレッド
から第2のスレッドにコピーすることによって行う。あ
るいは、第1のスレッドの残り時間フィールド322
を、第2のスレッドの残り時間フィールド322に加算
することも可能である。次いで、スレッドを開始し、ブ
ロック・コンシューマ・スレッドの残りのタイム・クア
ンタムを使用することが直ちに可能となる。新たに開始
したスレッドはコンシューマ・スレッドと同じプロセス
の一部であるので、プロセス・コンテキストの切換えは
必要でない。ステップ482に続いて、ステップ484
においてブロック・コンシューマ・スレッドをスリープ
・キュー上に置く。スレッドは、そのイベントが発生し
たときに再開する。この場合の一例を図8に示す。
【0049】図8は、残りのタイム・クアンタムを移転
したスレッドが、なおも時間を残して完了した場合に行
う方法を示すフロー・チャート490である。ステップ
492において、スレッドが未使用の実行時間を残して
その実行を完了した場合、ステップ494において、ス
レッドが以前に、現在ブロックされているスレッドから
時間を借りた場合、およびステップ496において、ブ
ロック・コンシューマ・スレッドがデータまたはイベン
ト(即ち、ブロックされていないデータ、または発生し
たイベント)が得られるのを待っている場合、ステップ
498において、コンシューマ・スレッドを再開し、残
り時間フィールド322内の残りのタイム・クアンタム
を、新たに再開したスレッドに移転する。
【0050】図9は、マルチ・スレッド・アプリケーシ
ョンが1つ以上のプロセッサを共有するが、チケット・
メタファを用いないシステム(図2のシステムのよう
な)において、本発明の一実施形態を実施するために用
いられるデータ構造の一例を示す。尚、図3および図4
のデータ構造とは対照的に、図9のデータ構造は、単一
のプロセスの複数のスレッドがそれらの実行権を共有す
ることを可能にする、チケット構造を含まないことに注
意されたい。本発明のこの実施態様では、図9のデータ
構造は、各プロセス毎に「アクティブ・キュー(act
ive queue)」352を含む。各プロセスのp
roc_t構造301は、当該プロセスに対するアクテ
ィブ・キュー352を指し示す。アクティブ・キュー3
52は、現在ラン・キュー上にあるプロセスの全スレッ
ドのリストである。したがって、ラン・キュー内で優先
度が最も高いプロセスのスレッドが、当該プロセスのア
クティブ・キューの先頭にある。
【0051】図10は、チケット・メタファを用いない
システムにおいて、実行中のコンシューマ・スレッドが
ブロックされ、その残りの実行時間を同じプロセス内の
他のスレッドに移転するときに行われる方法を示すフロ
ーチャート660である。図10は、ステップ670,
682において、ブロック・コンシューマ・スレッドに
残っているフィールド322内のタイム・クアンタム
が、ブロック・コンシューマ・スレッドが属するプロセ
スのアクティブ・キュー352の先頭にあるスレッドに
移転されることを除いて、図7と同様である。この移転
は、例えば、残り時間フィールド322をブロック・コ
ンシューマ・スレッドから第2のスレッドにコピーする
ことによって行う。あるいは、第1のスレッドの残り時
間フィールド322を、第2のスレッドの残り時間フィ
ールド322に加算することも可能である。
【0052】このように、以上説明した本発明の実施形
態では、コンシューマ・スレッドがブロックされた場
合、その残りの実行時間を同じプロセス内の他のスレッ
ドに割り当てる。このスレッドは、例えば、当該コンシ
ューマ・スレッドをブロックしている資源を制御するス
レッドとすることができる。同じプロセス内のスレッド
とは、同じプロセスの中で実行優先度が最も高いスレッ
ドとすることもできる。本発明の実施態様について、そ
のいくつかを説明した。第1の実施態様は、あるプロセ
スの複数のスレッドが、それら自体の間で「チケット」
を共有するシステムにおいて説明した。第2の実施態様
は、各プロセスが、アクティブ・キュー即ちアクティブ
・リストを用いて、実行を待っているそれ自体のスレッ
ドを追跡するシステムにおいて説明した。いずれの場合
でも、ブロックされたコンシューマ・スレッドはその未
使用の割り当てられた実行時間を、同じプロセス内の他
のスレッドに移転する。
【0053】以上、具体的な実施形態に関連付けて本発
明の説明をおこなったが、前述の説明を基に、多くの代
替、変更および変形が当業者には明白であることは明ら
かである。例えば、システム内の複数のスレッドは、フ
ィールド320内に最初に割り当てられた同じタイム・
クアンタムを有することができ、あるいはフィールド3
20に最初に割り当てられた異なるタイム・クアンタム
を有することができる。他の例として、他のスレッドが
所有する資源が使用できないために第1のスレッドがブ
ロックされている場合、オーナ・スレッドが同じプロセ
ス内にないが、同じユーザに所有されているのであれ
ば、その残りのタイム・クアンタムをオーナ・スレッド
に移転することができる。この場合、前述のように、
(第1のプロセス内の)第1のスレッドの残り時間フィ
ールド322内のタイム・クアンタムを(第2のプロセ
ス内の)第2のスレッドに移転する。同様に、他の実施
形態では、ブロック・スレッドはその残りのタイム・ク
アンタムを、所定のユーザ・グループ内の異なるユーザ
に属する異なるプロセス内にあるオーナ・スレッドと共
有することができる。この場合、第1のスレッド(第1
のユーザに属する)の残りのタイム・クアンタム322
は、前述のように、第2のスレッド(ユーザ・グループ
内の他のユーザに属する)に移転されることになる。
【0054】他の例として、他のスレッドが所有する資
源が使用不可能であるために第1のスレッドがブロック
されているとき、およびオーナも使用可能でないとき、
第2のスレッドが同じプロセス内にないが、同じユーザ
が所有する場合、第1のブロック・スレッドの残りのタ
イム・クアンタムは、オーナ・スレッド以外の第2のス
レッドに移転することができる。この場合、第1のスレ
ッド(第1のプロセス内)の残りのタイム・クアンタム
322は、前述のように、第2のスレッド(第2のプロ
セス内)に移転されることになる。同様に、他の実施形
態では、ブロックスレッドは、所定のユーザ・グループ
内の異なるユーザに属する異なるプロセス内にあるオー
ナ・スレッド以外のスレッドと、その残りのタイム・ク
アンタムを共有することができる。この場合、第1のス
レッド(第1のユーザに属する)の残りのタイム・クア
ンタム322は、前述のように、第2のスレッド(ユー
ザ・グループ内の他のユーザに属する)に移転されるこ
とになる。
【0055】他の例として、第1のスレッドがイベント
を待っているためにブロックされている場合、第2のス
レッドが同じプロセス内にないが、同じユーザが所有す
るのであれば、その残りのタイム・クアンタムを第2の
スレッドに移転することができる。この場合、第1のス
レッド(第1のプロセス内)の残りのタイム・クアンタ
ム322は、前述のように、第2のスレッド(第2のプ
ロセス内)に移転されることになる。同様に、他の実施
形態では、ブロック・スレッドは、所定のユーザ・グル
ープ内の異なるユーザに属する異なるプロセス内にある
第2のスレッドと、その残りのタイム・クアンタムを共
有することができる。この場合、第1のスレッド(第1
のユーザに属する)の残りのタイム・クアンタム322
は、前述のように、第2のスレッド(ユーザ・グループ
内の他のユーザに属する)に移転されることになる。
【0056】したがって、請求項およびその均等の精神
および範囲に該当するような代替、変更および変形を全
て包含することを意図するものである。
【0057】尚、添付図面は、この明細書に組み込まれ
その一部を形成するが、本発明の種々の実施形態を例示
し、これまでの記載と合わせて、本発明の原理を説明す
る役割を果たすものである。
【図面の簡単な説明】
【図1】本発明の好適な実施形態による、単一プロセッ
サを有するデータ処理システム上で実行する複数のマル
チ・スレッド・アプリケーションの一例を示す図であ
る。
【図2】本発明の他の好適な実施形態による、複数のプ
ロセッサを有するデータ処理システム上で実行する複数
のマルチ・スレッド・アプリケーションの一例を示す図
である。
【図3】マルチ・スレッド・アプリケーションが、チケ
ット・メタファを用いて、1つのプロセッサを共有する
(図1のシステムのような)システムにおいて、本発明
の一実施形態を実施する際に用いられるデータ構造の一
例を示す図である。
【図4】マルチ・スレッド・アプリケーションが、チケ
ット・メタファを用いて、2つ以上のプロセッサを共有
する(図2のシステムのような)システムにおいて、本
発明の一実施形態を実施する際に用いられるデータ構造
の一例を示す図である。
【図5】マルチ・スレッド・アプリケーションが、チケ
ット・メタファを用いて、少なくとも1つのプロセッサ
を共有する(図1または図2のシステムのような)シス
テムにおいて本発明を説明するフロー・チャートであ
る。
【図6】マルチ・スレッド・アプリケーションが、チケ
ット・メタファを用いて、少なくとも1つのプロセッサ
を共有する(図1または図2のシステムのような)シス
テムにおいて本発明を説明するフロー・チャートであ
る。
【図7】実行中のスレッドがブロックされ、その残りの
タイム・クアンタムを他のスレッドに移転するときに行
われる方法を示すフローチャートである。
【図8】残りの時間aを移転したスレッドが、なおも時
間を残して完了した場合に行われる方法を示すフロー・
チャート。
【図9】マルチ・スレッド・アプリケーションが、チケ
ット・メタファを実施せずに、2つ以上のプロセッサ
(図2のシステムのような)を共有するシステムにおい
て、本発明の好適な実施形態を実施する際に用いられる
データ構造の一例を示す図である。
【図10】実行中のスレッドがブロックされ、チケット
・メタファを実施せずに、その残りの実行時間を同じプ
ロセス内の他のスレッドに移転するときに行われる方法
を示すフローチャートである。
【符号の説明】
100,200 データ処理システム 102,102’ プロセッサ 103,103’ ラン・キュー 104 メモリ 105 ネットワーク接続 108 オペレーティング・システム(OS) 109 プロセス・スケジューラ・ソフトウエア 110 マルチ・スレッド・アプリケーション/プロ
セス 112 スレッド 150,161 入力デバイス 162 コンピュータ読取可能媒体 301 proc_t構造 304 ps_proc_tデータ構造 305 チケット・データ構造 320 タイム・クアンタム・フィールド 322 残り時間フィールド 327 フィールド 340,342 フィールド 346 #スロット・フィールド 347 チケット・キュー・ポインタ 350 チケット・キュー 352 アクティブ・キュー 354 スリープ・キュー
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年1月14日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
───────────────────────────────────────────────────── フロントページの続き (71)出願人 597004720 2550 Garcia Avenue,MS PAL1−521,Mountain V iew,California 94043− 1100,United States of America (72)発明者 ダニエル・エイ・スタイン アメリカ合衆国カリフォルニア州94025, メンロ・パーク,モーリー・ドライブ 585 (72)発明者 マイケル・エイ・セブリー アメリカ合衆国カリフォルニア州94043, マウンテン・ビュー,ニューマン・プレイ ス 1912

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 データ処理システムによって実行され
    る、複数のスレッド間でタイム・クアンタムを共有する
    方法であって、 現在プロセッサによって実行されており、関連するタイ
    ム・クアンタムを有する第1のスレッドがブロックされ
    たことを判定するステップと、 前記プロセッサによって次に実行されるスレッドを判定
    するステップと、 前記第1のスレッドのタイム・クアンタム内の未使用時
    間を、前記次に実行するスレッドに移転するステップ
    と、を含む、方法。
  2. 【請求項2】 請求項1記載の方法において、前記判定
    ステップが、前記第1のスレッドと同じプロセスから
    の、次に実行されるスレッドを判定するステップを含
    む、方法。
  3. 【請求項3】 請求項1記載の方法において、前記判定
    ステップが、前記第1のスレッドとは異なるプロセスか
    らの、次に実行されるスレッドを判定するステップを含
    む、方法。
  4. 【請求項4】 請求項1記載の方法において、前記判定
    ステップが、前記第1のスレッドとは異なるユーザの異
    なるプロセスからの、次に実行されるスレッドを判定す
    るステップを含む、方法。
  5. 【請求項5】 請求項1記載の方法において、前記移転
    ステップが、前記第1のスレッドの前記タイム・クアン
    タム内の未使用時間を、前記次に実行すべきスレッドの
    タイム・クアンタムに加算するステップを含む、方法。
  6. 【請求項6】 請求項1記載の方法において、前記移転
    ステップが、前記次に実行すべきスレッドの元のタイム
    ・クアンタムの代わりに、前記第1のスレッドの前記タ
    イム・クアンタム内の未使用時間を、前記次に実行すべ
    きスレッドのタイム・クアンタムに移転するステップを
    含む、方法。
  7. 【請求項7】 請求項1記載の方法において、 前記判定ステップにおける前記第1のスレッドが、複数
    のプロセッサの内第1のプロセッサによって実行されて
    おり、 前記判定ステップが、前記第1のプロセッサによって次
    に実行されるスレッドを判定し、 前記移転ステップが、前記第1のスレッドの前記タイム
    ・クアンタム内の未使用時間を、前記第1のプロセッサ
    によって次に実行されるスレッドに移転する、方法。
  8. 【請求項8】 データ処理システムにおいて複数のスレ
    ッド間でタイム・クアンタムを共有する方法であって、 最初に、ある数のチケットを前記複数のスレッドに割り
    当てるステップと、 前記スレッドに割り当てたチケット数に応じて、前記複
    数のプロセスの各々のスレッドに初期優先度を割り当て
    るステップと、 前記スレッドのいずれかの2つの間の実行時間割合が、
    前記スレッドに関連する2つのプロセスのチケット数の
    割合と同一となるように、前記複数のスレッドに割り当
    てられた前記チケットによって示される順序で前記複数
    のプロセスの各スレッドを実行するステップであって、 現在実行中であり、関連するタイム・クアンタムを有す
    る第1のスレッドがブロックされたことを判定するサブ
    ステップと、 次に実行するスレッドを判定するサブステップと、 前記第1のスレッドのタイム・クアンタム内の未使用時
    間を、前記次に実行するスレッドに移転するサブステッ
    プと、を含む実行ステップと、を含み、前記ステップが
    前記データ処理システムによって実行される、方法。
  9. 【請求項9】 請求項8記載の方法において、前記デー
    タ処理システムが複数のプロセッサを含み、前記データ
    処理システムが複数のプロセッサ・スロットを有し、 前記実行ステップが、使用可能なプロセッサ・スロット
    があるか否かについて判定を行うステップを含み、 更に、使用可能なプロセッサ・スロットがない場合、前
    記複数のプロセスの1つに関連するスレッドを、前記プ
    ロセスのチケット・キュー上に置くことにより、前記ス
    レッドが、前記チケット・キュー上で使用可能なプロセ
    ッサ・スロットを待つようにするステップを含む、方
    法。
  10. 【請求項10】 請求項8記載の方法において、前記デ
    ータ処理システムが複数のプロセッサを含み、前記デー
    タ処理システムが複数のプロセッサ・スロットを有し、 前記実行ステップが、使用可能なプロセッサ・スロット
    があるか否かについて判定を行うステップを含み、 更に、使用可能なプロセッサ・スロットがある場合、前
    記複数のプロセスの1つに関連するスレッドをプロセッ
    サ・ラン・キュー上に置くステップを含む、方法。
  11. 【請求項11】 請求項10記載の方法であって、更
    に、前記スレッドを前記ラン・キューに置く前に、前記
    スレッドのプロセスによって現在保持されているチケッ
    ト数にしたがって、前記スレッドの優先度を計算するス
    テップを含む、方法。
  12. 【請求項12】 請求項11記載の方法において、前記
    実行ステップが、 所定時間間隔にわたってスレッドを実行し終わった、前
    記複数のプロセスの1つのチケットをある数だけ減分す
    るステップと、 前記減分ステップの後前記1つのプロセスのチケット数
    がゼロに等しい場合、前記1つのプロセスのチケット数
    を、当該1つのプロセスに対して最初に決定したチケッ
    ト数に設定するステップと、を含む方法。
  13. 【請求項13】 請求項11記載の方法において、前記
    実行ステップが、前記プロセスの前記スレッドを前記所
    定時間間隔にわたって実行した後、前記プロセスが保持
    するチケット数を計算し直すステップを含む、方法。
  14. 【請求項14】 請求項11記載の方法において、前記
    実行ステップが、前記スレッドを前記所定時間間隔にわ
    たって実行し終えた後、より高い優先度を有する他のス
    レッドがあるか否かについてチェックを行うステップを
    含む、方法。
  15. 【請求項15】 請求項8記載の方法において、前記複
    数のプロセスの少なくとも1つが、マルチ・スレッド・
    アプリケーションである、方法。
  16. 【請求項16】 プロセス内の複数のスレッド間でタイ
    ム・クアンタムの共有を可能にする装置であって、 現在プロセッサによって実行されており、関連するタイ
    ム・クアンタムを有する第1のスレッドがブロックされ
    たことを判定するように構成された部分と、 前記プロセッサによって次に実行されるスレッドを判定
    するように構成された部分と、 前記第1のスレッドのタイム・クアンタム内の未使用時
    間を、前記次に実行するスレッドに移転するように構成
    された部分と、を備えた装置。
  17. 【請求項17】 請求項16記載の装置において、前記
    判定部分が、前記第1のスレッドと同じプロセスから
    の、次に実行されるスレッドを判定するように構成され
    た部分を含む、装置。
  18. 【請求項18】 請求項16記載の装置において、前記
    判定部分が、前記第1のスレッドとは異なるプロセスか
    らの、次に実行されるスレッドを判定するように構成さ
    れた部分を含む、装置。
  19. 【請求項19】 請求項16記載の装置において、前記
    移転部分が、前記第1のスレッドの前記タイム・クアン
    タム内の未使用時間を、前記次に実行すべきスレッドの
    タイム・クアンタムに加算するように構成された部分を
    含む、装置。
  20. 【請求項20】 請求項16記載の装置において、前記
    移転部分が、前記次に実行すべきスレッドの元のタイム
    ・クアンタムの代わりに、前記第1のスレッドの前記タ
    イム・クアンタム内の未使用時間を、前記次に実行すべ
    きスレッドのタイム・クアンタムに移転するように構成
    された部分を含む、装置。
  21. 【請求項21】 コンピュータ・プログラム・プロダク
    トであって、 プロセス内の複数のスレッド間でタイム・クアンタムを
    共有するように、コンピュータ読取可能コードが具現化
    されているコンピュータ使用可能媒体を備え、該コンピ
    ュータ・プログラム・プロダクトが、 コンピュータに、現在プロセッサによって実行されてお
    り、関連するタイム・クアンタムを有する第1のスレッ
    ドがブロックされたことを判定させるように構成された
    コンピュータ読取可能プログラム・コード・デバイス
    と、 コンピュータに、前記プロセッサによって次に実行され
    るスレッドを判定させるように構成されたコンピュータ
    読取可能プログラム・コード・デバイスと、 コンピュータに、前記第1のスレッドのタイム・クアン
    タム内の未使用時間を、前記次に実行するスレッドに移
    転させるように構成されたコンピュータ読取可能プログ
    ラム・コード・デバイスと、を備えたコンピュータ・プ
    ログラム・プロダクト。
  22. 【請求項22】 プロセッサによって実行されるとき、 現在プロセッサによって実行されており、関連するタイ
    ム・クアンタムを有する第1のスレッドがブロックされ
    たことを判定するステップと、 前記プロセッサによって次に実行されるスレッドを判定
    するステップと、 前記第1のスレッドのタイム・クアンタム内の未使用時
    間を、前記次に実行するスレッドに移転するステップ
    と、を実行することによって、前記プロセッサに、プロ
    セス内の複数のスレッド間でタイム・クアンタムを共有
    させる命令のシーケンスを表す、キャリア波で表現され
    たコンピュータ・データ信号。
JP31187598A 1997-10-31 1998-11-02 タイム・クアンタム共有方法および装置 Pending JPH11212810A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/962,140 US5987492A (en) 1997-10-31 1997-10-31 Method and apparatus for processor sharing
US962140 1998-06-30
US107690 1998-06-30
US09/107,690 US6272517B1 (en) 1997-10-31 1998-06-30 Method and apparatus for sharing a time quantum

Publications (1)

Publication Number Publication Date
JPH11212810A true JPH11212810A (ja) 1999-08-06

Family

ID=26805046

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31187598A Pending JPH11212810A (ja) 1997-10-31 1998-11-02 タイム・クアンタム共有方法および装置

Country Status (3)

Country Link
EP (1) EP0913770A3 (ja)
JP (1) JPH11212810A (ja)
CA (1) CA2252238A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1710601A1 (en) 2005-03-31 2006-10-11 TDK Corporation Pulse radar device

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001035228A2 (en) * 1997-11-13 2001-05-17 Surf Communication Solutions, Ltd. Stable operation of media gateway
IL132888A0 (en) 1999-11-11 2001-03-19 Surf Comm Solutions Ltd Channel load balancing
US7200168B1 (en) 1997-11-13 2007-04-03 Surf Communication Solutions Ltd. Stable operation of media gateway
US6610703B1 (en) 1998-12-10 2003-08-26 G.D. Searle & Co. Method for treatment of glycolipid storage diseases
US7257642B1 (en) 1999-11-11 2007-08-14 Surp Communication Solutions Ltd. Channel load balancing
WO2001086466A2 (en) 2000-05-09 2001-11-15 Surf Communication Solutions, Ltd. Always-on access server pool
KR20060132823A (ko) * 2003-11-13 2006-12-22 코닌클리케 필립스 일렉트로닉스 엔.브이. 제한된 예산 사용을 위한 방법 및 시스템
WO2005073853A2 (en) * 2004-01-30 2005-08-11 Koninklijke Philips Electronics N.V. Method of and system for handling deferred execution
CN1922577A (zh) * 2004-02-18 2007-02-28 皇家飞利浦电子股份有限公司 利用受控预算传送来抑制预算使用的方法和系统
US7424003B2 (en) 2004-03-08 2008-09-09 Surf Communication Solutions Multi-parameter scheduling in communication systems
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506987A (en) * 1991-02-01 1996-04-09 Digital Equipment Corporation Affinity scheduling of processes on symmetric multiprocessing systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1710601A1 (en) 2005-03-31 2006-10-11 TDK Corporation Pulse radar device

Also Published As

Publication number Publication date
EP0913770A2 (en) 1999-05-06
EP0913770A3 (en) 2003-10-29
CA2252238A1 (en) 1999-04-30

Similar Documents

Publication Publication Date Title
US6272517B1 (en) Method and apparatus for sharing a time quantum
JP2518998B2 (ja) 多重タスク処理オペレ―ティング・システム及びそのコンピュ―タの動作方法
US5448732A (en) Multiprocessor system and process synchronization method therefor
US5339415A (en) Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
JP2882475B2 (ja) スレッド実行方法
Hoare Monitors: An operating system structuring concept
US5784618A (en) Method and system for managing ownership of a released synchronization mechanism
US7650601B2 (en) Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US5333319A (en) Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
EP0969382A2 (en) Method for efficient non-virtual main memory management
US8572626B2 (en) Symmetric multi-processor system
EP0527392A2 (en) Preemptive and non pre-emptive scheduling and executing of program threads in a multitasking operating system
US5526521A (en) Method and system for process scheduling from within a current context and switching contexts only when the next scheduled context is different
JPH0954699A (ja) 計算機のプロセススケジューラ
US7103631B1 (en) Symmetric multi-processor system
JPH11212810A (ja) タイム・クアンタム共有方法および装置
EP0715732B1 (en) Method and system for protecting shared code and data in a multitasking operating system
EP0544822B1 (en) Dual level scheduling of processes
JP2597283B2 (ja) 割込みにおけるスケジューリング方式
JPH09160790A (ja) タスクスケジュール装置及びタスクスケジュール方法
JP2001142723A (ja) 資源配分方法、計算機システム及び記録媒体
JPH0424828A (ja) マルチタスク管理方式
JPS6125249A (ja) 排他制御方式
Nakajima et al. Real-Time Synchronization in Real-Time Mach