JP3524961B2 - マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法 - Google Patents

マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法

Info

Publication number
JP3524961B2
JP3524961B2 JP16937094A JP16937094A JP3524961B2 JP 3524961 B2 JP3524961 B2 JP 3524961B2 JP 16937094 A JP16937094 A JP 16937094A JP 16937094 A JP16937094 A JP 16937094A JP 3524961 B2 JP3524961 B2 JP 3524961B2
Authority
JP
Japan
Prior art keywords
task
cpu
priority
executed
execution
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.)
Expired - Fee Related
Application number
JP16937094A
Other languages
English (en)
Other versions
JPH0836553A (ja
Inventor
武 澤崎
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP16937094A priority Critical patent/JP3524961B2/ja
Publication of JPH0836553A publication Critical patent/JPH0836553A/ja
Application granted granted Critical
Publication of JP3524961B2 publication Critical patent/JP3524961B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、マルチプロセッサシ
ステムおよび同システムにおけるタスクスケジューリン
グ方法に関する。
【0002】
【従来の技術】従来、複数のCPU(プロセッサ)が並
列に動作するマルチプロセッサシステムでは、システム
内の或るCPUで実行中のタスクの動作によりタスクス
ケジューリングの必要が生じた場合、自CPUに割り込
みを発生し、自CPU上で実行すべきタスクの決定のみ
を行っていた。
【0003】例えば、CPU上で実行中のタスクが、他
のタスクを「待ち」の状態から「実行可能」状態にした
場合、タスクスケジューリングをする必要がある。この
とき自CPUに割り込みを発生し、割り込み処理として
自CPU上で次に実行するタスクを以下のように決定す
る。即ち、実行中タスク(自タスク)の優先度(実行優
先度)と、(直前に「実行可能」状態にしたタスクを含
む)実行可能タスクが優先度順につながれているキュー
(以下、タスクレディーキューと称する)の中で最高優
先度のものを比較し、優先度の高い方を次に実行するタ
スクとして決定する。そして、この決定したタスクを自
CPUで実行する。
【0004】
【発明が解決しようとする課題】上記したように従来の
マルチプロセッサシステムにおけるタスクスケジューリ
ングでは、或るCPUでのタスク実行中にタスクスケジ
ューリング処理が必要となった場合、自CPUに割り込
みを発生し、そのCPU自身が、実行中のタスクとタス
クレディーキューにつながれているタスク群(中の最高
優先度のタスク)をもとに、次に実行するタスクを決定
するようにしていた。
【0005】このように従来は、或るCPU上で実行中
のタスクが他のタスクを「待ち」状態から「実行可能」
状態にした場合に必要となるタスクスケジューリング処
理で扱えるのは、そのCPU自身と実行中タスク(自タ
スク)とタスクレディーキュー内のタスク群だけであっ
た。
【0006】ところが、マルチプロセッサシステムにお
いては、他のCPU群とそこで実行中のタスクも存在す
る。そこで本発明者は、タスクスケジューリングの際に
は、これらも考慮しなければ、最適なCPUの割り当て
ができないことを認識するに至った。
【0007】例えば、或るCPU上で実行中の優先度が
1のタスク(数値が小さい方が優先度が高いとする)
が、優先度が2の別のタスクを「待ち」状態から「実行
可能」状態にする処理を行ったものとする。
【0008】この処理に続くタスクスケジューリング処
理では、現在実行中のタスクの方が優先度が高いため、
新たに実行可能となった優先度が2のタスクはCPU割
り当て待ちのままとなる。
【0009】また、他のCPUで実行中のタスクの優先
度が例えば100のように極めて低かったとしても、次
に実行するタスクは自CPUで実行中のタスクとの優先
度関係だけで決まることから、上記優先度が2のタスク
はCPU割り当て待ちのままとなる。
【0010】更に、自CPUで実行中のタスク(優先度
が2であるとする)が、例えば優先度が1の3つのタス
クを「実行可能」状態に変えた場合、タスクスケジュー
リングによりCPUを割り当てられるのは、そのうちの
1つだけで、残りのタスクは、他のCPUで実行中のタ
スクより優先度が高くてもCPU割り当て待ちとなる。
【0011】このように従来は、マルチプロセッサシス
テム上の或るCPUでタスク実行中にタスクスケジュー
リング処理が必要となった場合に、そのCPU(自CP
U)で実行中のタスクとタスクレディーキューのタスク
群との優先度(実行優先度)関係だけで、次に実行する
タスクが決定されていたため、最適なスケジューリング
が行えないという問題があった。
【0012】この発明は上記事情を考慮してなされたも
のでその目的は、マルチプロセッサシステム上のCPU
でタスク実行中にタスクスケジューリング処理が必要と
なった場合に、その実行中のタスクの優先度とCPU割
り当て待ち状態にあるタスク群の優先度の他に、他のC
PUで実行中のタスクの優先度をも考慮して、タスク切
り替えを実行すべき全てのCPUを決定することによ
り、マルチプロセッサ構成を生かした最適なタスクスケ
ジューリングが行える、マルチプロセッサシステムおよ
び同システムにおけるタスクスケジューリング方法を提
供することにある。
【0013】
【課題を解決するための手段および作用】この発明の第
1の観点に係る構成は、マルチプロセッサシステム上の
或るCPUで実行中のタスクが他の少なくとも1つのタ
スクの状態を変更した結果タスクスケジューリング処理
が必要となった場合に、その時点においてCPU割り当
て待ち状態にある各タスクを、そのタスクの優先度が高
い順に、そのタスクより低い実行優先度のタスクを実行
中のマルチプロセッサシステム上のCPUに対して、よ
り低い実行優先度のタスクを実行中のCPUから順に割
り当てるようにしたことを特徴とするものである。
【0014】上記の構成においては、或るCPUで実行
中のタスクが他の少なくとも1つのタスクの状態を例え
ば「待ち」から「実行可能」に変えたとき、その実行中
のタスクの優先度と、その時点においてCPU割り当て
待ち状態にあるタスク群の優先度の他に、他のCPUで
実行中のタスクの優先度も考慮され、まず、タスク状態
変更時点においてCPU割り当て待ち状態にあるタスク
群の中で最も優先度の高いタスクが、システム上のCP
Uのうち最も低い優先度のタスクを実行中のCPUに割
り当てられる。但し、割り当ての対象となるタスクの優
先度の方が、(割り当て先となるCPUで)実行中のタ
スクの優先度より高い場合に限る。次に、タスク状態変
更時点においてCPU割り当て待ち状態にあるタスク群
の中で2番目に優先度の高いタスクが、システム上のC
PUのうち2番目に低い優先度のタスクを実行中のCP
Uに割り当てられる。
【0015】以下同様にして、上記のタスク割り当て
が、割り当ての対象となるタスクの優先度より、そのタ
スクの割り当て予定先のCPUで実行中のタスクの優先
度の方が高くなるか、或いは割り当て対象となるタスク
と割り当て予定先のCPUの少なくとも一方が尽きるま
で繰り返される。
【0016】このように、或るCPUで実行中のタスク
が他のタスクの状態を変更した場合に、そのCPUを含
むマルチプロセッサシステム上の全てのCPUの中に、
CPU割り当て待ち状態にあるタスクより低い優先度の
タスクを実行中のCPUがあれば、それらのCPUに対
して、より低い実行優先度のタスクを実行中のCPUか
ら順に、CPU割り当て待ち状態にある各タスクが、そ
のタスクの優先度が高い順に割り当てられるため、マル
チプロセッサ構成を生かした最適なタスクスケジューリ
ングが可能となる。
【0017】この発明の第2の観点に係る構成は、上記
のタスク割り当てのために、該当するCPUに対してタ
スク切り替え処理を行う合図となる特定割り込みを発生
し、この割り込みを受けたCPUにおいて、当該割り込
みに応じてタスク切り替えを行うようにしたことを特徴
とするものである。
【0018】上記の構成においては、タスクの割り当て
先となるCPUへの特定割り込みの発生により、そのC
PUで実行中のタスクより優先度の高い、CPU割り込
み待ち状態にあるタスクが、上記タスクの状態変化後に
直ちに割り当てられる。
【0019】
【実施例】図1は本発明の一実施例に係るマルチプロセ
ッサシステムのブロック構成図である。図1に示すマル
チプロセッサシステムは、並列に動作する複数のCP
U、例えば3台のCPU10-0〜10-2と、これら各C
PU10-0〜10-2により共有される共有メモリ20
と、CPU10-0〜10-2および共有メモリ20が相互
接続されるシステムバス30から構成される。CPU1
0-0〜10-2には、CPU識別子としてCPU番号#0
〜#2が割り当てられている。
【0020】図1の例では、CPU10-0がタスク11
Aを実行し、CPU10-1がタスク11Bを実行し、C
PU10-2がタスク11Cを実行している様子が示され
ている。タスク11Aの優先度(実行優先度)は1、タ
スク11Bの優先度は5、そしてタスク11Cの優先度
は4であるものとする。
【0021】共有メモリ20には、CPU実行中タスク
優先度データキュー40、タスクレディーキュー50お
よび「待ち」タスク群60が置かれる。CPU実行中タ
スク優先度データキュー40は、各CPU10-0〜10
-2で実行中のタスクの優先度を管理するデータ構造であ
り、各CPU番号と実行中のタスクの実行優先度を記録
したデータ(以下、CPU実行中タスク優先度データブ
ロックと称する)を優先度の低い順(ここでは、数値が
大きい方が優先度は低いものとする)につないでおくた
めのものである。
【0022】CPU実行中タスク優先度データキュー4
0は、先頭のCPU実行中タスク優先度データブロック
(の位置)を指すキューエントリ41を有している。図
1の例において、CPU実行中タスク優先度データキュ
ー40には、キューエントリ41により指されるCPU
実行中タスク優先度データブロック42を含む3つのC
PU実行中タスク優先度データブロック42〜44がつ
ながれている。
【0023】CPU実行中タスク優先度データブロック
42には、CPU10-1のCPU番号#1とCPU10
-1で実行中のタスク11Bの優先度5が記録されてい
る。また、CPU実行中タスク優先度データブロック4
3には、CPU10-2のCPU番号#2とCPU10-2
で実行中のタスク11Cの優先度4が記録され、CPU
実行中タスク優先度データブロック44には、CPU1
0-0のCPU番号#0とCPU10-0で実行中のタスク
11Aの優先度1が記録されている。
【0024】各CPU実行中タスク優先度データブロッ
ク42〜44は、次のCPU実行中タスク優先度データ
ブロック(の位置)を指し示すキューフィールド400
を有している。次の優先度データブロックが存在しない
場合、キューフィールド400には、その旨を示す特定
データ(例えばオール“0”データ)が設定される。図
1の例では、CPU実行中タスク優先度データブロック
42のキューフィールド400により、次のCPU実行
中タスク優先度データブロック43が指し示され、当該
データブロック43のキューフィールド400により次
のCPU実行中タスク優先度データブロック44が指し
示されている。
【0025】タスクレディーキュー50は、「実行可
能」状態でCPU割り当て待ちとなっているタスクのタ
スク制御ブロックを優先度順(優先度の高い順)につな
いでおくためのものである。タスクレディーキュー50
は、先頭のタスク制御ブロック(の位置)を指すキュー
エントリ51を有している。図1の例では、タスクレデ
ィーキュー50につながれているタスク制御ブロックは
存在しない。
【0026】「待ち」タスク群60は、「待ち」状態に
あるタスク(実行可能状態にないタスク)のタスク制御
ブロックからなる。図1の例では、「待ち」タスク群6
0は、3つのタスク制御ブロック61D〜61Fからな
る。タスク制御ブロック61D〜61Fは、その識別子
であるタスクID、そのタスクが「実行可能」状態(レ
ディー状態)にあるか或いは「待ち」状態(ウエイト状
態)にあるかを示す状態情報、そのタスクの実行環境、
そのタスクの実行優先度等の各情報を有している。タス
ク制御ブロック61D,61E,61Fで示されるタス
クの優先度は、図1に示すように、それぞれ6,2,3
であるものとする。
【0027】次に、図1のマルチプロセッサシステムに
おけるタスクスケジューリング処理について説明する。
まず、(CPU番号が#0)のCPU10-0で実行中の
タスク11Aが、「待ち」タスク群60に含まれている
タスク制御ブロック61E,61Fの示す「待ち」状態
のタスクを「実行可能」状態に変えたものとする。即
ち、タスク制御ブロック61E,61Fの状態情報を
「待ち」状態から「実行可能」状態に変えたものとす
る。
【0028】この場合、タスク制御ブロック61E,6
1F(の示すタスク)はCPU割り当て待ちとなり、C
PU10-0(で実行中のタスク11A)によりタスクレ
ディーキュー50につながれる。ここでは、タスク制御
ブロック61E(のタスク)の優先度は2、タスク制御
ブロック61F(のタスク)の優先度は3であることか
ら、図2に示すように、タスク制御ブロック61E、そ
してタスク制御ブロック61Fの順につながれる。ここ
で、タスクレディーキュー50上のタスク制御ブロック
61Eはキューエントリ51により指し示される。この
タスク制御ブロック61Eには、キューフィールド50
0が設定され、当該フィールド500により、次のタス
ク制御ブロック61Fが指し示される。
【0029】さて、CPU10-0(で実行中のタスク1
1A)は、タスク制御ブロック61E,61Fで示され
るタスクにCPUを割り当てるため、タスク切り替えを
実行するCPUを選択する処理(タスク切り替え実行C
PU選択処理)を、図3のフローチャートに従って次の
ように行う。
【0030】まずCPU10-0(で実行中のタスク11
A)は、CPU実行中タスク優先度データキュー40に
つながれている先頭のCPU実行中タスク優先度データ
ブロックを参照し、当該優先度データブロックからCP
U番号と優先度を取り出す(ステップS1)。
【0031】次にCPU10-0(で実行中のタスク11
A)は、タスクレディーキュー50につながれている先
頭のタスク制御ブロックを参照し、当該ブロックから対
応するタスクの優先度を取り出す(ステップS2)。
【0032】そしてCPU10-0(で実行中のタスク1
1A)は、ステップS1,S2で取り出した両優先度を
比較する(ステップS3)。1回目のステップS3で
は、CPU実行中タスク優先度データキュー40の先頭
のCPU実行中タスク優先度データブロックに記録され
ている優先度と、タスクレディーキュー50の先頭の優
先度データブロックに記録されている優先度とが比較さ
れる。
【0033】もし、ステップS1で取り出した、CPU
10-0〜10-2のいずれかで実行中のタスク(CPU実
行中タスク)の優先度の方が、ステップS2で取り出し
た、タスクレディーキュー50側の「実行可能」状態タ
スク(即ちCPU割り当て待ちタスク)の優先度より高
い場合には、CPU10-0(で実行中のタスク11A)
は、タスク切り替えは無駄であるとして、何もせずにタ
スク切り替え実行CPU選択処理を終了する。
【0034】これに対し、ステップS2で取り出した、
タスクレディーキュー50側の「実行可能」状態タスク
(CPU割り当て待ちタスク)の優先度の方が、ステッ
プS1で取り出した、CPU10-0〜10-2のうちのい
ずれかのCPUで実行中のタスク(CPU実行中タス
ク)の優先度より高い場合には、そのCPU(ステップ
S1で取り出したCPU番号のCPU)において当該
「実行可能」状態タスク(CPU割り当て待ちタスク)
へのタスク切り替えを行わせるために、CPU10-0
(で実行中のタスク11A)は、そのCPUに対してタ
スク切り替え実行用割り込みを発生させるための命令を
実行する(ステップS4)。このタスク切り替え実行用
割り込みを受けたCPUでの割り込み処理については後
述する。
【0035】CPU10-0(で実行中のタスク11A)
は、ステップS4を実行すると、ステップS1での(C
PU番号および)優先度取り出しの対象となったCPU
実行中タスク優先度データブロックのキューフィールド
400と、ステップS2での優先度取り出しの対象とな
ったタスク制御ブロックのキューフィールド500を参
照し(ステップS5)、少くとも一方が最終ブロックで
あるか否か(即ちCPU実行中タスク優先度データキュ
ー40或いはタスクレディーキュー50の少くとも一方
で最終ブロックまで参照したか否か)を判断する(ステ
ップS6)。
【0036】もし、CPU実行中タスク優先度データキ
ュー40およびタスクレディーキュー50のいずれにお
いても、最終ブロックまで参照していないならば、即ち
(ステップS3で)比較すべき優先度が記録されている
次のブロックが存在するならば、CPU10-0(で実行
中のタスク11A)は再びステップS1,S2を実行
し、ステップS5で参照したCPU実行中タスク優先度
データブロック中のキューフィールド400の指し示す
次のCPU実行中タスク優先度データブロックからCP
U番号と優先度を取り出すと共に、ステップS5で参照
したタスク制御ブロック中のキューフィールド500の
指し示す次のタスク制御ブロックから優先度を取り出
す。
【0037】このようにして、2回目のステップS1,
S2では、CPU実行中タスク優先度データキュー40
の2番目のCPU実行中タスク優先度データブロックに
記録されている(CPU番号および)優先度と、タスク
レディーキュー50の2番目の優先度データブロックに
記録されている優先度が取り出される。続いて、この両
優先度が、次のステップS3において比較される。も
し、タスクレディーキュー50側のタスクの優先度の方
が高いならば、前記したようにステップS4〜S6が行
われる。
【0038】上記ステップS1〜S6の処理は、優先度
比較処理でCPU実行中タスク側の優先度の方が高いと
判断されるか(ステップS3)、比較するデータの少く
とも一方がなくなったことが検出されるまで(ステップ
S6)、繰り返される。
【0039】以上の説明から明らかなように、図2の例
では、まずCPU実行中タスク優先度データキュー40
につながれている先頭のCPU実行中タスク優先度デー
タブロック42からCPU番号#1と当該CPU番号#
1のCPU10-1が実行中のタスク11Bの優先度5が
取り出されると共にタスクレディーキュー50につな
がれている先頭のタスク制御ブロック61Eから当該ブ
ロック61Eの示すタスクの優先度2が取り出される。
【0040】そして、CPU10-1で実行中のタスク1
1Bの優先度5、即ちCPU10-0〜10-2で実行中の
タスク11A〜11Cの優先度のうち最も低い優先度5
と、タスク制御ブロック61Eの示すタスクの優先度、
即ち「実行可能」状態にあるタスク(CPU割り当て待
ちタスク)の優先度のうち最も高い優先度2とが比較さ
れる。
【0041】ここでは、タスク制御ブロック61Eの示
すタスクの優先度2の方が、CPU10-1で実行中のタ
スク11Bの優先度5より高いため、CPU10-0(で
実行中のタスク11A)は、CPU10-1に対してタス
ク切り替え実行用割り込みを発生させる命令を実行す
る。
【0042】次に、CPU実行中タスク優先度データキ
ュー40につながれている2番目のCPU実行中タスク
優先度データブロック43からCPU番号#2と当該C
PU番号#2のCPU10-2が実行中のタスク11Cの
優先度4が取り出されると共に、、タスクレディーキュ
ー50につながれている2番目(=最終)のタスク制御
ブロック61Fから当該ブロック61Fの示すタスクの
優先度3が取り出される。
【0043】そして、CPU10-2で実行中のタスク1
1Cの優先度4、即ちCPU10−0〜10−2で実行
中のタスク11A〜11Cの優先度のうち2番目に低い
優先度4と、タスク制御ブロック61Fの示すタスクの
優先度、即ち「実行可能」状態にあるタスク(CPU割
り当て待ちタスク)の優先度のうち2番目に高い優先度
3とが比較される。
【0044】ここでは、タスク制御ブロック61Fの示
すタスクの優先度3の方が、CPU10-2で実行中のタ
スク11Cの優先度4より高いため、CPU10-0(で
実行中のタスク11A)は、CPU10-2に対してタス
ク切り替え実行用割り込みを発生させる命令を実行す
る。
【0045】タスクレディーキュー50には2つしかC
PU割り当て待ちタスクが存在しない。このため、図3
のフローチャートに従うタスク切り替え実行CPU選択
処理は、ここで終了する。
【0046】次に、タスク切り替え実行用割り込みを受
けたCPUでの割り込み処理について、図4のフローチ
ャートを参照して説明する。まずCPU10-0が、上記
したようにCPU10-1或いはCPU10-2に対してタ
スク切り替え実行用割り込みを発生させる命令を実行す
ると、CPU10-0からCPU10-1或いはCPU10
-2に対し、システムバス30を介してタスク切り替え実
行用割り込みが発行される。上記の例では、まずCPU
10-1に対してタスク切り替え実行用割り込みが発行さ
れ、その後、CPU10-2に対してタスク切り替え実行
用割り込みが発行される。
【0047】CPU10-1は、CPU10-0からのタス
ク切り替え実行用割り込みを受け付けると、通常のタス
ク切り替え処理と同様に、実行中のタスク11Bのタス
ク制御ブロックを生成して、当該制御ブロック内に実行
中タスク11Bの実行環境(CPU10-0内の各種レジ
スタの内容等)を保存し、当該制御ブロックをタスクレ
ディーキュー50につなぐ(ステップS11)。図2の
例では、タスク11Bのタスク制御ブロックは、タスク
レディーキュー50の最後(タスク制御ブロック61F
の次)につながれる。以上のステップS11の実行環境
保存処理を行っておくことにより、該当するタスク制御
ブロックのタスクにCPUが割り当てられた場合に、実
行の再開が可能となる。
【0048】次にCPU10-1は、タスクレディーキュ
ー50から先頭のタスク制御ブロック61Eを取り外し
て、当該ブロック61Eに保存されている実行環境をC
PU10-1内のレジスタ等にロードする(ステップS1
2)。その際、CPU10-1は、タスクレディーキュー
50の2番目のタスク制御ブロック61Fが先頭となる
ように、キューフィールド400の内容を更新する。
【0049】また、CPU10-1は、自身のCPU番号
#1が設定されているCPU実行中タスク優先度データ
ブロック42に、自身が実行中のタスクの優先度とし
て、新たに実行を開始しようとする(実行を再開しよう
とする)タスクの優先度を設定する(ステップS1
3)。即ちCPU10-1は、CPU実行中タスク優先度
データブロック42に設定されている優先度を、実行を
再開しようとするタスクの優先度に更新する。その際、
CPU10-1は、CPU実行中タスク優先度データキュ
ー40上のCPU実行中タスク優先度データブロック4
2〜44を、優先度の低い順につなぎ換える。
【0050】そしてCPU10-1は、ステップS12で
ロードした実行環境に従い、タスクレディーキュー50
から取り外したタスク制御ブロック61Eの示すタスク
の実行を再開する(ステップS14)。
【0051】このように、CPU10-0で実行中のタス
ク11Aが、タスク制御ブロック61E,61Fの示す
「待ち」状態のタスクを「実行可能」状態に変えた場
合、図2の例では、CPU10-0から(CPU10-0〜
10-2の中で最も優先度の低いタスク11Bを実行して
いた)CPU10-1に対するタスク切り替え実行用割り
込みに応じ、当該CPU10-1において、優先度が5の
タスク11Bから、タスク制御ブロック61Eの示す優
先度が2のタスク(図2の状態においてCPU割り当て
待ちとなっていたタスクのうち最も優先度が高いタス
ク)への切り替えが行われる。
【0052】次に、CPU10-0から(CPU10-0〜
10-2の中で2番目に優先度の低いタスク11Cを実行
していた)CPU10-2に対してタスク切り替え実行用
割り込みが発行されると、上記したCPU10-1での割
り込み処理と同様にして、当該CPU10-2において、
優先度が4のタスク11Cから、(先にタスク制御ブロ
ック61Eが取り外されたことにより、その時点におい
てタスクレディーキュー50の先頭につながれている)
タスク制御ブロック61Fの示す優先度が3のタスク
(図2の状態においてCPU割り当て待ちとなっていた
タスクのうち2番目に優先度が高かったタスク)への切
り替えが行われる。
【0053】以上を整理すると、本実施例では、CPU
10-0で優先度1のタスク11Aが、CPU10-1で優
先度5のタスク11Bが、そしてCPU10-2で優先度
4の11Cが、それぞれ実行されている状態で、CPU
10-0で実行中のタスク11Aがタスク制御ブロック6
1E,61Fの示す優先度2,3の「待ち」状態のタス
クを「実行可能」状態(したがってCPU割り当て待
ち)に変えた場合には、CPU10-0〜10-2で実行さ
れるタスクと、CPU割り当て待ちとなるタスクは次の
通りとなる。
【0054】まず、CPU割り当てタスクの中で最も優
先度の高い、即ちCPU割り当てを最も必要とする、タ
スク制御ブロック61Eの示す優先度2のタスクは、C
PU10-0〜10-2のうち、最も低い優先度(で且つ当
該タスク制御ブロック61Eの示すタスクより低優先
度)のタスク11B(優先度5のタスク11B)を実行
中のCPU10-1に割り当てられ、このCPU10-1で
実行される。そして、それまでCPU10-1で実行され
ていた優先度5のタスク11BはCPU割り当て待ちと
なる。
【0055】同様に、タスク制御ブロック61Eの示す
タスクの次に優先度が高い、タスク制御ブロック61F
の示す優先度3のタスクは、CPU10-0〜10-2のう
ち、次に低い優先度(で且つ当該タスク制御ブロック6
1Eの示すタスクより低優先度)のタスク11C(優先
度4のタスク11C)を実行中のCPU10-2に割り当
てられ、このCPU10-2で実行される。そして、それ
までCPU10-2で実行されていた優先度4のタスク1
1CはCPU割り当て待ちとなる。
【0056】このように本実施例によれば、CPU10
-0で実行中のタスク11Aがタスク制御ブロック61
E,61Fの示す「待ち」状態のタスクを「実行可能」
状態に変えた場合に、その実行中のタスク11Aの優先
度1とタスクレディーキュー50のタスク制御ブロック
61E,61Fの示すタスクの優先度2,3の他に、他
のCPU10-1,10-2で実行中のタスク11B,11
Cの優先度5,4をも考慮して、タスク切り替えを実行
するCPUとその数を決定するようにしたので、タスク
レディーキュー50のタスク制御ブロック61E,61
Fの示す、CPU割り当て待ちのタスクの優先度2,3
が、「待ち」状態のタスクを「実行可能」状態に変えた
実行中タスク11Aの優先度1より低優先度でも、その
優先度2,3のタスクを、それより更に低優先度5,4
のタスク11B,11Cを実行中のCPU10-1,10
-2に割り当てることができるため、マルチプロセッサ構
成を生かした効果的なスケジューリングが行える。
【0057】以上は、他のCPU10-1,10-2で「待
ち」状態のタスクを「実行可能」状態に変えた場合も同
様である。なお、前記実施例では、CPUが3台のマル
チプロセッサシステムに実施した場合について説明した
が、この発明は、複数のCPUを備えたプロセッサシス
テム全般に適用可能である。
【0058】また、前記実施例では、タスク切り替え実
行用割り込みを受け付けたCPUは、タスクレディーキ
ュー50から先頭タスク制御ブロックを取り外して、当
該ブロックの示すタスクに切り替えるものとして説明し
た。この方式は、図3のフローチャートに示す一連のタ
スク切り替え実行CPU選択処理が終了した後に、タス
ク切り替え実行用割り込みに従うタスク切り替えが行わ
れ、しかも当該タスク切り替えの順番が、対応するタス
ク切り替え実行用割り込みの発行順に一致する場合には
問題ない。しかし、そうでない場合には、或るCPUに
割り当てるべきタスクが他のCPUに割り当てられる虞
が生じる。
【0059】そこで、このような不都合を防止するため
に、タスク切り替え実行用割り込みを受け付けたCPU
がタスクレディーキュー50から先頭タスク制御ブロッ
クを取り外して、当該ブロックの示すタスクに切り替え
る方式に代えて、次の方式を適用するようにしても良
い。
【0060】即ち、例えば共有メモリ20上に、タスク
切り替え実行CPU選択処理状態(モード)にあること
を示すフラグ等の状態管理領域(状態管理手段)と、各
CPU10-0〜10-2に対応してタスクIDが設定され
るタスクID領域(タスクID管理手段)を設ける。そ
して、或るCPU(例えばCPU10-0)がタスク切り
替え実行CPU選択処理を開始する際には、上記状態管
理領域に処理状態にあることを示す情報を設定し(即ち
タスク切り替え実行CPU選択処理モードを設定し)、
タスク切り替え実行用割り込みを発生する際には、その
割り込み先のCPUに割り当てるタスクのタスクID
を、当該CPUに対応するタスクID領域に設定する。
このタスクIDは、図3のステップS2でタスク制御ブ
ロックから優先度を取り出す際に取得することが可能で
ある。また、一連のタスク切り替え実行CPU選択処理
を終了する際には、状態管理領域に設定されている処理
状態にあることを示す情報をクリアする(即ちタスク切
り替え実行CPU選択処理モードを解除する)。
【0061】タスク切り替え実行用割り込みを受けたC
PUは、状態管理領域を参照し、タスク切り替え実行C
PU選択処理モードにないならば直ちに、タスク切り替
え実行CPU選択処理モードにあるならば、当該モード
が解除される(即ち割り込み元CPUでのタスク切り替
え実行CPU選択処理が終了する)のを待った後、自身
に対応するタスクID領域から、自身が切り替えるべき
(新たに実行すべき)タスクのタスクIDを取得し、そ
のタスクIDを持つタスク制御ブロックをタスクレディ
ーキュー50から取り外して、当該タスク制御ブロック
の示すタスクへの切り替えを行う。
【0062】このようにして、タスク切り替え実行用割
り込みを受けたCPUは、先にタスク切り替え実行用割
り込みを受けた他のCPUがタスク切り替えを終了して
いなくても、或いは後からタスク切り替え実行用割り込
みを受けた他のCPUが先にタスク切り替えを終了して
いても、正しいタスク切り替えを行うことができる。
【0063】また、タスク切り替え中に、タスク切り替
え実行CPU選択処理が開始されるような場合には、タ
スク切り替え処理により、CPU実行中タスク優先度デ
ータキュー40とタスクレディーキュー50の状態が変
化することから、当該タスク切り替え実行CPU選択処
理が正しく行えなくなる虞がある。そこで、これを防止
するために、タスク切り替え期間中、その旨(タスク切
り替えモード)を示す情報が状態管理領域に設定される
ようにして、この期間は、タスク切り替え実行CPU選
択処理が待たされるようにしても良い。即ち、タスク切
り替え処理とタスク切り替え実行CPU選択処理との排
他を取るようにしても良い。
【0064】また、前記実施例では、タスク切り替え実
行CPU選択処理が効率的に行えるように、マルチプロ
セッサシステム上の各CPUで実行中のタスクの優先度
がCPU実行中タスク優先度データキュー40により優
先度の低い順で管理され、「実行可能」状態でCPU割
り当て待ちとなっているタスクが、タスクレディーキュ
ー50により優先度の高い順に管理されているものとし
て説明したが、本発明はこれらの優先度管理方法に限る
ものではない。処理効率を考慮しないならば、必ずしも
優先度順に管理する必要はない。
【0065】
【発明の効果】以上詳述したようにこの発明によれば、
マルチプロセッサシステム上のCPUでタスク実行中に
タスクスケジューリング処理が必要となった場合に、そ
の実行中のタスクの優先度とCPU割り当て待ち状態に
あるタスク群の優先度だけでなく、他のCPUで実行中
のタスクの優先度をも考慮して、タスク切り替えを実行
すべき全てのCPUを、より低い優先度のタスクを実行
中のCPUから順に決定する構成としたので、マルチプ
ロセッサ構成を生かした最適なタスクスケジューリング
を行うことができる。
【0066】また、この発明によれば、タスク切り替え
を実行すべきものとして決定したCPUに対して、タス
ク切り替え処理を起動するための特定割り込みを発生さ
せる構成とすることにより、その割り込みを受け付けた
CPUにおいて、より高い優先度のタスクへのタスク切
り替えを直ちに行うことができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係るマルチプロセッサシス
テムのブロック構成図。
【図2】同実施例において、「待ち」タスク群60にあ
るタスク制御ブロック61E,61Fの示すタスクが、
CPU10-0で実行中のタスク11Aにより「待ち」状
態から「実行可能」状態に変えられて、タスクレディー
キュー50につながれた際のシステム状態を示す図。
【図3】同実施例におけるタスク切り替え実行CPU選
択処理を説明するためのフローチャート。
【図4】同実施例におけるタスク切り替え実行用割り込
み受け付け時の割り込み処理を説明するためのフローチ
ャート。
【符号の説明】
10-0〜10-2…CPU(CPU選択手段、特定割り込
み発生手段)、11A〜11C…タスク、20…共有メ
モリ、30…システムバス、40…CPU実行中タスク
優先度データキュー(タスク優先度保持手段)、42〜
44…CPU実行中タスク優先度データブロック、50
…タスクレディーキュー(タスク管理手段)、61D〜
61F…タスク制御ブロック。

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のCPUが並列に動作するマルチプ
    ロセッサシステムににおいて、 前記各CPUで実行中のタスクの実行優先度を保持する
    タスク優先度保持手段と、 実行可能な状態でCPU割り当て待ちとなっているタス
    ク群を管理するタスク管理手段と、 前記マルチプロセッサシステム上のCPUで実行中のタ
    スクが他の少なくとも1つのタスクの状態を変更した結
    果タスクスケジューリング処理が必要となった場合に、
    当該他の少なくとも1つのタスクの状態を変更したタス
    クを実行中のCPUにて動作して、タスク切り替えを実
    行すべき全てのCPUを決定するCPU選択手段であっ
    て、前記タスク優先度保持手段によって保持されている
    前記各CPUで実行中のタスクの実行優先度と前記タス
    ク管理手段で管理されている前記CPU割り当て待ち状
    態にある各タスクの実行優先度をもとに、タスク切り替
    えを実行すべき全てのCPUを、当該タスク切り替えを
    実行すべきCPUで実行中のタスクの実行優先度が低い
    順に順次決定するCPU選択手段と、 このCPU選択手段によりタスク切り替えを実行すべき
    CPUが決定される毎に、当該決定されたタスク切り替
    えを実行すべきCPUに対してタスク切り替え処理を起
    動するための特定割り込みを発生させる特定割り込み発
    生手段と、 前記特定割り込みを受けたCPUにおいて、当該割り込
    みに応じてタスク切り替えを行う割り込み処理手段と、 前記CPU選択手段による前記タスク切り替えを実行す
    べき全てのCPUを順次決定するCPU選択処理の開始
    に際してCPU選択処理モードを設定し、前記CPU選
    択手段により決定された全てのCPUに対して前記特定
    割り込み発生手段により前記特定割り込みが発生させら
    れた場合に前記CPU選択処理モードを解除する手段と
    を具備し、前記割り込み処理手段は前記特定割り込みを
    受けた場合に、前記CPU選択処理モードが設定されて
    いなければ直ちに、設定されていれば当該CPU選択処
    理モードが解除されるのを待ってタスク切り替えを行う
    ことを特徴とするマルチプロセッサシステム。
  2. 【請求項2】 前記タスク優先度保持手段は前記各CP
    Uで実行中のタスクの実行優先度を当該優先度が低い順
    保持し、 前記タスク管理手段は、実行可能な状態でCPU割り当
    て待ちとなっているタスク群をその実行優先度が高い順
    に管理し、前記マルチプロセッサシステム上のCPUで
    実行中のタスクが他の少なくとも1つのタスクの状態を
    変更した結果、少なくとも1つのタスクが実行可能状態
    に変更された場合には、当該実行可能状態に変更された
    タスクを含む実行可能な状態でCPU割り当て待ちとな
    っているタスク群をその実行優先度順に管理し、 前記CPU選択手段は、前記タスク優先度保持手段によ
    って保持されている前記各CPUで実行中のタスクの実
    行優先度と前記タスク管理手段で管理されている前記C
    PU割り当て待ち状態にある各タスクの実行優先度を先
    頭から順に同期して取り出して、その都度両優先度を比
    較し、前記CPU割り当て待ち状態にあるタスクの実行
    優先度の方が前記実行中タスクの実行優先度より高いな
    らば、当該実行中タスクが実行されているCPUをタス
    ク切り替えを実行すべきCPUとして決定することを特
    徴とする請求項1記載のマルチプロセッサシステム。
  3. 【請求項3】 複数のCPUが並列に動作するマルチプ
    ロセッサシステムにおけるタスクスケジューリング方法
    において、 前記マルチプロセッサシステム上の或るCPUで実行中
    のタスクが他の少なくとも1つ のタスクの状態を変更した結果タスクスケジューリング
    処理が必要となった場合にCPU選択処理モードを設定
    し、しかる後にその時点において前記マルチプロセッサ
    システム上の各CPUで実行中のタスクの実行優先度お
    よびCPU割り当て待ち状態にある各タスクの実行優先
    度の実行優先度をもとに、タスク切り替えを実行すべき
    全てのCPUを、当該タスク切り替えを実行すべきCP
    Uで実行中のタスクの実行優先度が低い順に順次決定す
    る第1の段階と、 この第1の段階でタスク切り替えを実行するCPUが決
    定される毎に、当該決定されたCPUに対してタスク切
    り替え処理を起動するための特定割り込みを発生させる
    第2の段階と、 前記特定割り込みを受けたCPUにおいて、当該割り込
    みに応じてタスク切り替えを行う第3の段階であって、
    前記CPU選択処理モードが設定されていなければ直ち
    に、設定されていれば当該CPU選択処理モードが解除
    されるのを待ってタスク切り替えを行う第3の段階と、 前記第1の段階で決定された全てのCPUに対して前記
    第2の段階で前記特定割り込みが発生させられた場合に
    前記CPU選択処理モードを解除する第4の段階とを具
    備することを特徴とするマルチプロセッサシステムにお
    けるタスクスケジューリング方法。
  4. 【請求項4】 複数のCPUが並列に動作するマルチプ
    ロセッサシステムにおけるタスクスケジューリング方法
    において、 前記マルチプロセッサシステム上のCPUで実行中のタ
    スクが他の少なくとも1つのタスクの状態を変更した結
    果タスクスケジューリング処理が必要となった場合にC
    PU選択処理モードを設定し、しかる後に前記各CPU
    で実行中のタスクの実行優先度を優先度の低い順に順次
    抽出する動作、およびCPU割り当て待ち状態にある各
    タスクの実行優先度を優先度の高い順に順次抽出する動
    作を同期して実行する第1の段階と、 この第1の段階で、前記実行中タスクの実行優先度と前
    記CPU割り当て待ち状態にあるタスクの実行優先度と
    がそれぞれ1つ抽出される毎に、両優先度を比較する第
    2の段階と、 この第2の段階で前記CPU割り当て待ち状態にあるタ
    スクの実行優先度の方が前記実行中タスクの実行優先度
    より高いと判断される毎に、その実行中タスクが実行さ
    れているCPUに対してタスク切り替え処理を起動する
    ための特定割り込みを発生させる第3の段階と、 前記特定割り込みを受けたCPUにおいて、当該割り込
    みに応じてタスク切り替えを行う第4の段階であって、
    前記CPU選択処理モードが設定されていなければ直ち
    に、設定されていれば当該CPU選択処理モードが解除
    されるのを待ってタスク切り替えを行う第4の段階と、 前記実行中タスクの実行優先度の方が前記CPU割り当
    て待ち状態にあるタスクの実行優先度より高いと前記第
    2の段階で判断されるか、或いは前記第2の段階で比較
    すべき前記CPUで実行中のタスクの実行優先度および
    前記CPU割り当て待ち状態にあるタスクの実行優先度
    の少なくとも一方が尽きた場合に、前記CPU選択処理
    モードを解除する第5の段階とを具備することを特徴と
    するマルチプロセッサシステムにおけるタスクスケジュ
    ーリング方法。
JP16937094A 1994-07-21 1994-07-21 マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法 Expired - Fee Related JP3524961B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP16937094A JP3524961B2 (ja) 1994-07-21 1994-07-21 マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP16937094A JP3524961B2 (ja) 1994-07-21 1994-07-21 マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法

Publications (2)

Publication Number Publication Date
JPH0836553A JPH0836553A (ja) 1996-02-06
JP3524961B2 true JP3524961B2 (ja) 2004-05-10

Family

ID=15885336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16937094A Expired - Fee Related JP3524961B2 (ja) 1994-07-21 1994-07-21 マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法

Country Status (1)

Country Link
JP (1) JP3524961B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167478B2 (en) 2002-09-16 2007-01-23 Ericsson Inc. Versatile system for message scheduling within a packet operating system
US9207943B2 (en) 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
JP5655403B2 (ja) * 2010-07-13 2015-01-21 富士通株式会社 マルチコアプロセッサシステム,スケジュール管理プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
CN112659119A (zh) * 2020-12-02 2021-04-16 广东博智林机器人有限公司 机械臂的控制方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
JPH0836553A (ja) 1996-02-06

Similar Documents

Publication Publication Date Title
US6006247A (en) Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US6779182B1 (en) Real time thread dispatcher for multiprocessor applications
JP3557947B2 (ja) 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US20060130062A1 (en) Scheduling threads in a multi-threaded computer
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
GB2348306A (en) Batch processing of tasks in data processing systems
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
US5884021A (en) Computer system having a checkpoint and restart function
JP3524961B2 (ja) マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法
WO2006030564A1 (ja) プロセッサ
JP4608100B2 (ja) 多重処理システムにおける改良結果処理方法
JP2007172611A (ja) 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法)
JP3644042B2 (ja) マルチタスク処理装置
JP2636722B2 (ja) マルチタスク実行管理方式
JPH05108380A (ja) データ処理システム
JPH11249917A (ja) 並列型計算機及びそのバッチ処理方法及び記録媒体
JPH04253228A (ja) 対称型マルチプロセッサのタスクスケジューリング方式
JPS63636A (ja) タスク制御方式
JP2001229038A (ja) マルチオペレーテング計算機システム
JP2000353100A (ja) タスク処理システム
JPH06214811A (ja) スケジューリング方式
JP2815095B2 (ja) マルチプロセッサにおけるタスク割り当て制御方法
JPH02139630A (ja) オンラインタスク入替え装置
JPS59146387A (ja) マルチプロセスにおけるスタツク制御方式
JPH06230982A (ja) 業務処理管理システム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040109

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040216

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080220

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090220

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100220

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100220

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110220

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees