JP2003122586A - タスク・スケジューリング装置 - Google Patents

タスク・スケジューリング装置

Info

Publication number
JP2003122586A
JP2003122586A JP2002229363A JP2002229363A JP2003122586A JP 2003122586 A JP2003122586 A JP 2003122586A JP 2002229363 A JP2002229363 A JP 2002229363A JP 2002229363 A JP2002229363 A JP 2002229363A JP 2003122586 A JP2003122586 A JP 2003122586A
Authority
JP
Japan
Prior art keywords
task
group
time
execution
priority
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
JP2002229363A
Other languages
English (en)
Inventor
Kozo Nishimura
耕造 西村
Kiyoshi Owada
清志 大和田
Toyoji Kuroda
豊治 黒田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002229363A priority Critical patent/JP2003122586A/ja
Publication of JP2003122586A publication Critical patent/JP2003122586A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 タスク単位及びタスクグループ単位でのタス
ク・スケジューリングに関する機能を高めて、各タスク
への適切な実行時間の配分を実現するタスク・スケジュ
ーリング装置を提供する。 【解決手段】 実行対象とするタスクを逐次特定するた
めにタスク・スケジューリング装置は、タスク群単位で
スケジューリングを行い1のタスク群を選択して、その
選択したタスク群に含まれる全タスクについて各タイム
スライス値に基づきラウンドロビン方式を取りいれた優
先度スケジューリングを行い1のタスクを実行対象とし
て特定する。このタスクの特定は、タスク群のタイムス
ライスによる選択切替時に実行対象となっているタスク
について未だタイムスライス時間の経過前であれば、そ
の未消化の時間を、次にそのタスクを実行対象としたと
きにおいてタイムスライス値の代わりに利用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータのオ
ペレーティングシステム(OS)によるタスク・スケジ
ューリングの技術に関する。
【0002】
【従来の技術】従来、OSによるタスクのスケジューリ
ング方法として、タスク毎に優先度を定めてこの優先度
に従って各タスクを順次実行する優先度スケジューリン
グ方式が一般的に用いられている。また、一般に、同一
優先度の複数のタスクそれぞれを、タイムスライス値で
示されるわずかな時間ずつ順番に実行することとしたラ
ウンドロビン方式が用いられる。
【0003】ここで、タスクは、スケジューリングの対
象となる処理の単位であり、一般にアプリケーションプ
ログラム(AP)の全体又は一部に対応する。従って、
OSの一部に相当するタスク・スケジューリング装置に
よるスケジューリングの結果として、各タスクに対応す
るAPの全体又は一部は、順次CPUタイムの割り当て
を受け、OSの一般的なプログラム実行制御機構の制御
下で、CPUにより順次実行されるようになる。以下、
タスクに対応するAPの全体又は一部の実行を、タスク
の実行と表現する。
【0004】以下、従来のタスク・スケジューリング装
置の一例について簡単に説明する。図14は、従来のタ
スク・スケジューリング装置の機能ブロック図である。
同図に示すように、従来のタスク・スケジューリング装
置900は、実行タスク決定部910、タスク実行時間
管理部920、タスク切替時間検知部930、タイムス
ライステーブル940、レディキュー950及び実行時
間カウンタ960を備える。
【0005】ここで、タイムスライステーブル940
は、各タスクのタイムスライス値を保持するメモリ領域
であり、レディキュー950は、実行可能状態にあるタ
スクを識別するためのタスクIDを優先度の高いタスク
を示すものから順にならべて、先頭のものから順次取り
出せるように格納しているメモリ領域であり、実行時間
カウンタ960は現在実行中のタスクについての現在に
おける連続実行時間をカウントするためのカウント値を
格納するメモリ領域である。
【0006】なお、図示していないタスク登録機構が、
OSのプログラム実行制御機構から実行可能状態になっ
たタスクを示すタスクIDの通知を受け、そのタスクI
Dをレディキュー950に格納し、その格納の際にタス
クの優先度に応じた位置に格納する。なお、OSのプロ
グラム実行制御機構は、APを起動する際或いはAPか
ら所定の通知を受けた際にそのAPの全体又は一部に係
るタスクを実行可能状態になったとしてタスク登録機構
に伝え、また、タスク・スケジューリング装置によりタ
スクの実行を指示された場合にそのタスクに相当するA
Pの全体又は一部を実行し、また実行中のAPから入出
力要求が通知された等の場合にタスクをウェイト状態に
する等、一般的なタスクの状態制御を行い、実行中のタ
スクがウェイト状態になる或いは終了等した場合に次の
タスクの実行要求をタスク・スケジューリング装置に伝
える機能を有する。
【0007】但し、このプログラム実行制御は、実行の
指示を受けた時にその実行指示を受けたタスクに相当す
るAPの命令列が既にある命令まで実行済みである場合
には、その次の命令から実行する。実行タスク決定部9
10、タスク実行時間管理部920及びタスク切替時間
検知部930は、メモリに格納された、OSの一部に相
当する制御プログラムがCPUにより実行されることに
よりその機能が実現される機能部であり、実行タスク決
定部910は、タスク切替時間検知部930から切替時
間検知の通知を受けた時、レディキューの先頭のタスク
IDが更新された時、或いはOSのプログラム実行制御
機構から次のタスクの実行要求を受けた時に、レディキ
ュー950からタスクIDを取り出して、そのタスクI
Dで示されるタスクを実行対象として決定し、そのタス
クを実行するようにOSのプログラム実行制御機構に伝
えるとともにタスク実行時間管理部920に実行開始の
旨を伝える機能を有する。なお、実行タスク決定部91
0は切替時間検知の通知を受けた場合には、実行中のタ
スクのタスクIDをレディキュー950のうちそのタス
クの優先度と同一優先度の最後尾に挿入する。
【0008】タスク実行時間管理部920は、実行開始
の旨が伝えられた時に実行時間カウンタ960のカウン
ト値をゼロクリアして以後時間経過に応じてカウント値
をカウントアップする機能を有し、タスク切替時間検知
部930は、タイムスライステーブル940を参照して
実行中のタスクのタイムスライス値を得て、実行時間カ
ウンタ960のカウント値がタイムスライス値と一致し
たことを検出すると実行タスク決定部910に切替時間
検知の通知を行う機能を有する。
【0009】図15は、従来のタスク・スケジューリン
グ装置におけるレディキュー950の内容例を示す図で
ある。同図ではレディキュー950の内容を、各タスク
の優先度がわかるように表現しており、同図の例は、優
先度2のタスクA、優先度3のタスクB、優先度10の
タスクC及び優先度10のタスクDの各タスクIDが順
に格納されている状態を示している。なお、ここでは優
先度の数値は低いものが優先度が高いことを示すものと
している。
【0010】図16は、従来のタスク・スケジューリン
グ装置におけるタイムスライステーブルの内容例を示す
図である。連続実行時間に制限のない旨を−1というタ
イムスライス値で表現しており、同図の例は、タスクA
及びタスクBは連続実行時間に制限がなく、タスクCの
タイムスライス値は3でありタスクDのタイムスライス
値は9であることを示している。なお、タスク切替時間
検知部930はタイムスライス値が−1であるタスクの
実行中には実行タスク決定部910に切替時間検知の通
知を行わない。
【0011】以下、図15及び図16に示した状態を前
提として、また、新たなタスクは途中で発生しないもの
として、従来のタスク・スケジューリング装置の具体的
な動作を説明する。まず、実行タスク決定部910は、
レディキュー950中から最も高い優先度のためキュー
の先頭にある優先度2のタスクAについてのタスクID
を取り出し、タスクAを実行対象と決定してプログラム
実行制御機構に実行を指示し、タスク切替時間検知部9
30はそのタスクAのタイムスライス値が−1であるこ
とから実行タスク決定部910に切替時間検知の通知を
行わず、タスクAがウェイト状態になる或いは終了等す
るまでタスクAは実行される。
【0012】タスクAの実行後にプログラム実行制御機
構から次のタスクの実行要求を受けると、実行タスク決
定部910は、レディキュー950中から優先度3のタ
スクBについてのタスクIDを取り出し、タスクBを実
行対象と決定してプログラム実行制御機構に実行を指示
する。タスクBもタスクAと同様にタイムスライス値が
−1という連続実行時間に制限のないタスクであるた
め、タスク切替時間検知部930は切替時間検知の通知
は行うことがなく、タスクBがウェイト状態等になるま
でタスクBは実行される。
【0013】この時点で、レディキュー950にはタス
クCのタスクIDとタスクDのタスクIDとが残ってい
る。タスクBの実行後にプログラム実行制御機構から次
のタスクの実行要求を受けると、実行タスク決定部91
0は、レディキュー950中から優先度10のタスクC
についてのタスクIDを取り出し、タスクCを実行対象
と決定してプログラム実行制御機構に実行を指示しタス
ク実行時間管理部920に実行開始の旨を伝える。これ
によりタスクCの実行が開始され、実行時間カウンタ9
60のカウント値はその開始からの時間経過に応じてカ
ウントアップされる。
【0014】タスク切替時間検知部930は、タイムス
ライステーブルを参照し、3というタスクCのタイムス
ライス値を得て、実行時間カウンタ960のカウント値
がそのタイムスライス値と一致した時点で実行タスク決
定部910に切替時間検知の通知を行う。これを受けて
実行タスク決定部910は、レディキュー950の最後
尾にタスクCのタスクIDを挿入するとともに先頭にあ
る優先度10のタスクDのタスクIDを取り出し、タス
クDを実行対象と決定してプログラム実行制御機構に実
行を指示する。これにより、タスクCは3というタイム
スライス値で示される時間だけ実行され、続いてタスク
Dの実行が開始され、実行時間カウンタ960のカウン
ト値はその開始からの時間経過に応じてカウントアップ
される。
【0015】タスク切替時間検知部930は、タイムス
ライステーブルを参照し、9というタスクDのタイムス
ライス値を得て、実行時間カウンタ960のカウント値
がそのタイムスライス値と一致した時点で実行タスク決
定部910に切替時間検知の通知を行う。これを受けて
実行タスク決定部910は、レディキュー950の最後
尾にタスクDのタスクIDを挿入するとともに先頭にあ
る優先度10のタスクCのタスクIDを取り出し、タス
クCを実行対象として決定してプログラム実行制御機能
に実行を指示する。これにより、タスクDは9というタ
イムスライス値で示される時間だけ実行され、続いて再
びタスクCの実行が開始されることになる。
【0016】こうして、以後、タイムスライス値を用い
るラウンドロビン方式によって、タスクCとタスクDと
が終了等するまで、交互に繰り返し実行されるようにな
る。上述した手順による、時間経過に応じたタスク実行
の遷移を図17に示す。同図に示すように、タスクAに
続きタスクBが実行され、その後にタスクCとタスクD
とが3対9の時間配分で交互に実行される。
【0017】また、他のタスク・スケジューリング装置
として、上述した装置を前提にし、優先度が所定範囲で
あるタスクからなるタスクグループを複数定めて、タス
クのレディ状態とウェイト状態とを、所定の時間毎にタ
スクグループ単位で一括して切り替えることにより、各
タスクグループのタスクに確実に実行機会を与えるよう
に変形したタスク・スケジューリング装置が、日本国特
許公報(日本国特許第3005562号)に記載されて
いる。
【0018】一般に、複雑高度な機能を実現するAPに
おいては、そのAPを構成し相互に密接に関連する複数
の部分的なプログラムのそれぞれを、OSに対して別タ
スクと扱われるように指定する場合がある。いわゆるマ
ルチスレッド構成のAPである。上述した特許公報に記
載されているタスク・スケジューリング装置によれば、
このような同じAPに属する密接に関連したタスク群
は、そのタスク群の単位つまりタスクグループ単位とし
ては、所定の時間ずつ確実に実行時間を与えられるよう
になる。なお、米国特許公報(米国特許第574577
8)には、スレッドとスレッドグループとの階層構造に
基づいてCPUの割り当てを行う技術が示されている。
【0019】
【発明が解決しようとする課題】しかしながら、従来技
術を用いた場合には、タスクグループ単位では所定の時
間ずつ確実に実行時間が与えられるようになるが、その
実行時間が、あるタスクグループを構成する各タスク間
において適切に配分されるとは限らない。例えば、ある
タスクグループ単位に実行時間が与えられた場合に、そ
のタスクグループに属し優先度が等しく同じ時間配分で
実行されるべきタスクAとタスクBとをこの順で所定時
間ずつ交互に実行するような単純な方式を用いると、タ
スクA又はタスクBの実行開始からまだその所定時間が
経過しない間にタスクグループに対して定められている
実行時間が切れるという事態が繰り返される場合には、
長い目で見ればタスクAの方がタスクBより幾分か多く
実行される結果を招き、同じ時間配分での各タスクの実
行が実現できない。
【0020】そこで、本発明は、タスク単位及びタスク
グループ単位でのタスク・スケジューリングに関する機
能を高めて、各タスクへの適切な実行時間の配分を実現
するタスク・スケジューリング装置を提供することを第
1の目的とする。ところで、優先度が高くて緊急に実行
されるべきタスクが、優先度の低いタスクグループに属
するタスクにおいて確保されているシステムリソースを
必要とする場合には、その緊急性を要するタスクがその
システムリソースの解放を長い間待つという事態が起こ
り得るので、その緊急性の要求が満たされないおそれが
ある。
【0021】そこで、本発明は、タスク単位及びタスク
グループ単位でのタスク・スケジューリングに関する機
能を更に高め、優先度の高いタスクが、優先度の低いタ
スクグループに属するタスクにおいて確保されているシ
ステムリソースを待つ時間を短縮し得るタスク・スケジ
ューリング装置を提供することを第2の目的とする。
【0022】
【課題を解決するための手段】上記第1の目的を達成す
るために、本発明に係るタスク・スケジューリング装置
は、複数のタスクのうちからタスク実行手段に実行させ
るべき1つのタスクを順次特定するタスク・スケジュー
リング装置であって、1又は複数のタスクからなる複数
のタスクグループそれぞれを当該タスクグループの優先
度に基づいて順次選択し、同一優先度の複数のタスクグ
ループそれぞれについてはタスクグループ毎に設定され
たタイムスライス値を用いるラウンドロビン方式により
当該順次選択を行う選択手段と、前記選択手段により選
択されているタスクグループに属する各タスクを、当該
タスクの当該タスクグループ内における優先度に基づい
て前記タスク実行手段の実行対象として順次特定し、同
一優先度の複数のタスクそれぞれについてはタスク毎に
設定されたタイムスライス値を用いるラウンドロビン方
式により当該順次特定を行う特定手段とを備えることを
特徴とする。
【0023】上記構成により、タスク間及びタスクグル
ープ間における優先度を反映したスケジューリングが可
能となり、更に、タスク間、タスクグループ間の緊急性
に応じて予め各タイムスライス値を適切に設定しておけ
ば、ある程度は適切な実行時間配分で各タスクを実行さ
せることが可能になる。また、例えば、ある目的を達成
するための複数スレッド構成のAPを1つのタスクグル
ープと扱い、又は連関してある目的を達成するための複
数のAPを1つのタスクグループと扱い、その目的に応
じた優先度をそのタスクグループに設定するようにすれ
ば、各タスクグループは目的に応じて円滑に実行される
ようになり、各タスクグループを構成する複数のタスク
間ではそのタスクグループ内において相互の優先度を定
めることができるため、別のタスクグループの処理内容
等を考慮する必要がなくなり、複数のタスクで構成され
るサービスシステムの設計が容易となる。
【0024】また、前記選択手段は、あるタスクグルー
プを選択した後、当該タスクグループに対応するタイム
スライス値により示される時間が経過したときに当該タ
スクグループと優先度の等しい別のタスクグループを選
択することにより、前記ラウンドロビン方式による順次
選択を行い、前記特定手段は、あるタスクを特定した
後、当該タスクに対応するタイムスライス値により示さ
れる時間が経過したときに当該タスクと優先度の等しい
別のタスクを特定することにより、前記ラウンドロビン
方式による順次特定を行い、前記特定手段は、あるタス
クの特定の時から当該タスクに対応するタイムスライス
値により示される時間が経過する前に、前記選択手段に
より当該タスクの属さないタスクグループが選択された
場合には、当該タイムスライス値により示される時間
と、当該特定の時から当該選択の時までの時間との差分
時間を、次に当該タスクを特定した際において、当該タ
スクに対応するタイムスライス値により示される時間の
代わりに用いて、当該タスクの特定の時から当該差分時
間が経過したときに当該タスクとは別のタスクを特定す
ることにより、前記順次特定を行うことを特徴とする。
【0025】上記構成により、あるタスクの実行中に、
タスクグループ単位における実行対象の切り替えが生じ
るような場合においても、その実行中であったタスク
は、次に実行対象とされたときに、その実行上限の期間
としてタイムスライス値に相当する時間の代わりに、タ
イムスライス値に相当する時間のうち前回に未消化であ
った時間を用いて、その時間分だけ実行対象とされ続け
るので、長い目で見た場合に各タスクは、それぞれのタ
イムスライス値に応じた時間配分で実行されることにな
る。つまり、タスクグループ単位での実行対象の切替が
どのようなタイミングで発生しても、タスクグループ内
におけるタスク相互間の実行時間配分は乱されず保たれ
るようになる。また、タスクグループについてのタイム
スライス値は、そのタスクグループに属する各タスクの
タイムスライス値の総和にしておく必要がなくなり、複
数のタスクで構成されるサービスシステムの設計の自由
度が高まる。
【0026】また、前記タスク・スケジューリング装置
は、更に、前記特定手段により特定されているタスク
が、実行中にシステムリソースの待ち状態となったこと
を検出すると当該システムリソースを特定するリソース
待ち検出手段と、前記リソース待ち検出手段により特定
されたシステムリソースを確保しているタスクを検出す
るリソース確保タスク検出手段と、前記リソース確保タ
スク検出手段により検出されたタスクが属するタスクグ
ループの優先度を元より高く定める優先度変更手段とを
備えることを特徴とする。
【0027】上記構成により、上記第2の目的が達成さ
れ、実行の緊急性が要求されるため優先度が高く定めら
れているタスクが、優先度の低いタスクグループに属す
るタスクにおいて確保されているシステムリソースを待
つ場合におけるその待ち時間が短縮される可能性が高ま
る。また、本発明に係るタスク・スケジューリング装置
は、複数のタスクのうちからタスク実行手段に実行させ
るべき1つのタスクを順次特定するタスク・スケジュー
リング装置であって、複数のタスクからなる1以上のタ
スクグループと、いずれのタスクグループにも属さない
1以上の独立タスクとのうちのそれぞれを、当該タスク
グループ及び独立タスクの優先度に基づいて順次選択
し、同一優先度のタスクグループと独立タスクとのそれ
ぞれについては、タスクグループ又は独立タスクの単位
で設定されたタイムスライス値を用いるラウンドロビン
方式により当該順次選択を行い、選択したものが独立タ
スクである場合には当該独立タスクを前記タスク実行手
段の実行対象として特定する選択手段と、前記選択手段
によりタスクグループが選択されたときに、当該タスク
グループに属する各タスクを、当該タスクの当該タスク
グループ内における優先度に基づいて前記タスク実行手
段の実行対象として順次特定し、同一優先度の複数のタ
スクそれぞれについてはタスク毎に設定されたタイムス
ライス値を用いるラウンドロビン方式により当該順次特
定を行う特定手段とを備えることを特徴とする。
【0028】上記構成により、1階層目に独立タスクと
タスク群とを位置づけ、2階層目にタスク群を構成する
タスクを位置づけた2階層におけるラウンドロビン方式
の優先度スケジューリングを実現することができるた
め、木目細かなスケジューリング制御が実現でき、ある
程度は適切な実行時間配分で各タスクを実行させること
が可能になる。
【0029】また、本発明に係るタスク・スケジューリ
ング方法は、コンピュータにおいて複数のタスクのうち
からタスク実行手段に実行させるべき1つのタスクを順
次特定するタスク・スケジューリング方法であって、1
又は複数のタスクからなる複数のタスクグループそれぞ
れを当該タスクグループの優先度に基づいて順次選択
し、同一優先度の複数のタスクグループそれぞれについ
てはタスクグループ毎に設定されたタイムスライス値を
用いるラウンドロビン方式により当該順次選択を行う選
択ステップと、前記選択ステップにより選択されている
タスクグループに属する各タスクを、当該タスクの当該
タスクグループ内における優先度に基づいて前記タスク
実行手段の実行対象として順次特定し、同一優先度の複
数のタスクそれぞれについてはタスク毎に設定されたタ
イムスライス値を用いるラウンドロビン方式により当該
順次特定を行う特定ステップとを含むことを特徴とす
る。
【0030】また、本発明に係るタスク・スケジューリ
ング方法は、コンピュータにおいて複数のタスクのうち
からタスク実行手段に実行させるべき1つのタスクを順
次特定するタスク・スケジューリング方法であって、複
数のタスクからなる1以上のタスクグループと、いずれ
のタスクグループにも属さない1以上の独立タスクとの
うちのそれぞれを、当該タスクグループ及び独立タスク
の優先度に基づいて順次選択し、同一優先度のタスクグ
ループと独立タスクとのそれぞれについては、タスクグ
ループ又は独立タスクの単位で設定されたタイムスライ
ス値を用いるラウンドロビン方式により当該順次選択を
行い、選択したものが独立タスクである場合には当該独
立タスクを前記タスク実行手段の実行対象として特定す
る選択ステップと、前記選択ステップによりタスクグル
ープが選択されたときに、当該タスクグループに属する
各タスクを、当該タスクの当該タスクグループ内におけ
る優先度に基づいて前記タスク実行手段の実行対象とし
て順次特定し、同一優先度の複数のタスクそれぞれにつ
いてはタスク毎に設定されたタイムスライス値を用いる
ラウンドロビン方式により当該順次特定を行う特定ステ
ップとを含むことを特徴とする。
【0031】
【発明の実施の形態】以下、本発明に係るタスク・スケ
ジューリング装置の実施の形態について説明する。 <1.実施の形態1> <1-1.構成>図1は、本発明の実施の形態1に係るタ
スク・スケジューリング装置100の機能ブロック図で
ある。
【0032】タスク・スケジューリング装置100は、
タスクのグループ化を前提として、ラウンドロビン方式
を盛り込んだ優先度スケジューリング方式によりタスク
・スケジューリングを行う装置であり、コンピュータ或
いはメモリを備えプログラム実行機能を有する機器にお
けるCPUによって、メモリに記憶された所定の制御プ
ログラムが実行されることによりその機能が実現される
装置、いわばソフトウェアを用いて実現される装置であ
り、OSの一部に相当する。このタスク・スケジューリ
ング装置100は、タスクのグループ化を前提として、
優先度の低いタスクが使用中のシステムリソースを優先
度が高いタスクが必要としている場合には、その優先度
の低いタスクの優先度を一時的に高くする機能を有する
点が主な特徴である。
【0033】機能面に着目すれば、タスク・スケジュー
リング装置100は、同図に示すように、タスク制御情
報生成部110、タスク制御情報格納部111、レディ
キュー登録部120、レディキュー記憶部121、実行
レディキュー情報格納部122、実行タスク切替制御部
130、タスク切替時間検知部140、タスク実行時間
計時部150、タスク実行時間カウンタ記憶部151、
グループ切替時間検知部160、グループ実行時間計時
部170、グループ実行時間カウンタ記憶部171及び
優先度変更部180を備えており、OS中の他の部分に
相当するプログラム実行制御機構190と連携動作する
ものである。
【0034】ここで、プログラム実行制御機構190
は、APを実行する機能、タスク制御情報の生成を要求
する機能、タスクの状態を制御する機能等を有する。こ
のAPを実行する機能は、プログラム実行制御機構19
0がタスク・スケジューリング装置100からタスクの
実行の指示を受けるとそのタスクに相当するAPの該当
部分を実行する機能である。なお、いわゆるプログラム
カウンタの保持によって、既に1度以上実行済みのタス
クに相当するAPについては、前回実行した続きのアド
レスから実行する。なお、このAPを実行する機能は、
APによりハードウェア資源やデータファイル等のシス
テムリソースの確保又は解放がなされた時にその旨をタ
スク・スケジューリング装置100に伝える機能をも含
む。
【0035】タスク制御情報の生成を要求する機能は、
プログラム実行制御機構190が、1又は複数のAPに
おけるAP内の情報又はオペレータに入力された情報等
に応じてAPを起動する場合、又はAPがいわゆるスレ
ッドの生成を指示した場合つまり新たなタスクとして部
分的プログラムを実行することを要求した場合、又はタ
スクのグループ化等をオペレータによって指示された場
合等に、タスク・スケジューリング装置100のタスク
制御情報生成部110にタスク又はタスクのグループ単
位でのタスク制御情報の生成を要求する機能である。こ
のタスクが集まってグループとされたものをタスクグル
ープと表現する。
【0036】また、タスクの状態を制御する機能は、オ
ペレータによりAPの起動指示等がなされた場合にタス
ク・スケジューリング装置100のレディキュー登録部
120にそのAPに相当するタスクのレディキューへの
登録を要求し、またAPの実行中に入出力命令等が発行
されると関連するハードウェアを制御するとともに対応
するタスクをウェイト状態にして管理し、ハードウェア
から入出力完了を示す割込み通知が発される等によりタ
スクが再度実行可能な状態になれば、タスク・スケジュ
ーリング装置100のレディキュー登録部120にタス
クのレディキューへの登録を要求する機能であり、タス
クの実行が完了した時、或いはタスクがウェイト状態等
になって実行可能状態でなくなった時には、プログラム
実行制御機構190は、タスクが停止した旨をタスク・
スケジューリング装置に伝える機能をも含む。
【0037】但し、実行中のタスクにおいて、特定のシ
ステムリソースを使用する必要が生じたときに、既にそ
のシステムリソースが他のタスクにおいて確保されてい
ることにより、そのシステムリソースの解放待ちのた
め、実行中のタスクが実行可能状態でなくなった時に
は、プログラム実行制御機構190は、タスクが停止し
た旨をタスク・スケジューリング装置100に伝えるこ
とに先駆けて、システムリソース待ちが生じた旨をその
システムリソースのリソースIDを示してタスク・スケ
ジューリング装置100に伝える機能を有する。
【0038】タスク制御情報生成部110は、プログラ
ム実行制御機構190からタスク制御情報の生成の要求
を受けると、タスク制御情報を生成して、メモリの一領
域であるタスク制御情報格納部111に格納する機能を
有し、もしタスクグループについてのタスク制御情報の
生成の要求を受けた場合には、タスク制御情報の生成に
加えて、メモリ中の一領域であるレディキュー記憶部1
21中にグループレディキューの領域を確保する機能を
有する。
【0039】このタスク制御情報は一般にタスクコント
ロールブロック(TCB)と呼ばれるものに相当し、タ
スクID又はグループIDや、タイムスライス値、優先
度、使用中システムリソースID等を含むものであり、
その内容については後に詳しく説明する。なお、以下、
タスクとタスクグループについてのタスク制御情報を総
括して表現する場合には、グループIDをもタスクID
ということとする。
【0040】また、タスク制御情報生成部110は、プ
ログラム実行制御機構190からシステムリソースの確
保又は解放がなされた旨の通知を受けると、その通知に
応じてタスク制御情報中の使用中システムリソースID
を更新する機能をも有する。レディキュー記憶部121
は、メモリの一領域であり、1つのキューである主レデ
ィキューを予め固定的に有し、また、タスク制御情報生
成部110により、キューである1又は複数のグループ
レディキューの領域が確保された場合には、そのグルー
プレディキューを有する。主レディキュー及びグループ
レディキューは、それぞれ実行可能状態にあるタスクを
示すタスクIDが優先度の高い順にならべて格納される
ための領域である。
【0041】なお、レディキューには主レディキューと
グループレディキューとがあり、これら各レディキュー
については、後に詳しく説明する。レディキュー登録部
120は、タスクを示すタスクIDが実行順にならぶよ
うに、プログラム実行制御機構190或いは実行タスク
切替制御部130に指定されたタスクIDをレディキュ
ーに格納する機能を有する。なお、タスクIDをレディ
キューに格納する際には、タスクの優先度を示す情報と
タスクIDとの組をレディキューの一要素として格納す
るものとする。以下、レディキューにタスクIDを格納
することを、レディキューにタスクを登録するともい
う。
【0042】実行レディキュー情報格納部122は、現
在実行対象となっているレディキューが、いずれのレデ
ィキューであるかを指し示す情報、例えばポインタ等の
情報を、保持するメモリ領域であり、実行タスク切替制
御部130によって用いられる領域である。以下、実行
レディキュー情報格納部122に保持されている情報を
実行レディキューと呼ぶこととする。
【0043】タスク実行時間カウンタ記憶部151はタ
スクについての連続実行時間を示すカウント値(以下、
「タスク実行時間カウンタ」という。)を保持するため
のメモリ領域であり、タスク実行時間計時部150によ
りそのタスク実行時間カウンタは時間の経過に応じてカ
ウントアップされる。タスク実行時間カウンタは、例え
ばクロックティック(TICK)を単位として表され
る。
【0044】なお、タスク実行時間計時部150は、カ
ウントの開始指示を受けるとタスク実行時間カウンタを
0にした後にそのカウントアップを開始し、カウントの
停止指示を受けるとカウントアップを停止する機能を有
する。タスク切替時間検知部140は、実行タスク切替
制御部130から実行を開始するタスクについてのタス
クIDの通知を受けると、そのタスクIDに基づいてそ
のタスクについてのタスク制御情報を参照してタイムス
ライス値を取得し、タイムスライス値が−1という連続
実行時間が無制限のものである場合を除き、そのタイム
スライス値とタスク実行時間カウンタの比較を繰り返
し、両者が一致したことを検知した時に比較を停止して
実行タスク切替制御部130に対し、タスクの実行が時
間切れとなった旨を伝える機能を有する。
【0045】グループ実行時間カウンタ記憶部171は
タスクグループについての連続実行時間を示すカウント
値(以下、「グループ実行時間カウンタ」という。)を
保持するためのメモリ領域であり、グループ実行時間計
時部170によりそのグループ実行時間カウンタは時間
の経過に応じてカウントアップされる。このグループ実
行時間カウンタは、タスク実行時間カウンタと同じ単位
で表される。
【0046】なお、グループ実行時間計時部170は、
カウントの開始指示を受けるとグループ実行時間カウン
タを0にした後にそのカウントアップを開始し、カウン
トの停止指示を受けるとカウントアップを停止する機能
を有する。グループ切替時間検知部160は、実行タス
ク切替制御部130から実行レディキューの指し示すグ
ループレディキューに対応するグループについてのグル
ープIDの通知を受けると、そのグループIDに基づい
てそのタスクグループについてのタスク制御情報を参照
してタイムスライス値を取得し、タイムスライス値が−
1という連続実行時間が無制限のものである場合を除
き、そのタイムスライス値とグループ実行時間カウンタ
との比較を繰り返し、両者が一致したことを検知した時
に比較を停止し実行タスク切替制御部130に対し、タ
スクグループの実行が時間切れとなった旨を伝える機能
を有する。
【0047】実行タスク切替制御部130は、各レディ
キューを参照し、実行するタスクを切り替える制御を行
う機能を有する。即ち、実行タスク切替制御部130
は、タスク切替時間検知部140からタスクの実行が時
間切れとなった旨の通知を受けた時、グループ切替時間
検知部160からタスクグループの実行が時間切れとな
った旨の通知を受けた時、又は主レディキュー若しくは
実行レディキュー指し示すレディキューの先頭の要素が
変更されたことを検出した時に、実行中のタスクを停止
させるようプログラム実行制御機構190に伝えて、レ
ディキューの先頭要素のタスクIDで示されるタスクを
新たに実行するタスクと特定してそのタスクの実行を開
始するようにプログラム実行制御機構190に伝え、ま
た、プログラム実行制御機構190からタスクが停止し
た旨の通知を受けた時にはレディキューの先頭要素を取
り出して次にレディキューの先頭に位置する要素のタス
クIDで示されるタスクを新たに実行するタスクと特定
してそのタスクの実行を開始するようにプログラム実行
制御機構190に伝える機能を有する。
【0048】なお、実行タスク切替制御部130は、実
行するタスクを切り替える制御を行う機能の実現のため
に、必要に応じて、タスク制御情報を参照し、実行レデ
ィキュー情報格納部122の内容を参照及び更新し、タ
スク実行時間計時部150及びグループ実行時間計時部
170に対してカウントの開始又は停止の指示を出し、
タスク切替時間検知部140に対してタスクIDを通知
し、グループ切替時間検知部160に対してグループI
Dを通知し、レディキュー登録部120に対してレディ
キューにタスク又はタスクグループを再度登録するよう
に指示する。
【0049】また、優先度変更部180は、プログラム
実行制御機構190からシステムリソース待ちが生じた
旨の通知を受けた場合に、タスク又はタスクグループの
優先度を一時的に変更する優先度一時変更処理を行うも
のである。なお、優先度一時変更処理については後に詳
しく説明する。 <1-2.データ>以下、タスク制御情報格納部111に
格納されるタスク制御情報について説明する。
【0050】図2は、タスク制御情報のデータ構成を示
すとともに、複数のタスク制御情報の内容例を一覧表形
式で表した図である。タスク制御情報は、タスク或いは
タスクグループ毎に存在する情報であり、同図に示すよ
うに、タスク/グループ区分201、タスクID(グル
ープID)202、優先度203、タイムスライス値2
04、所属グループID205、グループキューアドレ
ス206、プログラム実行アドレス207、旧優先度2
08及び使用中リソースID209を含んで構成され
る。
【0051】ここで、タスク/グループ区分201は、
タスク制御情報がタスクについてのものであるか、タス
クグループについてのものであるかの別を示す情報であ
り、タスク或いはグループの旨を示す値をとる。タスク
ID(グループID)202は、タスクを識別するため
のID、或いはタスクグループを識別するための情報で
ある。
【0052】優先度203は、タスク又はタスクグルー
プの優先度であり、例えば1から16まで等の範囲にお
ける1つの値をとり、ここでは数値の低いものを優先度
の高いものとする。なお、タスクグループを構成しない
タスクと、タスクグループとは優先度の高い順、即ち優
先度203を示す数値の低い順に実行される。また、同
一のタスクグループを構成する各タスクについてはその
タスク相互間で優先度の高い順に実行されることにな
る。タスクグループが実行されるとは、そのタスクグル
ープを構成する各タスクが実行されることをいう。
【0053】タイムスライス値204は、タスク又はタ
スクグループについての連続実行可能時間の制限値を示
すものである。この値は、タスク実行時間カウンタの単
位と同じ、例えばクロックティック(TICK)を単位
として表される。また、−1という値で連続実行可能時
間に制限が無いことを示す。タスクグループについての
タイムスライス値は、そのタスクグループを構成する各
タスクの間で、即ちそのタスクグループに属する各タス
クの間で、タスク切替を行いつつ各タスクを連続実行す
る期間の上限を意味する。
【0054】所属グループID205は、タスク制御情
報に対応するタスクが、タスクグループを構成するもの
である場合にはその所属するタスクグループのグループ
IDを値としてとるものであり、タスクグループを構成
するタスク以外についてのタスク制御情報においては意
味を持たず例えば0を値としてとるものである。グルー
プキューアドレス206は、タスクグループについての
タスク制御情報においてはタスクグループに対応して確
保したグループレディキューのアドレスを示し、タスク
についてのタスク制御情報においては意味を持たず例え
ば0(NULL)を値としてとるものである。
【0055】プログラム実行アドレス207は、タスク
についてのタスク制御情報においてはプログラム実行制
御機構190による実行の対象となるアドレスを示し、
タスクグループについてのタスク制御情報においては意
味を持たず例えば0(NULL)を値としてとるもので
ある。旧優先度208は、優先度一時変更処理におい
て、タスク又はタスクグループの本来の優先度を保存し
ておくために用いられる情報であり、初期状態では意味
を持たず、優先度変更部180により設定及び参照され
る。
【0056】使用中リソースID209は、タスクにお
いて確保されている状態にあるシステムリソースを識別
するためのリソースIDを示す情報であり、例えば可変
長の情報で、複数のシステムリソースが確保されている
場合には複数のリソースIDを示す。なお、タスク制御
情報はタスク制御情報生成部110により生成されるも
のであり、プログラム実行制御機構190は、例えばオ
ペレータの入力操作により、各タスク制御情報を生成す
るために必要な情報を全て取得して、これをタスク制御
情報生成部110に渡してタスク制御情報の生成を要求
する。また、AP内のデータ部や起動制御用の情報部分
に、予め優先度やタイムスライス値が定義されているこ
ととした場合においては、プログラム実行制御機構19
0は、オペレータからAPを指定した起動指示を受ける
と、そのAPにタスクIDを付与し、タスクIDをその
AP内に定義された優先度やタイムスライスとともにタ
スク制御情報生成部110に渡してタスク制御情報の生
成を要求するものであってもよく、APが複数スレッド
構成である場合には、AP全体をタスクグループとして
各スレッド構成単位をそのタスクグループに属するタス
クとして一括してタスク制御情報の生成に必要な情報を
タスク制御情報生成部110に渡して、タスク制御情報
の生成を要求するものであってもよい。
【0057】即ち、タスク制御情報生成部110は、基
本的にプログラム実行制御機構190から、タスク又は
タスクグループの別と、タスクID或いはグループID
と、優先度と、タイムスライス値と、タスクグループに
属するタスクであれば所属するタスクグループのグルー
プIDと、タスクに対応するプログラム部分の実行アド
レスとの情報を渡されてタスク制御情報の生成の要求を
受け、これらの情報に基づいてタスク制御情報を生成す
る。特にタスクグループについては、タスク制御情報生
成部110は、グループレディキューの領域を確保する
とともに、その領域を指すポインタをグループキューア
ドレス206に設定する。
【0058】また、タスク制御情報生成部110は、プ
ログラム実行制御機構190からシステムリソースの確
保又は解放がなされた旨の通知を受けると、それに応じ
て使用中リソースID209を更新し、この使用中リソ
ースID209は優先度変更部180により参照され
る。図2に示した内容例は、タスクAとタスクBと、タ
スクグループCを構成するタスクC1、C2及びC3
と、タスクグループDを構成するタスクD1、D2及び
D3とが実行対象となり得る状態を示している。なお、
ここではタイムスライス値を、所定TICKをまとめて
1単位としてその単位数で示している。
【0059】例えば、タスクAとタスクBとタスクグル
ープCとタスクグループDとの間では、タスクAが最も
優先度が高く、次にタスクBの優先度が高く、タスクグ
ループCとタスクグループDとは同一優先度でそれぞれ
タイムスライス値が3と9である。なお、タスクAとタ
スクBとの実行が完了し、タスクグループCとタスクグ
ループDとがタイムスライス値ずつ交互に実行されるよ
うになった段階では、タスクグループCの属する全ての
タスクの実行時間とタスクグループDに属する全てのタ
スクの実行時間との比は、長い時間でみれば基本的に
3:9となる。
【0060】また、タスクグループCに属するタスクC
1とタスクC2とタスクC3との間では、タスクC1が
最も優先度が高く、タスクC2とタスクC2とは優先度
が等しく両方ともタイムスライス値が1である。また、
タスクグループDに属するタスクD1とタスクD2とタ
スクD3とは優先度が等しく、それぞれタイムスライス
値が3、1、2である。
【0061】なお、この図2の内容例では、タスクD1
は、現在、R10というリソースIDで特定されるシス
テムリソースと、R11というリソースIDで特定され
るシステムリソースとを確保していることを示してい
る。以下、レディキュー記憶部121に格納されるレデ
ィキューについて説明する。
【0062】図3は、レディキュー記憶部121に格納
されるレディキューの内容例を示す図である。レディキ
ュー記憶部121には、予め主レディキューの領域が存
在し、また、タスク制御情報生成部110によって、新
たに1又は複数のグループレディキューが設けられる。
図3では、図2に例示したタスク制御情報に対応した内
容例を示している。
【0063】レディキューの各要素は、タスクID及び
優先度の組であり、主レディキューには、タスクグルー
プ、又はどのタスクグループにも属さない独立したタス
クが、登録され得るのであって、グループレディキュー
には対応するタスクグループを構成するタスクが登録さ
れ得る。図3の例は、主レディキュー301にタスク
A、タスクB、タスクグループC及びタスクグループD
が登録されており、タスクグループCに対応するグルー
プレディキュー302にタスクC1、タスクC2及びタ
スクC3が登録されており、タスクグループDに対応す
るグループレディキュー303にタスクD1、タスクD
2及びタスクD3が登録されている状態を示している。
なお、同図では左がレディキューの先頭を示し、各レデ
ィキューにはレディキュー登録部120又は優先度変更
部180によって、要素が必ず優先度順にならぶように
格納される。
【0064】<1-3.動作>以下、上述した構成を備
え、上述したタスク制御情報及びレディキューを取り扱
うタスク・スケジューリング装置100の動作について
説明する。まず、タスク制御情報生成部110は、プロ
グラム実行制御機構190から、APを起動する場合又
はAPが新たなタスクとして部分的プログラムを実行す
ることを要求した場合又はタスクのグループ化等をオペ
レータによって指示された場合等に要求を受けて、タス
ク又はタスクグループ毎にタスク制御情報を生成し、タ
スクグループについてのタスク制御情報を生成する際に
はグループレディキューの領域を確保する。
【0065】また、プログラム実行制御機構190は、
APの起動の際にレディキュー登録部120にそのAP
に相当するタスクのレディキューへの登録を要求し、ま
た、ウェイト状態として管理しているタスクが再び実行
可能状態になればレディキュー登録部120にそのタス
クのレディキューへの登録を要求するので、これを受け
てレディキュー登録部120は、次に示すレディキュー
登録処理を行う。
【0066】また、レディキューへのタスク又はタスク
グループの登録の要求が実行タスク切替制御部130か
らなされた場合にも同様にレディキュー登録部120
は、次に示すレディキュー登録処理を行う。なお、登録
の要求は、タスクID又はグループIDを指定してなさ
れる。図4は、レディキュー登録部120によりなされ
るレディキュー登録処理を示すフローチャートである。
【0067】レディキュー登録部120は、登録を要求
されたタスク(又はタスクグループ)に対応するタスク
制御情報を、登録要求とともに指定されたタスクIDに
基づいて検索することにより参照し(ステップS1
1)、そのタスク制御情報中の所属グループID205
に基づいて、指定されたタスクがタスクグループに属す
るものであるか否かを判定する(ステップS12)。
【0068】ステップS12において、指定されたタス
クがタスクグループに属するものでないと判定した場合
には、レディキュー登録部120は、主レディキューの
各要素が優先度順にならぶように、指定されたタスクの
タスクIDと優先度との組である要素を、主レディキュ
ーに挿入して(ステップS13)、レディキュー登録処
理を終了する。なお、タスクグループが指定された場合
にも同様に主レディキューにグループIDと優先度との
組である要素を挿入する。
【0069】但し、ステップS13において、レディキ
ュー登録部120は、主レディキューに挿入する要素と
同一優先度の要素が既に主レディキューに格納されてい
る場合にはその挿入する要素を、同一優先度の要素のう
ちで最後尾になるように挿入する。このステップS13
の処理は、例えば、挿入する要素を主レディキューの最
後尾に仮に置いて、その要素よりも主レディキュー中で
1つ前に格納されている要素がその挿入する要素より優
先度が低いか否かを比較判断し、低い場合には両要素の
格納位置を交換し、また挿入する要素よりも主レディキ
ュー中で1つ前に格納されている要素がその挿入する要
素より優先度が低いか否かを比較判断して低い場合には
両要素の格納位置を交換するといった手順を、挿入する
要素の1つ前に格納されている要素の優先度が挿入する
要素と等しくなる又は高くなるまで繰り返すことによっ
て実現できる。
【0070】ステップS12において、指定されたタス
クがタスクグループに属するものであると判定した場合
には、レディキュー登録部120は、所属グループID
205で示される値をグループIDとするタスクグルー
プのタスク制御情報中のグループキューアドレス206
を参照して、そのタスクグループに対応するグループレ
ディキューに対して、指定されたタスクを登録する(ス
テップS14)。
【0071】即ち、レディキュー登録部120は、その
グループレディキューの各要素が優先度順にならぶよう
に、指定されたタスクのタスクIDと優先度との組であ
る要素を、そのグループレディキューに挿入する。但
し、この場合もステップS13と同様に、レディキュー
登録部120は、グループレディキューに挿入する要素
と同一優先度の要素が既にそのグループレディキューに
格納されている場合にはその挿入する要素を、同一優先
度の要素のうちで最後尾になるように挿入する。
【0072】タスクグループに属するタスクをグループ
レディキューに登録するステップS14に続いて、レデ
ィキュー登録部120は、そのタスクグループを主レデ
ィキューに登録済みであるか否かを判定する(ステップ
S15)。即ち、レディキュー登録部120は、そのタ
スクグループのグループIDが主レディキューに格納さ
れているか否かを判定する。
【0073】ステップS15において、タスクグループ
が主レディキューに登録済みであると判定した場合に
は、レディキュー登録部120は、レディキュー登録処
理を終了し、タスクグループが主レディキューに登録済
みでないと判定した場合には、そのタスクグループを主
レディキューに登録して(ステップS16)、レディキ
ュー登録処理を終了する。
【0074】ステップS16においては、レディキュー
登録部120は、主レディキューの各要素が優先度順に
ならぶようにそのタスクグループのグループIDと優先
度との組である要素を主レディキューに挿入する。但
し、この場合もステップS13と同様に、レディキュー
登録部120は、主レディキューに挿入する要素と同一
優先度の要素が既にその主レディキューに格納されてい
る場合にはその挿入する要素を、同一優先度の要素のう
ちで最後尾になるように挿入する。
【0075】次に、レディキュー登録部120によって
タスク又はタスクグループが登録された各レディキュー
を参照しつつ、実行タスク切替制御部130を中心とし
てタスク・スケジューリング装置100の各部によりな
される実行タスク切替制御処理について説明する。図5
は、タスク・スケジューリング装置100によりなされ
る実行タスク切替制御処理を示すフローチャートであ
る。
【0076】実行タスク切替制御部130は、まず主レ
ディキューの先頭の要素に着目し(ステップS70
1)、その要素のタスクIDによってタスク制御情報格
納部111中のタスク制御情報の中から、対応するタス
ク制御情報を検索して、タスク制御情報中のタスク/グ
ループ区分201を参照することにより、主レディキュ
ーにおいて着目した要素がタスクグループについてのも
のであるか否かを判定する(ステップS702)。
【0077】ステップS702においてタスクグループ
についてのものでないと判定した場合、即ちタスクにつ
いてのものであると判定した場合には、実行タスク切替
制御部130は実行レディキュー情報格納部122中の
実行レディキューを主レディキューを指し示すように設
定する(ステップS703)。また、ステップS702
においてタスクグループについてのものであると判定し
た場合には、実行タスク切替制御部130は、実行レデ
ィキューをそのタスクグループに対応するグループレデ
ィキューを指し示すように設定する(ステップS70
4)。即ち、タスクグループに対応するタスク制御情報
中のグループキューアドレス206の値を実行レディキ
ューに設定する。
【0078】ステップS704に続いて、実行タスク切
替制御部130は、グループ実行時間計時部170にカ
ウントの開始を指示するとともにグループ切替時間検知
部160に主レディキューにおいて着目している要素の
グループIDを伝える。これに応じてグループ実行時間
計時部170はグループ実行時間カウンタをカウントア
ップし始め、グループ切替時間検知部160は、そのグ
ループIDに対応するタスク制御情報からタイムスライ
ス値を得てそのタイムスライス値とグループ実行時間カ
ウンタとが一致することの繰り返し判定を、開始する
(ステップS705)。
【0079】ステップS705に続いて、実行タスク切
替制御部130は、実行レディキューで指し示されてい
るレディキューの先頭の要素に着目する(ステップS7
06)。ステップS703又はステップS706の後
に、実行タスク切替制御部130は、タスク実行時間計
時部150にカウントの開始を指示するとともにタスク
切替時間検知部140に対して最後に着目した要素のタ
スクIDを伝え、これに応じてタスク実行時間計時部1
50はタスク実行時間カウンタをカウントアップし始
め、タスク切替時間検知部140はそのタスクIDに対
応するタスク制御情報からタイムスライス値を得てその
タイムスライス値とタスク実行時間カウンタとが一致す
ることの繰り返し判定を開始する(ステップS70
7)。
【0080】ステップS707に続いて、実行タスク切
替制御部130は、プログラム実行制御機構190に対
して、最後に着目したタスクIDを伝えてプログラムの
実行開始を指示する(ステップS708)。これを受け
てプログラム実行制御機構190は、タスクIDからタ
スク制御情報を参照することによりプログラム実行アド
レス207を得て、そのアドレスからプログラムの実行
を開始する。
【0081】ステップS708の後に、実行タスク切替
制御部130はタスク切替時間検知部140からタスク
の実行が時間切れとなった旨の通知を受けているかを判
定し(ステップS709)、この通知を受けていなけれ
ばプログラム実行制御機構190からタスクが停止した
旨の通知を受けていたか判定し(ステップS714)、
この通知を受けていなければグループ切替時間検知部1
60からタスクグループの実行が時間切れとなった旨の
通知を受けているかを判定し(ステップS716)、こ
の通知を受けていなければ主レディキューの先頭の要素
が変更されたか否かを判定し(ステップS721)、主
レディキューの先頭の要素が変更されていないと判定し
た場合には、グループレディキューが実行レディキュー
に指し示されており、かつグループレディキューの先頭
が変更されたか否かを判定する(ステップS724)。
【0082】なお、タスクが停止した旨の通知とグルー
プ実行時間切れの通知とタスク実行時間切れの通知とが
同時に発されていた場合には、実行タスク切替制御部1
30には、この順で各通知が伝えられるようにしている
ものとする。また、ステップS721及びステップS7
24の判定は、着目したタスクIDを一時的にメモリ領
域に保持しておき、そのタスクIDとレディキュー先頭
の要素のタスクIDとを比較することによりなされる。
このステップS721及びステップS724の判定は、
プログラム実行制御機構190から優先度の高いタスク
の登録が随時、レディキュー登録部120に要求され得
るので、これに対応するために行われる。
【0083】ステップS709において、実行タスク切
替制御部130は、タスク切替時間検知部140からタ
スクの実行が時間切れとなった旨の通知を受けている場
合には、プログラム実行制御機構190に対して実行中
のタスクを停止するよう指示し(ステップS710)、
これを受けてプログラム実行制御機構190は実行中の
タスクに対応するプログラムの実行を停止する。なお、
プログラム実行制御機構190はタスクの実行を停止す
る際には、そのタスクについてのタスク制御情報中のプ
ログラム実行アドレス207を次に実行すべきアドレス
となるように更新する。
【0084】ステップS710に続いて、実行タスク切
替制御部130は、タスク実行時間計時部150に対し
カウントの停止を指示し、これを受けてタスク実行時間
計時部150はタスク実行時間カウンタのカウントアッ
プを停止する(ステップS711)。ステップS711
に続いて、実行タスク切替制御部130は、ステップS
710で停止を指示したタスクについてのタスクIDを
レディキューの先頭から取り出した後、レディキュー登
録部120に対してそのタスクを再度登録するよう要求
し、これに応じてレディキュー登録部120は図4に示
したレディキュー登録処理を行い、そのタスクを実行レ
ディキューが指し示すレディキューに登録する(ステッ
プS712)。
【0085】ステップS712の後に、実行タスク切替
制御部130は、実行レディキューが指し示すレディキ
ューが主レディキューであるか否かを判定する(ステッ
プS713)。なお、主レディキューは予め固定的にレ
ディキュー記憶部121に定められているため、その固
定的に定められているアドレスを実行レディキューが指
し示すか否かによってその判定はなされる。
【0086】ステップS713において、実行レディキ
ューが指し示すレディキューが主レディキューであると
判定した場合には再びステップS701に戻り、実行タ
スク切替制御部130は、主レディキューの先頭の要素
に着目して新たなタスクの実行に向けた処理を行う。ま
た、ステップS713において、実行レディキューが指
し示すレディキューが主レディキューではない、即ちグ
ループレディキューであると判定した場合にはステップ
S706に戻り、実行タスク切替制御部130はその実
行レディキューが指し示すグループレディキューの先頭
の要素に着目して新たなタスクの実行に向けた処理を行
う。
【0087】また、ステップS714において、実行タ
スク切替制御部130は、プログラム実行制御機構19
0からタスクが停止した旨の通知を受けている場合に
は、実行レディキューが指し示すレディキューの先頭要
素、即ち最後に着目している要素をそのレディキューか
ら取り出し(ステップS715)、その後、上述のステ
ップS713の処理に移る。
【0088】また、ステップS716において、実行タ
スク切替制御部130は、グループ切替時間検知部16
0からタスクグループの実行が時間切れとなった旨の通
知を受けている場合には、グループ実行時間計時部17
0にカウントの停止を指示し、これを受けてグループ実
行時間計時部170はグループ実行時間カウンタのカウ
ントアップを停止する(ステップS717)。
【0089】ステップS717に続いて、実行タスク切
替制御部130は、主レディキューの先頭要素を主レデ
ィキューから取り出し、その要素のグループIDで示さ
れるタスクグループを再び主レディキューに登録するよ
うレディキュー登録部120に要求し、これに応じてレ
ディキュー登録部120は図4に示したレディキュー登
録処理を行い、そのタスクグループを主レディキューに
登録する(ステップS718)。
【0090】ステップS718に続いて、実行タスク切
替制御部130は、プログラム実行制御機構190に対
して実行中のタスクを停止するよう指示し(ステップS
719)、これを受けてプログラム実行制御機構190
は実行中のタスクに対応するプログラムの実行を停止す
る。ステップS719に続いて、実行タスク切替制御部
130は、タスク実行時間計時部150に対しカウント
の停止を指示し、これを受けてタスク実行時間計時部1
50はタスク実行時間カウンタのカウントアップを停止
する(ステップS720)。また、ステップS720の
後には再びステップS701に戻り、実行タスク切替制
御部130は、主レディキューの先頭の要素に着目して
新たなタスクの実行に向けた処理を行う。
【0091】また、ステップS721において、主レデ
ィキューの先頭の要素が変更されていると判定した場合
には、実行タスク切替制御部130は、実行レディキュ
ーが指し示すレディキューが主レディキューか否かを判
定し(ステップS722)、主レディキューでなければ
グループ実行時間計時部170にグループ実行時間カウ
ンタのカウントアップを停止させる(ステップS72
3)。
【0092】ステップS723の後、又はステップS7
22において実行レディキューが指し示すレディキュー
が主レディキューであると判定した後、実行タスク切替
制御部130は、プログラム実行制御機構190に対し
て実行中のタスクを停止するよう指示し(ステップS7
19)、タスク実行時間計時部150にタスク実行時間
カウンタのカウントアップを停止させ(ステップS72
0)、その後に再びステップS701に戻り、主レディ
キューの先頭の要素に着目して新たなタスクの実行に向
けた処理を行う。
【0093】また、ステップS724において、グルー
プレディキューが実行レディキューに指し示されてお
り、かつグループレディキューの先頭が変更されたと判
定した場合には、実行タスク切替制御部130は、プロ
グラム実行制御機構190に対して実行中のタスクを停
止するよう指示し(ステップS725)、タスク実行時
間計時部150にタスク実行時間カウンタのカウントア
ップを停止させ(ステップS726)、その後に再びス
テップS706に戻り、実行レディキューが指し示すグ
ループレディキューの先頭の要素に着目して新たなタス
クの実行に向けた処理を行う。
【0094】一方、ステップS724において、グルー
プレディキューが実行レディキューに指し示されており
かつグループレディキューの先頭が変更されたという事
象が発生していないと判定した場合には、実行タスク切
替制御部130は、ステップS709に戻り、タスク切
替時間検知部140からタスクの実行が時間切れとなっ
た旨の通知を受けているかの判定を行う。
【0095】次に、優先度変更部180によりなされる
優先度一時変更処理について説明する。図6は、優先度
変更部180によりなされる優先度一時変更処理を示す
フローチャートである。優先度変更部180は、プログ
ラム実行制御機構190からシステムリソース待ちが生
じた旨がリソースIDを示して通知された場合に、その
リソースIDを得るとともに、レディキュー記憶部12
1に格納されている各レディキューの内容とタスク制御
情報格納部111に格納されているタスク制御情報とを
参照することにより、現在実行中のタスクの優先度を得
る(ステップS31)。なお、実行中のタスクがタスク
グループに属するものである場合にはそのタスクグルー
プの優先度を得る。
【0096】続いて優先度変更部180は、ステップS
31で得たリソースIDで特定されるシステムリソース
を使用中のタスク、つまりタスク制御情報中に現在確保
しているものとしてそのリソースIDが含まれていると
ころのタスクを検出し、ステップS31で得た優先度よ
りもそのタスクの優先度(そのタスクがタスクグループ
に属するものである場合にはそのタスクグループの優先
度)が低いか否かを判定し、低いときにはそのタスク或
いはタスクグループの優先度を、タスク制御情報中のそ
のタスク或いはタスクグループについての旧優先度20
8として設定して、更にステップS31で得た優先度よ
り1つ高い優先度を、タスク制御情報中のそのタスク或
いはタスクグループについての優先度203として設定
し、この優先度203の変更に合わせてそのタスク或い
はタスクグループについての主レディキュー内の要素の
順を変更する(ステップS32)。
【0097】なお、図6のフローチャートでは特に示し
ていないが、ステップS32において、ステップS31
で得たリソースIDで特定されるシステムリソースを確
保しているタスクが検出できない場合には、つまりその
システムリソースが他のタスクによって確保されている
以外の理由で現在確保できない状態にある場合には、優
先度変更部180は、優先度一時変更処理を打ち切り、
特にタスクの優先度の変更に係る制御を行わない。ま
た、あるタスクグループ内のあるタスクが確保している
システムリソースを、そのタスクグループ内の別のタス
クが待っているような場合にも、優先度変更部180
は、優先度一時変更処理を打ち切り、特にタスクの優先
度の変更に係る制御を行わない。
【0098】ステップS32の後は、プログラム実行制
御機構190からタスクが停止した旨の通知を受けて、
タスク・スケジューリング装置100において実行タス
ク切替制御部130を中心として前述した実行タスク切
替制御処理がなされる。この実行タスク切替制御処理に
応じて各タスクが実行されることになる。従って、ステ
ップS32によって優先度が高く設定されたタスク、或
いは優先度が高く設定されたタスクグループに属する各
タスクは、ある程度優先的に実行され、優先度変更部1
80がステップS31得たリソースIDで示されるシス
テムリソースを解放する時が到来することになる。
【0099】優先度変更部180は、ステップS32の
後、タスク制御情報格納部111内のタスク制御情報中
の使用中リソースID209を監視して、ステップS3
1で得たリソースIDが含まれなくなるのを待つ。ステ
ップS31で優先度変更部180によって取得されたリ
ソースIDで特定されるシステムリソースが実際に解放
されると、プログラム実行制御機構190がその解放さ
れた旨の通知をタスク制御情報生成部110に伝え、こ
れを受けてタスク制御情報生成部110がタスク制御情
報中の使用中リソースID209を更新する。
【0100】従って、優先度変更部180は、ステップ
S31で得たリソースIDにより特定されるシステムリ
ソースが解放された時、即ちタスク制御情報中に使用中
リソースID209として、ステップS31で得たリソ
ースが含まれなくなった時に、それまでそのシステムリ
ソースを確保していたタスクについて(そのタスクがタ
スクグループに属する場合にはそのタスクグループにつ
いて)のタスク制御情報中の優先度203に旧優先度2
08の値を設定し、この優先度203の変更に合わせて
そのタスク或いはタスクグループについての主レディキ
ュー内の要素の順を変更し(ステップS33)、これに
より優先度一時変更処理は終了する。
【0101】<1-4.具体動作例>以下、上述した実行
タスク切替制御処理及び優先度一時変更処理を具体例に
基づいて図7及び図8を用いて説明する。なお、図8
は、各タスクについての実行時間を示すタイムチャート
である。ここでは、タスク制御情報格納部111に、図
2に例示した内容のタスク制御情報群が格納されてお
り、レディキュー記憶部121内の各レディキューは、
図3に例示した内容となっている状態を前提として説明
する。
【0102】<1-4-1.タスクAの実行>まず、実行タ
スク切替制御部130は、主レディキュー301の先頭
要素のタスクID、つまりタスクAのタスクIDに着目
し(ステップS701)、このタスクAはタスク/グル
ープ区分201がタスクであるので(ステップS70
2)、主レディキューを指し示すように実行レディキュ
ーを設定し(ステップS703)、タスク実行時間計時
部150にタスク実行時間カウンタのカウントアップを
開始させるとともにタスク切替時間検知部140にタス
クAのタスクIDを通知し(ステップS707)、プロ
グラム実行制御機構190に対しタスクAに相当するプ
ログラムの実行を指示する(ステップS708)。
【0103】これにより、タスクAのタイムスライス値
204は−1であるため、タスク切替時間検知部140
はタスクの実行時間切れを実行タスク切替制御部130
に伝えることはなく、タスクAが完了するか或いはウェ
イト状態等になるまでタスクAは実行されることにな
る。その後、タスクAが停止した旨の通知をプログラム
実行制御機構190から受けると実行タスク切替制御部
130は、タスクAのタスクIDを含むレディキューの
先頭要素を取り出し(ステップS714、S715)、
この時に実行レディキューは主レディキューを指し示し
ているのでステップS713でyesの分岐に進み、再
び主レディキューの先頭の要素に着目する(ステップS
701)。
【0104】<1-4-2.タスクBの実行>従って、実行
タスク切替制御部130は、この時において主レディキ
ュー301の先頭要素となっているタスクBのタスクI
Dに着目し(ステップS701)、このタスクBについ
ても上述のタスクAについてと同様の手順で実行し(ス
テップS702、S703、S707、S708)、タ
スクBが停止すると(ステップS714)、タスクBの
タスクIDを主レディキューから取り出し(ステップS
715)、再び主レディキューの先頭要素に着目する
(ステップS713、ステップS701)。
【0105】<1-4-3.タスクグループC中のタスクC
1の実行>この時、実行タスク切替制御部130は、主
レディキュー301の先頭要素となっているタスクグル
ープCのグループIDに着目し(ステップS701)、
このタスクグループCはタスク/グループ区分201が
グループであるので(ステップS702)、グループレ
ディキュー302を指し示すように実行レディキューを
設定し(ステップS704)、グループ実行時間計時部
170にグループ実行時間カウンタのカウントアップを
開始させるとともにグループ切替時間検知部160にタ
スクグループCのグループIDを通知する(ステップS
705)。この結果、グループ切替時間検知部160
は、タスクグループCのタイムスライス値である3に相
当する時間が経過した時に、実行タスク切替制御部13
0に対してタスクグループの実行の時間切れの旨を通知
することになる。
【0106】ステップS705に続いて、実行タスク切
替制御部130は、グループレディキュー302の先頭
要素となっているタスクC1のタスクIDに着目し(ス
テップS706)、タスク実行時間計時部150にタス
ク実行時間カウンタのカウントアップを開始させるとと
もにタスク切替時間検知部140にタスクC1のタスク
IDを通知し(ステップS707)、プログラム実行制
御機構190に対してタスクC1に相当するプログラム
の実行を指示する(ステップS708)。
【0107】ここでは、タスクC1は3単位に相当する
時間以上実行を続け自ら停止しなかったものとする。す
ると、タスクC1のタイムスライス値は−1であるた
め、タスクC1の実行時間切れが実行タスク切替制御部
130に通知されることはなく、実行タスク切替制御部
130はグループ切替時間検知部160からタスクグル
ープの実行時間切れの旨の通知を受け(ステップS71
6)、グループ実行時間計時部170に対しグループ実
行時間カウンタのカウントアップを停止させ(ステップ
S717)、主レディキューの先頭からタスクグループ
CについてのグループIDを含む要素を取り出し、レデ
ィキュー登録部120にタスクグループCを主レディキ
ューに登録させ(ステップS718)、プログラム実行
制御機構190に指示を出して実行中のタスクC1の実
行を停止させ(ステップS719)、タスク実行時間計
時部150に対しタスク実行時間カウンタのカウントア
ップを停止させ(ステップS720)、再び主レディキ
ューの先頭要素に着目する(ステップS701)。
【0108】<1-4-4.タスクグループD中のタスクD
1の実行>この時には主レディキュー301の先頭要素
となっているタスクグループDのグループIDに着目し
(ステップS701)、このタスクグループDはタスク
/グループ区分201がグループであるので(ステップ
S702)、グループレディキュー303を指し示すよ
うに実行レディキューを設定し(ステップS704)、
グループ実行時間計時部170にグループ実行時間カウ
ンタのカウントアップを開始させるとともにグループ切
替時間検知部160にタスクグループDのグループID
を通知する(ステップS705)。この結果、グループ
切替時間検知部160は、タスクグループDのタイムス
ライス値である9に相当する時間が経過した時に、実行
タスク切替制御部130に対してタスクグループの実行
の時間切れの旨を通知することになる。
【0109】ステップS705に続いて、実行タスク切
替制御部130は、グループレディキュー303の先頭
要素となっているタスクD1のタスクIDに着目し(ス
テップS706)、タスク実行時間計時部150にタス
ク実行時間カウンタのカウントアップを開始させるとと
もにタスク切替時間検知部140にタスクD1のタスク
IDを通知し(ステップS707)、プログラム実行制
御機構190に対してタスクD1に相当するプログラム
の実行を指示する(ステップS708)。
【0110】その後、タスクD1のタイムスライス値は
3であるため、タスクD1の実行開始から3に相当する
時間が経過すると、タスク切替時間検知部140はタス
クの実行の時間切れの旨を実行タスク切替制御部130
に通知するので(ステップS709)、実行タスク切替
制御部130は、プログラム実行制御機構190に対し
指示を出しタスクD1を停止させ(ステップS71
0)、タスク実行時間計時部150にタスク実行時間カ
ウンタのカウントアップを停止させ(ステップS71
1)、グループレディキュー303の先頭要素であるタ
スクD1のタスクIDを含む要素を取り出し、レディキ
ュー登録部120に再度そのタスクD1を登録させ(ス
テップS712)、実行レディキューは主レディキュー
を指し示すものかを判定する(ステップS713)。こ
の場合において、実行レディキューはグループレディキ
ュー303を指し示すものであるため、ステップS70
6に移り、実行タスク切替制御部130は、グループレ
ディキュー303の先頭要素となっているタスクD2の
タスクIDに着目し、そのタスクD2の実行に向けた処
理を行う。
【0111】<1-4-5.タスクグループD中のタスクD
2の実行以後>以後、実行タスク切替制御部130は、
タスクD2の実行を指示し(ステップS708)、その
後にタスクD2のタイムスライス値である1に相当する
時間が経過した後にタスクD2の停止を指示し(ステッ
プS709、S710)、グループレディキュー303
の先頭要素を取り出して再登録し(ステップS71
2)、グループレディキュー303の先頭要素となって
いるタスクD3の実行に向けた処理を開始する。
【0112】この後、実行タスク切替制御部130によ
る制御の下で、タスクD3がそのタイムスライス値であ
る2に相当する時間分だけ実行され、続いてタスクD1
がそのタイムスライス値である3に相当する時間分だけ
実行される。この時点でタスクグループDのタイムスラ
イス値である9に相当する時間が経過したことになるの
で、次にタスクグループCに属するタスクC1が実行さ
れる。ここでは、タスクC1の実行開始から1に相当す
る時間だけ経過した時点でタスクC1はウェイト状態に
入ったものとする。
【0113】続いて、タスクC2、タスクC3がこの順
に各タイムスライス値である1に相当する時間分だけ実
行されると、その時点でタスクグループCのタイムスラ
イス値である3に相当する時間が経過したことになるの
で、実行タスク切替制御部130は次にタスクグループ
Dに属するタスクの実行指示を行う。この後、タスクグ
ループDのタイムスライス値である9に相当する時間が
経過すると、続いて実行タスク切替制御部130はタス
クグループCに属する各タスクの実行指示を順次行う。
【0114】<1-4-6.優先度の高いタスクEの発生>
こうしてタスクグループCの各タスクが、合計してタイ
ムスライス値である3に相当する時間分だけ実行された
時に、優先度が3であってタスクグループC及びタスク
グループDよりも優先度が高い、独立したタスクEが生
成されたとして以後の動作を説明する。
【0115】例えば新たなAPの実行が指示される等に
基づき、プログラム実行制御機構190はタスク制御情
報生成部110にタスクEのタスク制御情報の生成を要
求し、レディキュー登録部120に対してタスクEを主
レディキューに登録させるよう要求する。この結果、タ
スク・スケジューリング装置100の実行タスク切替制
御部130の指示を受け、プログラム実行制御機構19
0によりタスクEに相当するAPが実行されることにな
る。
【0116】ここで、このタスクEに相当するAPは実
行中にR10というリソースIDで特定されるシステム
リソースを確保しようとして、そのシステムリソースが
タスクD1によって確保されているため、ウェイト状態
に入ったものとする。このとき、プログラム実行制御機
構190は、そのR10というリソースIDを示してシ
ステムリソースが生じた旨をタスク・スケジューリング
装置100の優先度変更部180に伝え、これを受けて
優先度変更部180は、3という優先度とR10という
リソースIDとを得て(ステップS31)、タスク制御
情報を参照し、R10というリソースIDで特定される
システムリソースを現在確保しているのがタスクD1で
あることを検出し、タスクD1が属するタスクグループ
Dの優先度203を、現状の10からタスクEより1だ
け高い2に変更し、また変更前の優先度である10を旧
優先度208として保存し、これに合わせて主レディキ
ュー内の要素の順を変更する(ステップS32)。
【0117】この後、プログラム実行制御機構190か
らタスクが停止した旨の通知を受けて、実行タスク切替
制御部130は、実行指示をするタスクを切り替える。
図7は、タスクグループDの優先度が高く変更された時
点でのタスク制御情報の内容を一覧表形式で表した図で
ある。タスクグループDの優先度はタスクグループCの
優先度よりも高くなったので、以後、実行タスク切替制
御部130の制御下で、タスクグループDに属する各タ
スクが順番に繰り返し実行されることになる。
【0118】こうしてタスクD1が何度目かに実行され
たときにおいて、R10というリソースIDで特定され
るシステムリソースを解放したとすると、プログラム実
行制御機構190からその解放の通知を受けてタスク制
御情報生成部110は、タスクD1の使用中リソースI
D209からR10を削除するようタスク制御情報を更
新する。タスク制御情報が更新されると、優先度変更部
180は、それまでR10というリソースIDで特定さ
れるシステムリソースを確保していたタスクD1が属す
るタスクグループDの優先度を元の優先度である10に
戻す(ステップS33)。この後、プログラム実行制御
機構190は、R10というリソースIDで特定される
システムリソースが解放されたことを検知しており、こ
のため、R10というリソースIDで特定されるシステ
ムリソースを待っていたタスクEをウェイト状態からレ
ディ状態に変更すべく、レディキュー登録部120を介
してタスクEの主レディキューへの登録を行う。
【0119】従って、これ以後、実行タスク切替制御部
130によりタスクEの実行が指示され、タスクEが実
行されることになる。なお、この後にタスクEの実行が
停止されれば、タスクグループCのタスク群とタスクグ
ループDのタスク群とが交互に繰り返し実行されること
になる。以上説明した各タスクの実行状況は、図8のタ
イムチャートに示したように遷移する。 <2.実施の形態2>以下、実施の形態1に係るタスク
・スケジューリング装置100を一部変形したものであ
る、実施の形態2に係るタスク・スケジューリング装置
について説明する。
【0120】実施の形態2に係るタスク・スケジューリ
ング装置は、実施の形態1に係るタスク・スケジューリ
ング装置100の機能のうち、高い優先度のタスクに必
要とされているシステムリソースを確保しているタスク
の優先度(そのタスクがタスクグループに属する場合に
はそのタスクグループの優先度)を変更する機能を省略
し、タスクグループを構成する各タスク及びタスクグル
ープについてのタイムスライス時間の繰越しに関する機
能を付加したものである。
【0121】即ち、実施の形態2に係るタスク・スケジ
ューリング装置に特有の特徴は、対応するタイムスライ
ス値に相当する時間が満了するまでの間に、タスク又は
タスクグループの実行を停止しなければならなくなった
場合には、その停止時から満了までの時間を、そのタス
ク又はタスクグループの次の実行時において連続実行し
得る時間として扱う点、つまり、タイムスライス値に相
当する時間を使いきっていない場合にはその残余分の時
間(未消化の時間)を次回の連続実行し得る時間と定め
る点にある。
【0122】<2-1.構成>図9は、本発明の実施の形
態2に係るタスク・スケジューリング装置400の機能
ブロック図である。タスク・スケジューリング装置40
0は、実施の形態1で示したタスク・スケジューリング
装置100を一部だけ変形した装置であり、同図に示す
ように、タスク制御情報生成部410、タスク制御情報
格納部411、レディキュー登録部120、レディキュ
ー記憶部121、実行レディキュー情報格納部122、
実行タスク切替制御部430、タスク切替時間検知部1
40、タスク実行時間計時部450、タスク実行時間カ
ウンタ記憶部151、グループ切替時間検知部160、
グループ実行時間計時部470及びグループ実行時間カ
ウンタ記憶部171を備えており、プログラム実行制御
機構190と連携動作するものである。なお、タスク・
スケジューリング装置400の構成要素のうち、実施の
形態1で示したタスク・スケジューリング装置100と
同一のものには、図9中で図1と同じ符号を用いて示し
ており、これらの構成要素についてはここでは詳しい説
明を省略する。
【0123】ここで、タスク制御情報生成部410は、
プログラム実行制御機構190からタスク制御情報の生
成の要求を受けると、タスク制御情報を生成して、メモ
リの一領域であるタスク制御情報格納部411に格納す
る機能を有し、もしタスクグループについてのタスク制
御情報の生成の要求を受けた場合には、タスク制御情報
の生成に加えて、メモリ中の一領域であるレディキュー
記憶部121中にグループレディキューを設ける機能を
有する。
【0124】タスク制御情報生成部410が、実施の形
態1に示したタスク制御情報生成部110と異なる点
は、生成するタスク制御情報に、タスクが実行された時
間を示す実行済時間をデータ構成要素として含ませた点
である。この実行済時間を含むタスク制御情報の詳細に
ついては後述する。また、タスク実行時間計時部450
は、カウントの開始指示を受けるとタスク実行時間カウ
ンタのカウントアップを開始し、カウントの停止指示を
受けるとカウントアップを停止する機能を有する。
【0125】グループ実行時間計時部470は、カウン
トの開始指示を受けるとグループ実行時間カウンタのカ
ウントアップを開始し、カウントの停止指示を受けると
カウントアップを停止する機能を有する。また、実行タ
スク切替制御部430は、実施の形態1で示した実行タ
スク切替制御部130を一部変更したものであって、各
レディキューを参照し、実行するタスクを切り替える制
御を行うものであり、タスク切替時間検知部140から
タスクの実行が時間切れとなった旨の通知を受けた時、
グループ切替時間検知部160からタスクグループの実
行が時間切れとなった旨の通知を受けた時、又は主レデ
ィキュー若しくは実行レディキュー指し示すレディキュ
ーの先頭の要素が変更されたことを検出した時に、実行
中のタスクを停止させるようプログラム実行制御機構1
90に伝えて、レディキューの先頭要素のタスクIDで
示されるタスクを新たに実行するタスクと特定してその
タスクの実行を開始するようにプログラム実行制御機構
190に伝え、また、プログラム実行制御機構190か
らタスクが停止した旨の通知を受けた時にはレディキュ
ーのから先頭要素を取り出して次にレディキューの先頭
に位置する要素のタスクIDで示されるタスクを新たに
実行するタスクと特定してそのタスクの実行を開始する
ようにプログラム実行制御機構190に伝える機能を有
する。
【0126】なお、実行タスク切替制御部430は、実
行するタスクを切り替える制御を行う機能の実現のため
に、必要に応じて、タスク制御情報を参照し、実行レデ
ィキュー情報格納部122の内容を参照及び更新し、タ
スク実行時間計時部450及びグループ実行時間計時部
470に対してカウントの開始又は停止の指示を出し、
タスク切替時間検知部140に対してタスクIDを通知
し、グループ切替時間検知部160に対してグループI
Dを通知し、タスク実行時間カウンタ又はグループ実行
時間カウンタにタスク制御情報中の実行済時間を設定
し、レディキュー登録部120に対してレディキューに
タスク又はタスクグループを再度登録するように指示す
る。
【0127】<2-2.データ>以下、タスク制御情報格
納部411に格納されるタスク制御情報について説明す
る。図10は、タスク制御情報生成部410が生成しタ
スク制御情報格納部411に格納されるタスク制御情報
のデータ構成を示すとともに、複数のタスク制御情報の
内容例を一覧表形式で表した図である。
【0128】なお、図10では、タスク制御情報のデー
タ構成要素のうち実施の形態1で示したものと同一のも
のには図2と同様の符号を用いて示している。同図に示
す実行済時間508は、タスク制御情報が生成された時
点では0という値をとり、タスクが実行された後に、実
行タスク切替制御部430によって参照、更新されるも
のである。
【0129】図10に示した内容例は、タスクEと、タ
スクグループFを構成するタスクF1及びF2と、タス
クグループGを構成するタスクG1、G2及びG3とが
実行対象となり得る状態を示している。なお、ここでは
タイムスライス値を、所定TICKをまとめて1単位と
してその単位数で示している。なお、実施の形態2で示
すタスクEは、実施の形態1で示したタスクEとは関係
ない。
【0130】この例では、タスクEとタスクグループF
とタスクグループGとは、同一優先度でそれぞれタイム
スライス値が2、6、3である。また、タスクグループ
Fに属するタスクF1とタスクF2とは優先度が等しく
それぞれタイムスライス値が3、2である。また、タス
クグループGに属するタスクG1とタスクG2とタスク
G3とは優先度が等しく、それぞれタイムスライス値が
2、2、1である。
【0131】以下、レディキュー記憶部121に格納さ
れるレディキューについて説明する。図11は、レディ
キュー記憶部121に格納されるレディキューの内容例
を示す図である。レディキュー記憶部121には、予め
主レディキューの領域が存在し、また、タスク制御情報
生成部410によって、新たに1又は複数のグループレ
ディキューが設けられる。
【0132】図11では図10に例示したタスク制御情
報に対応した内容例を示しており、主レディキュー30
4にタスクE、タスクグループF及びタスクグループG
が登録されており、タスクグループFに対応するグルー
プレディキュー305にタスクF1及びタスクF2が登
録されており、タスクグループDに対応するグループレ
ディキュー306にタスクG1、タスクG2及びタスク
G3が登録されている状態を示している。なお、同図で
は左がレディキューの先頭を示し、各レディキューには
レディキュー登録部120によって、要素が必ず優先度
順にならぶように格納される。
【0133】<2-3.動作>タスク・スケジューリング
装置400は、実施の形態1で示したタスク・スケジュ
ーリング装置100の行う実行タスク切替制御処理を部
分的に変形した実行タスク切替制御処理を実行する。以
下、タスク・スケジューリング装置400の行う実行タ
スク切替制御処理について説明する。
【0134】図12は、タスク・スケジューリング装置
400によりなされる実行タスク切替制御処理を示すフ
ローチャートである。なお、同図中、タスク・スケジュ
ーリング装置100における実行タスク切替制御処理と
同一内容の処理ステップについては図5で示したものと
同一の符号を付している。実行タスク切替制御部430
は、まず主レディキューの先頭の要素に着目し(ステッ
プS701)、その要素のタスクIDによってタスク制
御情報格納部411中のタスク制御情報の中から、対応
するタスク制御情報を検索して、タスク制御情報中のタ
スク/グループ区分201を参照することにより、主レ
ディキューにおいて着目した要素がタスクグループにつ
いてのものであるか否かを判定する(ステップS70
2)。
【0135】ステップS702においてタスクグループ
についてのものでないと判定した場合、即ちタスクにつ
いてのものであると判定した場合には、実行タスク切替
制御部430は実行レディキュー情報格納部122中の
実行レディキューを主レディキューを指し示すように設
定する(ステップS703)。また、ステップS702
においてタスクグループについてのものであると判定し
た場合には、実行タスク切替制御部430は、実行レデ
ィキューをそのタスクグループに対応するグループレデ
ィキューを指し示すように設定する(ステップS70
4)。
【0136】ステップS704に続いて、実行タスク切
替制御部430は、着目しているタスクグループに対応
するタスク制御情報中の実行済時間508の値を得て、
その値をグループ実行時間カウンタにセットし、グルー
プ実行時間計時部470にカウントの開始を指示すると
ともにグループ切替時間検知部160に主レディキュー
において着目している要素のグループIDを伝える。こ
れに応じてグループ実行時間計時部470はグループ実
行時間カウンタをカウントアップし始め、グループ切替
時間検知部160は、そのグループIDに対応するタス
ク制御情報からタイムスライス値を得てそのタイムスラ
イス値とグループ実行時間カウンタとが一致することの
繰り返し判定を、開始する(ステップS805)。
【0137】ステップS805に続いて、実行タスク切
替制御部430は、実行レディキューで指し示されてい
るレディキューの先頭の要素に着目する(ステップS7
06)。ステップS703又はステップS706の後
に、実行タスク切替制御部430は、最後に着目したタ
スクについてのタスク制御情報中の実行済時間508の
値を得て、その値をタスク実行時間カウンタにセット
し、タスク実行時間計時部450にカウントの開始を指
示するとともにタスク切替時間検知部140に対して最
後に着目した要素のタスクIDを伝え、これに応じてタ
スク実行時間計時部450はタスク実行時間カウンタを
カウントアップし始め、タスク切替時間検知部140は
そのタスクIDに対応するタスク制御情報からタイムス
ライス値を得てそのタイムスライス値とタスク実行時間
カウンタとが一致することの繰り返し判定を開始する
(ステップS807)。
【0138】ステップS807に続いて、実行タスク切
替制御部430は、プログラム実行制御機構190に対
して、最後に着目したタスクIDを伝えてプログラムの
実行を開始させる(ステップS708)。ステップS7
08の後に、実行タスク切替制御部430はタスク切替
時間検知部140からタスクの実行が時間切れとなった
旨の通知を受けているかを判定し(ステップS70
9)、この通知を受けていなければプログラム実行制御
機構190からタスクが停止した旨の通知を受けていた
か判定し(ステップS714)、この通知を受けていな
ければグループ切替時間検知部160からタスクグルー
プの実行が時間切れとなった旨の通知を受けているかを
判定し(ステップS716)、この通知を受けていなけ
れば主レディキューの先頭の要素が変更されたか否かを
判定し(ステップS721)、主レディキューの先頭の
要素が変更されていないと判定した場合には、グループ
レディキューが実行レディキューに指し示されており、
かつグループレディキューの先頭が変更されたか否かを
判定する(ステップS724)。
【0139】ステップS709において、実行タスク切
替制御部430は、タスク切替時間検知部140からタ
スクの実行が時間切れとなった旨の通知を受けている場
合には、プログラム実行制御機構190に対して実行中
のタスクを停止させるよう指示し(ステップS71
0)、これを受けてプログラム実行制御機構190は実
行中のタスクに対応するプログラムの実行を停止する。
【0140】ステップS710に続いて、実行タスク切
替制御部430は、タスク実行時間計時部450にタス
ク実行時間カウンタのカウントアップを停止させて、実
行していたタスクのタスク制御情報中の実行済時間50
8に0という値をセットする(ステップS811)。ス
テップS811に続いて、実行タスク切替制御部430
は、ステップS710で停止を指示したタスクについて
のタスクIDをレディキューの先頭から取り出した後、
レディキュー登録部120に対してそのタスクを再度登
録するよう要求し、これに応じてレディキュー登録部1
20はそのタスクを実行レディキューが指し示すレディ
キューに登録する(ステップS712)。
【0141】ステップS712の後に、実行タスク切替
制御部430は、実行レディキューが指し示すレディキ
ューが主レディキューであるか否かを判定する(ステッ
プS713)。ステップS713において、実行レディ
キューが指し示すレディキューが主レディキューである
と判定した場合には再びステップS701に戻り、実行
タスク切替制御部430は、主レディキューの先頭の要
素に着目して新たなタスクの実行に向けた処理を行う。
また、ステップS713において、実行レディキューが
指し示すレディキューが主レディキューではない、即ち
グループレディキューであると判定した場合にはステッ
プS706に戻り、実行タスク切替制御部430はその
実行レディキューが指し示すグループレディキューの先
頭の要素に着目して新たなタスクの実行に向けた処理を
行う。
【0142】また、ステップS714において、実行タ
スク切替制御部430は、プログラム実行制御機構19
0からタスクが停止した旨の通知を受けている場合に
は、実行レディキューが指し示すレディキューの先頭要
素、即ち最後に着目している要素をそのレディキューか
ら取り出し(ステップS715)、その後、上述のステ
ップS713の処理に移る。
【0143】また、ステップS716において、実行タ
スク切替制御部430は、グループ切替時間検知部16
0からタスクグループの実行が時間切れとなった旨の通
知を受けている場合には、グループ実行時間計時部47
0にグループ実行時間カウンタのカウントアップを停止
させて、実行していたグループのタスク制御情報中の実
行済時間508に0という値をセットする(ステップS
817)。
【0144】ステップS817に続いて、実行タスク切
替制御部430は、主レディキューの先頭要素を主レデ
ィキューから取り出し、その要素のグループIDで示さ
れるタスクグループを再び主レディキューに登録するよ
うレディキュー登録部120に要求し、これに応じてレ
ディキュー登録部120はそのタスクグループを主レデ
ィキューに登録する(ステップS718)。
【0145】ステップS718に続いて、実行タスク切
替制御部430は、プログラム実行制御機構190に対
して実行中のタスクを停止するよう指示し(ステップS
719)、これを受けてプログラム実行制御機構190
は実行中のタスクに対応するプログラムの実行を停止す
る。ステップS719に続いて、実行タスク切替制御部
430は、タスク実行時間計時部450にタスク実行時
間カウンタのカウントアップを停止させ、タスク実行時
間カウンタの値を得て、その値を、停止させたタスクの
タスク制御情報中の実行済時間508にセットする(ス
テップS820)。また、ステップS820の後には再
びステップS701に戻り、実行タスク切替制御部43
0は、主レディキューの先頭の要素に着目して新たなタ
スクの実行に向けた処理を行う。
【0146】また、ステップS721において、主レデ
ィキューの先頭の要素が変更されていると判定した場合
には、実行タスク切替制御部430は、実行レディキュ
ーが指し示すレディキューが主レディキューか否かを判
定し(ステップS722)、主レディキューでなければ
グループ実行時間計時部470にグループ実行時間カウ
ンタのカウントアップを停止させて、グループ実行時間
カウンタの値を得て、その値を、実行レディキューが指
し示すグループレディキューに対応するタスクグループ
のタスク制御情報中の実行済時間508にセットする
(ステップS823)。
【0147】ステップS823の後、又はステップS7
22において実行レディキューが指し示すレディキュー
が主レディキューであると判定した後、実行タスク切替
制御部430は、プログラム実行制御機構190に対し
て実行中のタスクを停止するよう指示し(ステップS7
19)、タスク実行時間計時部450にタスク実行時間
カウンタのカウントアップを停止させて、タスク実行時
間カウンタの値を得て、その値を、停止させたタスクの
タスク制御情報中の実行済時間508にセットする(ス
テップS820)、その後に再びステップS701に戻
り、主レディキューの先頭の要素に着目して新たなタス
クの実行に向けた処理を行う。
【0148】また、ステップS724において、グルー
プレディキューが実行レディキューに指し示されてお
り、かつグループレディキューの先頭が変更されたと判
定した場合には、実行タスク切替制御部430は、プロ
グラム実行制御機構190に対して実行中のタスクを停
止するよう指示し(ステップS725)、タスク実行時
間計時部450にタスク実行時間カウンタのカウントア
ップを停止させて、タスク実行時間カウンタの値を得
て、その値を、停止させたタスクのタスク制御情報中の
実行済時間508にセットし(ステップS826)、そ
の後に再びステップS706に戻り、実行レディキュー
が指し示すグループレディキューの先頭の要素に着目し
て新たなタスクの実行に向けた処理を行う。
【0149】一方、ステップS724において、グルー
プレディキューが実行レディキューに指し示されており
かつグループレディキューの先頭が変更されたという事
象が発生していないと判定した場合には、実行タスク切
替制御部430は、ステップS709に戻り、タスク切
替時間検知部140からタスクの実行が時間切れとなっ
た旨の通知を受けているかの判定を行う。
【0150】このような処理過程により、タスク・スケ
ジューリング装置400は、タスクについて、その対応
するタイムスライス値に相当する時間が満了するまでの
間に、そのタスクが属するタスクグループが実行時間切
れとなった場合には、およそそのタスクを実行対象とし
て特定した時から、実行対象のタスクグループを切り替
える時までの時間と、そのタスクのタイムスライス値に
相当する時間との差を、そのタスクを次回に実行対象と
して特定したときにおいて、タイムスライス値に相当す
る時間の代わりに用いてそのタスクの連続実行を行うも
のである。これにより、実行対象に係るタスクグループ
を、タスクグループ毎のタイムスライス値に基づいて切
り替える方式によって、タスクグループ内のタスク相互
の連続実行時間配分が乱れることを防止している。
【0151】<2-4.具体動作例>以下、上述した実行
タスク切替制御処理を具体例に基づいて説明する。ここ
では、タスク制御情報格納部411に、図10に例示し
た内容のタスク制御情報群が格納されており、レディキ
ュー記憶部121内の各レディキューは、図11に例示
した内容となっている状態を前提として説明する。
【0152】<2-4-1.タスクEの実行>まず、実行タ
スク切替制御部430は、主レディキュー301の先頭
要素のタスクID、つまりタスクEのタスクIDに着目
し(ステップS701)、このタスクEはタスク/グル
ープ区分201がタスクであるので(ステップS70
2)、主レディキューを指し示すように実行レディキュ
ーを設定し(ステップS703)、タスクEのタスク制
御情報中の実行済時間508の値である0をタスク実行
時間カウンタにセットして、タスク実行時間計時部45
0にタスク実行時間カウンタのカウントアップを開始さ
せるとともにタスク切替時間検知部140にタスクEの
タスクIDを通知し(ステップS807)、プログラム
実行制御機構190に対しタスクEに相当するプログラ
ムの実行を指示する(ステップS708)。その後、タ
スクEのタイムスライス値204は2であるため、タス
ク切替時間検知部140はタスクEの実行開始から2に
相当する時間の経過後に実行タスク切替制御部430に
タスクの実行の時間切れの旨を通知することになる。
【0153】タスクの実行の時間切れの旨を受けると
(ステップS709)、実行タスク切替制御部430
は、プログラム実行制御機構190に指示を出してタス
クEを停止させ(ステップS710)、タスク実行時間
計時部450にタスク実行時間カウンタのカウントアッ
プを停止させてタスクEのタスク制御情報中の実行済時
間508に0をセットし(ステップS811)、主レデ
ィキュー304の先頭要素であるタスクEのタスクID
を含む要素を取り出し、レディキュー登録部120に再
度そのタスクEを登録させ(ステップS712)、実行
レディキューは主レディキューを指し示すものかを判定
する(ステップS713)。この場合において、実行レ
ディキューは主レディキュー304を指し示すものであ
るため、ステップS701に移り、実行タスク切替制御
部430は、主レディキュー304の先頭要素となって
いるタスクグループFのグループIDに着目する。
【0154】<2-4-2.タスクグループF中のタスクF
1の実行>続いて、実行タスク切替制御部430は、タ
スクグループFはタスク/グループ区分201がグルー
プであるので(ステップS702)、グループレディキ
ュー305を指し示すように実行レディキューを設定し
(ステップS704)、タスクグループFについてのタ
スク制御情報中の実行済時間508の値である0をグル
ープ実行時間カウンタにセットして、グループ実行時間
計時部470にグループ実行時間カウンタのカウントア
ップを開始させるとともにグループ切替時間検知部16
0にタスクグループFのグループIDを通知する(ステ
ップS805)。この結果、グループ切替時間検知部1
60は、後にタスクグループFのタイムスライス値であ
る6に相当する時間が経過した時に、実行タスク切替制
御部430に対してタスクグループの実行の時間切れの
旨を通知することになる。
【0155】ステップS805に続いて、実行タスク切
替制御部430は、グループレディキュー305の先頭
要素となっているタスクF1のタスクIDに着目し(ス
テップS706)、タスクF1のタスク制御情報中の実
行済時間508の値である0をタスク実行時間カウンタ
にセットして、タスク実行時間計時部450にタスク実
行時間カウンタのカウントアップを開始させるとともに
タスク切替時間検知部140にタスクF1のタスクID
を通知し(ステップS807)、プログラム実行制御機
構190に対してタスクF1に相当するプログラムの実
行を指示する(ステップS708)。
【0156】この後、タスク切替時間検知部140は、
タスクF1の実行開始から、タスクF1のタイムスライ
ス値である3に相当する時間が経過した時に、実行タス
ク切替制御部430に対してタスクの実行の時間切れの
旨を通知するので(ステップS709)、これを受けて
実行タスク切替制御部430は、プログラム実行制御機
構190に指示を出してタスクF1を停止させ(ステッ
プS710)、タスク実行時間計時部450にタスク実
行時間カウンタのカウントアップを停止させてタスクF
1のタスク制御情報中の実行済時間508に0をセット
し(ステップS811)、実行レディキューの指し示す
グループレディキュー305の先頭要素であるタスクF
1のタスクIDを含む要素を取り出し、レディキュー登
録部120に再度そのタスクF1を登録させ(ステップ
S712)、実行レディキューは主レディキューを指し
示すものかを判定する(ステップS713)。この場合
において、実行レディキューはグループレディキュー3
05を指し示すものであるため、ステップS706に移
り、実行タスク切替制御部430は、グループレディキ
ュー305の先頭要素となっているタスクF2のタスク
IDに着目する。
【0157】<2-4-3.タスクグループF中のタスクF
2の実行>この後、実行タスク切替制御部430はプロ
グラム実行制御機構190に実行指示をすることにより
タスクF2を、対応するタイムスライス値である2に相
当する時間分実行させ(ステップS807、S708、
S709、S710、S811、S712、S71
3)、再度、タスクF1のタスクIDに着目する(ステ
ップS706)。
【0158】<2-4-4.タスクグループF中のタスクF
1の実行>続いて、実行タスク切替制御部430は、プ
ログラム実行制御機構190に指示をしてタスクF1を
実行させる(ステップS807、S708)。すると、
タスクF1の実行開始から1単位に相当する時間の経過
後に、タスクグループFの実行開始から6単位というタ
イムスライス値と一致する時間が経過することととなる
ので、この時、グループ切替時間検知部160から実行
タスク切替制御部430にタスクグループFの実行の時
間切れが通知される。
【0159】実行タスク切替制御部430は、このタス
クグループの実行の時間切れの通知を受けると(ステッ
プS716)、グループ実行時間計時部470にグルー
プ実行時間カウンタのカウントアップを停止させて、実
行していたグループのタスク制御情報中の実行済時間5
08に0という値をセットし(ステップS817)、主
レディキューの先頭要素を主レディキューから取り出
し、その要素であるタスクグループFをレディキュー登
録部120に再び主レディキューに登録させ(ステップ
S718)、プログラム実行制御機構190に実行中の
タスクF1を停止させ(ステップS719)、タスク実
行時間計時部450にタスク実行時間カウンタのカウン
トアップを停止させ、この時には1を示しているタスク
実行時間カウンタの値を得て、その1という値を停止さ
せたタスクF1のタスク制御情報中の実行済時間508
にセットし(ステップS820)、主レディキューの先
頭要素となっているタスクグループGのグループIDに
着目する(ステップS701)。
【0160】<2-4-5.タスクグループG中のタスクG
1及びG2の実行>この後、実行タスク切替制御部43
0はタスクグループGのタイムスライス値が3であるた
め、タスクグループGを構成しタイムスライス値が2の
タスクG1を実行対象とし(ステップS702、S70
4、S805、S706、S807、S708)、その
タスクG1の実行開始後から2単位に相当する時間の経
過後にタスクG1を停止させ(ステップS709、S7
10、S811、S712、S713)、続いてタスク
グループGを構成しタイムスライス値が2のタスクG2
をタスクグループの実行時間切れまでである1単位に相
当する時間だけ実行する(ステップS701、S70
2、S704、S805、S706、S807、S70
8)。タスクグループGの実行の時間切れが生じると
(ステップS716)、実行タスク切替制御部430
は、主レディキューの先頭からタスクグループGのグル
ープIDを含む要素をレディキュー登録部120を介し
て主レディキューの最後尾に移させた後に(ステップS
817、S718)、タスクG2を停止させ(ステップ
S719、S820)、主レディキューの先頭要素とな
っているタスクEのタスクIDに着目する(ステップS
701)。
【0161】<2-4-6.タスクEの実行>この後、実行
タスク切替制御部430はタスクEをそのタイムスライ
ス値である2単位に相当する時間だけ実行させて(ステ
ップS702、S703、S807、S708、S70
9)、停止させ(ステップS710、S811)、主レ
ディキューの先頭からタスクEのタスクIDを含む要素
をレディキュー登録部120を介して主レディキューの
最後尾に移させた後に(ステップS712、S71
3)、主レディキューの先頭となっているタスクグルー
プFのグループIDに着目する(ステップS701)。
【0162】<2-4-7.タスクグループF中のタスクF
1の実行>続いて、実行タスク切替制御部430は、グ
ループレディキュー305の先頭要素であるタスクF1
のタスクIDに着目する(ステップS702、S70
4、S805、S706)。この着目しているタスクF
1のタスク制御情報中の実行済時間508の値は、先に
セットした1になっているため、実行タスク切替制御部
430は、この1という値を得て、タスク実行時間カウ
ンタにセットしタスク実行時間計時部450にそのカウ
ントアップを開始させ(ステップS807)、プログラ
ム実行制御機構190にタスクF1の実行を開始させる
(S807)。
【0163】このステップS807で、タスク実行時間
カウンタには1がセットされてからカウントアップが開
始されるため、タスクF1のタイムスライス値は3であ
るが、タスクF1の実行開始から2単位の時間が経過し
た時に、タスク切替時間検知部140はタスク実行時間
カウンタとタイムスライス値との一致を検出して実行タ
スク切替制御部430に通知することになる。
【0164】従って、実行タスク切替制御部430は、
その通知を受けて(ステップS709)、プログラム実
行制御機構190にタスクF1の実行を停止させるよう
指示する(ステップS710)。図13は、上述した過
程により実行される各タスクについての実行時間を示す
タイムチャートである。
【0165】同図に示すように、タスクグループを構成
する各タスクは、タスクグループの実行の時間切れによ
って、タスクのタイムスライス値に相当する時間が満了
しないうちに実行を中断された場合には、次回実行され
る際に、その中断から満了までの間に相当する時間分の
連続実行時間を割り当てられるようになる。 <3.補足>以上、本発明に係るタスク・スケジューリ
ング装置について、実施の形態1、2に基づいて説明し
たが、本発明はこれらの実施の形態に限られないことは
勿論である。即ち、 (1)両実施の形態で示したタスク・スケジューリング
装置とプログラム実行制御機構との機能分担は一例にす
ぎず、いずれもOSの構成要素であるため、例えばタス
ク制御情報生成部やレディキュー登録部がタスク・スケ
ジューリング装置の外部にあることとしてもよく、ま
た、プログラム実行制御機構がタスク・スケジューリン
グ装置に含まれることとしてもよい。 (2)両実施の形態では、タスク実行時間計時部はタス
ク実行時間カウンタをカウントアップし、またグループ
実行時間計時部はグループ実行時間カウンタをカウント
アップすることとしたが、このようなアップカウント方
式に限らず、ダウンカウント方式を用いることとしても
よい。
【0166】即ち、タスク実行時間計時部及びグループ
実行時間計時部は、カウンタのリセット等は行わず時間
の経過に応じてそれぞれタスク実行時間カウンタ、グル
ープ実行時間カウンタをカウントダウンし、タスク切替
時間検知部及びグループ切替時間検知部はそれぞれタス
ク実行時間カウンタ、グループ実行時間カウンタが0に
なったときに、時間切れを実行タスク切替制御部に通知
することとし、また、実施の形態1で示した実行タスク
切替制御部130はタスク実行時間計時部又はグループ
実行時間計時部にカウントの開始を指示する前にその対
応するカウンタに、実行を開始しようとするタスク又は
タスクグループのタイムスライス値をセットすることと
し、実施の形態2で示した実行タスク切替制御部430
はタスク制御情報中の実行済時間に0をセットする処理
に代えてタイムスライス値をセットすることとしてもよ
い。 (3)両実施の形態では、レディキューにはタスクID
と優先度との組である要素が格納されることとしたが、
この要素は、タスクIDのみであってもよく、またタス
ク制御情報のアドレス等であってもよく、タスク及びタ
スクグループを識別しそのタスク制御情報へのアクセス
を可能にする情報であればよい。 (4)両実施の形態では、連続実行時間に制限のない旨
を−1というタイムスライス値で表現したが、これに限
定されることはなく、連続実行時間に制限のない旨、即
ちタイムスライスによるタスク停止の制御を行う必要の
ない旨が識別できさえすれば足りる。例えば、連続実行
時間に制限のない旨を、タスク制御情報中のタイムスラ
イス値以外のデータ項目として表すこととしてもよい
し、−1以外の数値を用いることとしてもよい。その
他、両実施の形態で示した優先度等、タスクID等の値
は、これらに限定されることはなく、変更することがで
きる。 (5)両実施の形態で示した主レディキューには、タス
クグループに属さず独立したタスクのタスクIDを含む
要素又はタスクグループのグループIDを含む要素が格
納されるが、タスクグループのグループIDを含む要素
については、そのタスクグループを構成する全てのタス
クが対応するグループレディキューに登録されていない
状態となったときに、例えばレディキュー登録部等によ
って、主レディキューから削除されることとしてもよ
い。 (6)両実施の形態では、主レディキューにはタスクグ
ループ以外のタスクも登録されていることとしたが、主
レディキューには必ずタスクグループが登録されること
としてもよい。即ち、どのタスクも必ずタスクグループ
に属するようにしてもよい。この場合、タスクグループ
に属さない独立したタスクについては、そのタスクのみ
を含む形式的な1つのタスクグループを定めて、対応す
るグループレディキューを確保して、そのタスクグルー
プのタスク制御情報を生成しておけばよい。
【0167】なお、どのタスクも必ずタスクグループに
属するようにした場合においては、実施の形態1の優先
度一時変更処理によって、優先度の高いタスクグループ
に属するタスクの実行中にシステムリソース待ちが生じ
た場合に、そのシステムリソースを確保しているタスク
の属するタスクグループの優先度が、そのシステムリソ
ースを待っているタスクの属するタスクグループの優先
度より高いものに一時的に変更されることになる。 (7)実施の形態2では、実施の形態1で示した優先度
変更部180を中心とした優先度一時変更処理を行う機
能を、持たないタスク・スケジューリング装置400を
示したが、実施の形態2で示したタスク・スケジューリ
ング装置400においても優先度変更部180を設けて
実施の形態1で示した優先度一時変更処理を行う機能が
行えるようにしてもよい。
【0168】なお、実施の形態1では優先度一時変更処
理において、優先度の高いタスク(ここで「解放待ちタ
スク」という。)によって解放が待たれているシステム
リソースを既に確保しているタスクの優先度(そのタス
クがタスクグループに属する場合にはそのタスクグルー
プの優先度)を、一時的に、解放待ちタスクより高い優
先度に変更することとしたが、本発明はこれに限定され
ることはなく、そのシステムリソースを既に確保してい
るタスクの優先度をもとの状態より1以上高くするもの
であれば、優先度が高いはずの解放待ちタスクが優先度
の低いタスクに起因するシステムリソース待ちによって
待たされる事態の早期解消という効果は発揮され得る。
この効果は、他のタスク等の優先度との関係に依存する
ので、一概には言えないが、一般的にはシステムリソー
スを既に確保しているタスクの優先度を解放待ちタスク
より1以上高い優先度に変更する方が一層その効果が発
揮できるようになると考えられる。 (8)実施の形態2では、優先度に基づくタスク切替を
も行うこととしたが、全てのタスク及びタスクグループ
の優先度を無視し、つまり優先度に関する制御を省く構
成としてもよい。 (9)両実施の形態に示したタスク・スケジューリング
装置による処理手順(図4〜図6、図12に示した手順
等)を、コンピュータ又はプログラム実行機能を有する
機器(以下、「コンピュータ等」という。)に実行させ
るためのコンピュータプログラムを、記録媒体に記録し
又は各種通信路等を介して、流通させ頒布することもで
きる。このような記録媒体には、ICカード、光ディス
ク、フレキシブルディスク、ROM等がある。流通、頒
布されたコンピュータプログラムはコンピュータ等にイ
ンストール等されることにより利用に供され、コンピュ
ータ等はそのコンピュータプログラムを実行して両実施
の形態で示したようなタスクのスケジューリングに関す
る制御を実現する。
【0169】
【発明の効果】上記第1の目的を達成するために、本発
明に係るタスク・スケジューリング装置は、複数のタス
クのうちからタスク実行手段に実行させるべき1つのタ
スクを順次特定するタスク・スケジューリング装置であ
って、1又は複数のタスクからなる複数のタスクグルー
プそれぞれを当該タスクグループの優先度に基づいて順
次選択し、同一優先度の複数のタスクグループそれぞれ
についてはタスクグループ毎に設定されたタイムスライ
ス値を用いるラウンドロビン方式により当該順次選択を
行う選択手段と、前記選択手段により選択されているタ
スクグループに属する各タスクを、当該タスクの当該タ
スクグループ内における優先度に基づいて前記タスク実
行手段の実行対象として順次特定し、同一優先度の複数
のタスクそれぞれについてはタスク毎に設定されたタイ
ムスライス値を用いるラウンドロビン方式により当該順
次特定を行う特定手段とを備えることを特徴とする。
【0170】これにより、タスク間及びタスクグループ
間における優先度を反映したスケジューリングが可能と
なり、更に、タスク間、タスクグループ間の緊急性に応
じて予め各タイムスライス値を適切に設定しておけば、
ある程度は適切な実行時間配分で各タスクを実行させる
ことが可能になる。また、例えば、ある目的を達成する
ための複数スレッド構成のAPを1つのタスクグループ
と扱い、又は連関してある目的を達成するための複数の
APを1つのタスクグループと扱い、その目的に応じた
優先度をそのタスクグループに設定するようにすれば、
各タスクグループは目的に応じて円滑に実行されるよう
になり、各タスクグループを構成する複数のタスク間で
はそのタスクグループ内において相互の優先度を定める
ことができるため、別のタスクグループの処理内容等を
考慮する必要がなくなり、複数のタスクで構成されるサ
ービスシステムの設計が容易となる。
【0171】また、前記選択手段は、あるタスクグルー
プを選択した後、当該タスクグループに対応するタイム
スライス値により示される時間が経過したときに当該タ
スクグループと優先度の等しい別のタスクグループを選
択することにより、前記ラウンドロビン方式による順次
選択を行い、前記特定手段は、あるタスクを特定した
後、当該タスクに対応するタイムスライス値により示さ
れる時間が経過したときに当該タスクと優先度の等しい
別のタスクを特定することにより、前記ラウンドロビン
方式による順次特定を行い、前記特定手段は、あるタス
クの特定の時から当該タスクに対応するタイムスライス
値により示される時間が経過する前に、前記選択手段に
より当該タスクの属さないタスクグループが選択された
場合には、当該タイムスライス値により示される時間
と、当該特定の時から当該選択の時までの時間との差分
時間を、次に当該タスクを特定した際において、当該タ
スクに対応するタイムスライス値により示される時間の
代わりに用いて、当該タスクの特定の時から当該差分時
間が経過したときに当該タスクとは別のタスクを特定す
ることにより、前記順次特定を行うこととしてもよい。
【0172】これにより、あるタスクの実行中に、タス
クグループ単位における実行対象の切り替えが生じるよ
うな場合においても、その実行中であったタスクは、次
に実行対象とされたときに、その実行上限の期間として
タイムスライス値に相当する時間の代わりに、タイムス
ライス値に相当する時間のうち前回に未消化であった時
間を用いて、その時間分だけ実行対象とされ続けるの
で、長い目で見た場合に各タスクは、それぞれのタイム
スライス値に応じた時間配分で実行されることになる。
つまり、タスクグループ単位での実行対象の切替がどの
ようなタイミングで発生しても、タスクグループ内にお
けるタスク相互間の実行時間配分は乱されず保たれるよ
うになる。また、タスクグループについてのタイムスラ
イス値は、そのタスクグループに属する各タスクのタイ
ムスライス値の総和にしておく必要がなくなり、複数の
タスクで構成されるサービスシステムの設計の自由度が
高まる。
【0173】また、前記タスク・スケジューリング装置
は、各タスクグループの識別子を格納するためのメモリ
領域である主レディキューと、実行可能状態にある各タ
スクが属する各タスクグループの識別子を優先度順にな
らぶように主レディキューに設定する主レディキュー設
定手段と、各タスクの識別子を格納するためのメモリ領
域でありタスクグループ毎に存在するメモリ領域である
副レディキューと、実行可能状態にあるタスクそれぞれ
の識別子を優先度順にならぶように、当該タスクの属す
るタスクグループに対応する副レディキューに設定する
副レディキュー設定手段と、前記選択手段による前記選
択からの経過時間を計時する第1計時手段と、前記特定
手段による前記特定からの経過時間を計時する第2計時
手段とを備え、前記選択手段は、前記主レディキュー中
の先頭の識別子が示しているタスクグループを選択し、
当該タスクグループに対応するタイムスライス値により
示される時間が前記第1計時手段により計時された時
に、選択していたタスクグループの識別子を当該主レデ
ィキューから取り出しかつ当該タスクグループの識別子
を前記主レディキュー設定手段を介して当該主レディキ
ューに再び設定し、前記特定手段は、前記選択手段によ
り選択されているタスクグループに対応する副レディキ
ュー中の先頭の識別子が示しているタスクを特定し、当
該タスクに対応するタイムスライス値により示される時
間のが前記第2計時手段により計時された時に、特定し
ていたタスクの識別子を当該副レディキューから取り出
しかつ当該タスクの識別子を当該副レディキュー設定手
段を介して当該副レディキューに再設定し、タスクの特
定後に当該タスクに対応するタイムスライス値により示
される時間が前記第2計時手段により計時されるより前
に、当該タスクを含まないタスク群が前記選択手段によ
り選択された場合には、当該選択時において前記第2計
時手段により計時された経過時間を保持しておき、次に
当該タスクを特定したときに、当該タスクに対応するタ
イムスライス値により示される時間の代わりに、当該タ
スクに対応するタイムスライス値から当該保持している
経過時間を減算した結果である時間が、前記第2計時手
段により計時された時に、当該タスクの識別子の副レデ
ィキューからの前記取り出し及び前記再設定を行うこと
としてもよい。
【0174】これにより、比較的簡単な構成で、タスク
とタスクグループという2階層におけるラウンドロビン
方式の優先度スケジューリングを実現することができる
ようになる。また、前記タスク・スケジューリング装置
は、更に、前記特定手段により実行対象として特定され
たタスクを実行するタスク実行手段を備えることとして
もよい。
【0175】これにより、タスク相互間の時間配分を保
って各タスクを実行することができるようになる。ま
た、前記タスク・スケジューリング装置は、更に、前記
特定手段により特定されているタスクが、実行中にシス
テムリソースの待ち状態となったことを検出すると当該
システムリソースを特定するリソース待ち検出手段と、
前記リソース待ち検出手段により特定されたシステムリ
ソースを確保しているタスクを検出するリソース確保タ
スク検出手段と、前記リソース確保タスク検出手段によ
り検出されたタスクが属するタスクグループの優先度を
元より高く定める優先度変更手段とを備えることとして
もよい。
【0176】これにより、上記第2の目的が達成され、
実行の緊急性が要求されるため優先度が高く定められて
いるタスクが、優先度の低いタスクグループに属するタ
スクにおいて確保されているシステムリソースを待つ場
合におけるその待ち時間が短縮される可能性が高まる。
また、前記タスク・スケジューリング装置は、元の優先
度を記憶するための記憶領域である旧優先度記憶手段を
備え、前記優先度変更手段は、タスクグループの優先度
の値を元の値より高く設定するに際して、当該タスクグ
ループの優先度の元の値を前記旧優先度記憶手段に格納
し、前記タスク・スケジューリング装置は、更に、前記
リソース確保タスク検出手段により検出されたタスクが
前記リソース待ち検出手段により特定されたシステムリ
ソースを解放したことを検出するリソース解放検出手段
と、前記リソース解放検出手段により前記検出がなされ
たときに、前記リソース確保タスク検出手段により検出
されていたタスクが属するタスクグループの優先度の値
を、前記旧優先度記憶手段に格納されている値に更新す
る優先度復旧手段とを備えることとしてもよい。
【0177】これにより、本来の優先度より高い優先度
に変更されたタスクグループの優先度が、システムリソ
ースの解放という目的を達成した後に元の優先度に戻さ
れるため、長い目で見れば予め設定されたタスクグルー
プ間の優先度が保たれるようになる。また、本発明に係
るタスク・スケジューリング装置は、複数のタスクのう
ちからタスク実行手段に実行させるべき1つのタスクを
順次特定するタスク・スケジューリング装置であって、
複数のタスクからなる1以上のタスクグループと、いず
れのタスクグループにも属さない1以上の独立タスクと
のうちのそれぞれを、当該タスクグループ及び独立タス
クの優先度に基づいて順次選択し、同一優先度のタスク
グループと独立タスクとのそれぞれについては、タスク
グループ又は独立タスクの単位で設定されたタイムスラ
イス値を用いるラウンドロビン方式により当該順次選択
を行い、選択したものが独立タスクである場合には当該
独立タスクを前記タスク実行手段の実行対象として特定
する選択手段と、前記選択手段によりタスクグループが
選択されたときに、当該タスクグループに属する各タス
クを、当該タスクの当該タスクグループ内における優先
度に基づいて前記タスク実行手段の実行対象として順次
特定し、同一優先度の複数のタスクそれぞれについては
タスク毎に設定されたタイムスライス値を用いるラウン
ドロビン方式により当該順次特定を行う特定手段とを備
えることを特徴とする。
【0178】これにより、1階層目に独立タスクとタス
ク群とを位置づけ、2階層目にタスク群を構成するタス
クを位置づけた2階層におけるラウンドロビン方式の優
先度スケジューリングを実現することができるため、木
目細かなスケジューリング制御が実現でき、ある程度は
適切な実行時間配分で各タスクを実行させることが可能
になる。
【0179】また、前記選択手段は、あるタスクグルー
プ又は独立タスクを選択した後、当該タスクグループ又
は独立タスクに対応するタイムスライス値により示され
る時間が経過したときに当該タスクグループ又は独立タ
スクと優先度の等しい別のタスクグループ又は独立タス
クを選択することにより、前記ラウンドロビン方式によ
る順次選択を行い、前記特定手段は、あるタスクを特定
した後、当該タスクに対応するタイムスライス値により
示される時間が経過したときに当該タスクと優先度の等
しい別のタスクを特定することにより、前記ラウンドロ
ビン方式による順次特定を行い、前記特定手段は、ある
タスクの特定の時から当該タスクに対応するタイムスラ
イス値により示される時間が経過する前に、前記選択手
段により当該タスクの属さないタスクグループが選択さ
れた場合には、当該タイムスライス値により示される時
間と、当該特定の時から当該選択の時までの時間との差
分時間を、次に当該タスクを特定した際において、当該
タスクに対応するタイムスライス値により示される時間
の代わりに用いて、当該タスクの特定の時から当該差分
時間が経過したときに当該タスクとは別のタスクを特定
することにより、前記順次特定を行うこととしてもよ
い。
【0180】これにより、タスクグループ単位及び独立
タスク単位での実行対象の切替がどのようなタイミング
で発生しても、タスクグループ内におけるタスク相互間
の実行時間配分は乱されず保たれるようになる。また、
前記タスク・スケジューリング装置は、更に、前記特定
手段により特定されているタスクが、実行中にシステム
リソースの待ち状態となったことを検出すると当該シス
テムリソースを特定するリソース待ち検出手段と、前記
リソース待ち検出手段により特定されたシステムリソー
スを確保しているタスクを検出するリソース確保タスク
検出手段と、前記リソース確保タスク検出手段により検
出されたタスクがタスクグループに属するものであれば
当該タスクグループの優先度の値を元の値より高く設定
する優先度変更手段とを備えることとしてもよい。
【0181】これにより、実行の緊急性が要求されるた
め優先度が高く定められているタスクが、優先度の低い
タスクグループに属するタスクにおいて確保されている
システムリソースを待つ場合におけるその待ち時間が短
縮される可能性が高まる。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係るタスク・スケジュ
ーリング装置100の機能ブロック図である。
【図2】タスク制御情報のデータ構成を示すとともに、
複数のタスク制御情報の内容例を一覧表形式で表した図
である。
【図3】レディキュー記憶部121に格納されるレディ
キューの内容例を示す図である。
【図4】レディキュー登録部120によりなされるレデ
ィキュー登録処理を示すフローチャートである。
【図5】タスク・スケジューリング装置100によりな
される実行タスク切替制御処理を示すフローチャートで
ある。
【図6】タスク・スケジューリング装置100によりな
される優先度一時変更処理を示すフローチャートであ
る。
【図7】優先度の変更後におけるタスク制御情報の内容
例を一覧表形式で表した図である。
【図8】タスク・スケジューリング装置100によるス
ケジューリングの結果として実行される各タスクについ
ての実行時間を示すタイムチャートである。
【図9】本発明の実施の形態2に係るタスク・スケジュ
ーリング装置400の機能ブロック図である。
【図10】タスク制御情報生成部410が生成しタスク
制御情報格納部411に格納されるタスク制御情報のデ
ータ構成を示すとともに、複数のタスク制御情報の内容
例を一覧表形式で表した図である。
【図11】レディキュー記憶部121に格納されるレデ
ィキューの内容例を示す図である。
【図12】タスク・スケジューリング装置400により
なされる実行タスク切替制御処理を示すフローチャート
である。
【図13】タスク・スケジューリング装置400による
スケジューリングの結果として実行される各タスクにつ
いての実行時間を示すタイムチャートである。
【図14】従来のタスク・スケジューリング装置の機能
ブロック図である。
【図15】従来のタスク・スケジューリング装置におけ
るレディキュー950の内容例を示す図である。
【図16】従来のタスク・スケジューリング装置におけ
るタイムスライステーブルの内容例を示す図である。
【図17】従来のタスク・スケジューリング装置による
スケジューリングの結果として実行される各タスクにつ
いての実行時間を示すタイムチャートである。
【符号の説明】
100 スケジューリング装置 110 タスク制御情報生成部 111 タスク制御情報格納部 120 レディキュー登録部 121 レディキュー記憶部 122 実行レディキュー情報格納部 130 実行タスク切替制御部 140 タスク切替時間検知部 150 タスク実行時間計時部 151 タスク実行時間カウンタ記憶部 160 グループ切替時間検知部 170 グループ実行時間計時部 171 グループ実行時間カウンタ記憶部 180 優先度変更部 190 プログラム実行制御機構 400 スケジューリング装置 410 タスク制御情報生成部 411 タスク制御情報格納部 430 実行タスク切替制御部 450 タスク実行時間計時部 470 グループ実行時間計時部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 黒田 豊治 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B098 CC01 GA04 GA08 GB13 GC03 GC05 GD01 GD14

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 複数のタスクのうちからタスク実行手段
    に実行させるべき1つのタスクを順次特定するタスク・
    スケジューリング装置であって、 1又は複数のタスクからなる複数のタスクグループそれ
    ぞれを当該タスクグループの優先度に基づいて順次選択
    し、同一優先度の複数のタスクグループそれぞれについ
    てはタスクグループ毎に設定されたタイムスライス値を
    用いるラウンドロビン方式により当該順次選択を行う選
    択手段と、 前記選択手段により選択されているタスクグループに属
    する各タスクを、当該タスクの当該タスクグループ内に
    おける優先度に基づいて前記タスク実行手段の実行対象
    として順次特定し、同一優先度の複数のタスクそれぞれ
    についてはタスク毎に設定されたタイムスライス値を用
    いるラウンドロビン方式により当該順次特定を行う特定
    手段とを備えることを特徴とするタスク・スケジューリ
    ング装置。
  2. 【請求項2】 前記選択手段は、あるタスクグループを
    選択した後、当該タスクグループに対応するタイムスラ
    イス値により示される時間が経過したときに当該タスク
    グループと優先度の等しい別のタスクグループを選択す
    ることにより、前記ラウンドロビン方式による順次選択
    を行い、 前記特定手段は、あるタスクを特定した後、当該タスク
    に対応するタイムスライス値により示される時間が経過
    したときに当該タスクと優先度の等しい別のタスクを特
    定することにより、前記ラウンドロビン方式による順次
    特定を行い、 前記特定手段は、 あるタスクの特定の時から当該タスクに対応するタイム
    スライス値により示される時間が経過する前に、前記選
    択手段により当該タスクの属さないタスクグループが選
    択された場合には、 当該タイムスライス値により示される時間と、当該特定
    の時から当該選択の時までの時間との差分時間を、次に
    当該タスクを特定した際において、当該タスクに対応す
    るタイムスライス値により示される時間の代わりに用い
    て、当該タスクの特定の時から当該差分時間が経過した
    ときに当該タスクとは別のタスクを特定することによ
    り、前記順次特定を行うことを特徴とする請求項1記載
    のタスク・スケジューリング装置。
  3. 【請求項3】 前記タスク・スケジューリング装置は、 各タスクグループの識別子を格納するためのメモリ領域
    である主レディキューと、 実行可能状態にある各タスクが属する各タスクグループ
    の識別子を優先度順にならぶように主レディキューに設
    定する主レディキュー設定手段と、 各タスクの識別子を格納するためのメモリ領域でありタ
    スクグループ毎に存在するメモリ領域である副レディキ
    ューと、 実行可能状態にあるタスクそれぞれの識別子を優先度順
    にならぶように、当該タスクの属するタスクグループに
    対応する副レディキューに設定する副レディキュー設定
    手段と、 前記選択手段による前記選択からの経過時間を計時する
    第1計時手段と、 前記特定手段による前記特定からの経過時間を計時する
    第2計時手段とを備え、 前記選択手段は、前記主レディキュー中の先頭の識別子
    が示しているタスクグループを選択し、当該タスクグル
    ープに対応するタイムスライス値により示される時間が
    前記第1計時手段により計時された時に、選択していた
    タスクグループの識別子を当該主レディキューから取り
    出しかつ当該タスクグループの識別子を前記主レディキ
    ュー設定手段を介して当該主レディキューに再び設定
    し、 前記特定手段は、 前記選択手段により選択されているタスクグループに対
    応する副レディキュー中の先頭の識別子が示しているタ
    スクを特定し、当該タスクに対応するタイムスライス値
    により示される時間のが前記第2計時手段により計時さ
    れた時に、特定していたタスクの識別子を当該副レディ
    キューから取り出しかつ当該タスクの識別子を当該副レ
    ディキュー設定手段を介して当該副レディキューに再設
    定し、 タスクの特定後に当該タスクに対応するタイムスライス
    値により示される時間が前記第2計時手段により計時さ
    れるより前に、当該タスクを含まないタスク群が前記選
    択手段により選択された場合には、当該選択時において
    前記第2計時手段により計時された経過時間を保持して
    おき、次に当該タスクを特定したときに、当該タスクに
    対応するタイムスライス値により示される時間の代わり
    に、当該タスクに対応するタイムスライス値から当該保
    持している経過時間を減算した結果である時間が、前記
    第2計時手段により計時された時に、当該タスクの識別
    子の副レディキューからの前記取り出し及び前記再設定
    を行うことを特徴とする請求項2記載のタスク・スケジ
    ューリング装置。
  4. 【請求項4】 前記タスク・スケジューリング装置は、
    更に、 前記特定手段により実行対象として特定されたタスクを
    実行するタスク実行手段を備えることを特徴とする請求
    項3記載のタスク・スケジューリング装置。
  5. 【請求項5】 前記タスク・スケジューリング装置は、
    更に、 前記特定手段により特定されているタスクが、実行中に
    システムリソースの待ち状態となったことを検出すると
    当該システムリソースを特定するリソース待ち検出手段
    と、 前記リソース待ち検出手段により特定されたシステムリ
    ソースを確保しているタスクを検出するリソース確保タ
    スク検出手段と、 前記リソース確保タスク検出手段により検出されたタス
    クが属するタスクグループの優先度を元より高く定める
    優先度変更手段とを備えることを特徴とする請求項2記
    載のタスク・スケジューリング装置。
  6. 【請求項6】 前記タスク・スケジューリング装置は、
    更に、 前記特定手段により特定されているタスクが、実行中に
    システムリソースの待ち状態となったことを検出すると
    当該システムリソースを特定するリソース待ち検出手段
    と、 前記リソース待ち検出手段により特定されたシステムリ
    ソースを確保しているタスクを検出するリソース確保タ
    スク検出手段と、 前記リソース確保タスク検出手段により検出されたタス
    クが属するタスクグループの優先度の値を元の値より高
    く設定する優先度変更手段とを備えることを特徴とする
    請求項1記載のタスク・スケジューリング装置。
  7. 【請求項7】 前記タスク・スケジューリング装置は、 元の優先度を記憶するための記憶領域である旧優先度記
    憶手段を備え、 前記優先度変更手段は、タスクグループの優先度の値を
    元の値より高く設定するに際して、当該タスクグループ
    の優先度の元の値を前記旧優先度記憶手段に格納し、 前記タスク・スケジューリング装置は、更に、 前記リソース確保タスク検出手段により検出されたタス
    クが前記リソース待ち検出手段により特定されたシステ
    ムリソースを解放したことを検出するリソース解放検出
    手段と、 前記リソース解放検出手段により前記検出がなされたと
    きに、前記リソース確保タスク検出手段により検出され
    ていたタスクが属するタスクグループの優先度の値を、
    前記旧優先度記憶手段に格納されている値に更新する優
    先度復旧手段とを備えることを特徴とする請求項6記載
    のタスク・スケジューリング装置。
  8. 【請求項8】 前記タスク・スケジューリング装置は、
    更に、 前記特定手段により実行対象として特定されたタスクを
    実行するタスク実行手段を備えることを特徴とする請求
    項7記載のタスク・スケジューリング装置。
  9. 【請求項9】 複数のタスクのうちからタスク実行手段
    に実行させるべき1つのタスクを順次特定するタスク・
    スケジューリング装置であって、 複数のタスクからなる1以上のタスクグループと、いず
    れのタスクグループにも属さない1以上の独立タスクと
    のうちのそれぞれを、当該タスクグループ及び独立タス
    クの優先度に基づいて順次選択し、同一優先度のタスク
    グループと独立タスクとのそれぞれについては、タスク
    グループ又は独立タスクの単位で設定されたタイムスラ
    イス値を用いるラウンドロビン方式により当該順次選択
    を行い、 選択したものが独立タスクである場合には当該独立タス
    クを前記タスク実行手段の実行対象として特定する選択
    手段と、 前記選択手段によりタスクグループが選択されたとき
    に、当該タスクグループに属する各タスクを、当該タス
    クの当該タスクグループ内における優先度に基づいて前
    記タスク実行手段の実行対象として順次特定し、同一優
    先度の複数のタスクそれぞれについてはタスク毎に設定
    されたタイムスライス値を用いるラウンドロビン方式に
    より当該順次特定を行う特定手段とを備えることを特徴
    とするタスク・スケジューリング装置。
  10. 【請求項10】 前記選択手段は、あるタスクグループ
    又は独立タスクを選択した後、当該タスクグループ又は
    独立タスクに対応するタイムスライス値により示される
    時間が経過したときに当該タスクグループ又は独立タス
    クと優先度の等しい別のタスクグループ又は独立タスク
    を選択することにより、前記ラウンドロビン方式による
    順次選択を行い、 前記特定手段は、あるタスクを特定した後、当該タスク
    に対応するタイムスライス値により示される時間が経過
    したときに当該タスクと優先度の等しい別のタスクを特
    定することにより、前記ラウンドロビン方式による順次
    特定を行い、 前記特定手段は、 あるタスクの特定の時から当該タスクに対応するタイム
    スライス値により示される時間が経過する前に、前記選
    択手段により当該タスクの属さないタスクグループが選
    択された場合には、 当該タイムスライス値により示される時間と、当該特定
    の時から当該選択の時までの時間との差分時間を、次に
    当該タスクを特定した際において、当該タスクに対応す
    るタイムスライス値により示される時間の代わりに用い
    て、当該タスクの特定の時から当該差分時間が経過した
    ときに当該タスクとは別のタスクを特定することによ
    り、前記順次特定を行うことを特徴とする請求項9記載
    のタスク・スケジューリング装置。
  11. 【請求項11】 前記タスク・スケジューリング装置
    は、更に、 前記特定手段により特定されているタスクが、実行中に
    システムリソースの待ち状態となったことを検出すると
    当該システムリソースを特定するリソース待ち検出手段
    と、 前記リソース待ち検出手段により特定されたシステムリ
    ソースを確保しているタスクを検出するリソース確保タ
    スク検出手段と、 前記リソース確保タスク検出手段により検出されたタス
    クがタスクグループに属するものであれば当該タスクグ
    ループの優先度の値を元の値より高く設定する優先度変
    更手段とを備えることを特徴とする請求項9記載のタス
    ク・スケジューリング装置。
  12. 【請求項12】 複数のタスクのうちからタスク実行手
    段に実行させるべき1つのタスクを順次特定するタスク
    ・スケジューリング処理をコンピュータに行わせるため
    の制御プログラムであって、 前記タスク・スケジューリング処理は、 1又は複数のタスクからなる複数のタスクグループそれ
    ぞれを当該タスクグループの優先度に基づいて順次選択
    し、同一優先度の複数のタスクグループそれぞれについ
    てはタスクグループ毎に設定されたタイムスライス値を
    用いるラウンドロビン方式により当該順次選択を行う選
    択ステップと、 前記選択ステップにより選択されているタスクグループ
    に属する各タスクを、当該タスクの当該タスクグループ
    内における優先度に基づいて前記タスク実行手段の実行
    対象として順次特定し、同一優先度の複数のタスクそれ
    ぞれについてはタスク毎に設定されたタイムスライス値
    を用いるラウンドロビン方式により当該順次特定を行う
    特定ステップとを含むことを特徴とする制御プログラ
    ム。
  13. 【請求項13】 複数のタスクのうちからタスク実行手
    段に実行させるべき1つのタスクを順次特定するタスク
    ・スケジューリング処理をコンピュータに行わせるため
    の制御プログラムであって、 前記タスク・スケジューリング処理は、 複数のタスクからなる1以上のタスクグループと、いず
    れのタスクグループにも属さない1以上の独立タスクと
    のうちのそれぞれを、当該タスクグループ及び独立タス
    クの優先度に基づいて順次選択し、同一優先度のタスク
    グループと独立タスクとのそれぞれについては、タスク
    グループ又は独立タスクの単位で設定されたタイムスラ
    イス値を用いるラウンドロビン方式により当該順次選択
    を行い、 選択したものが独立タスクである場合には当該独立タス
    クを前記タスク実行手段の実行対象として特定する選択
    ステップと、 前記選択ステップによりタスクグループが選択されたと
    きに、当該タスクグループに属する各タスクを、当該タ
    スクの当該タスクグループ内における優先度に基づいて
    前記タスク実行手段の実行対象として順次特定し、同一
    優先度の複数のタスクそれぞれについてはタスク毎に設
    定されたタイムスライス値を用いるラウンドロビン方式
    により当該順次特定を行う特定ステップとを含むことを
    特徴とする制御プログラム。
  14. 【請求項14】 コンピュータにおいて複数のタスクの
    うちからタスク実行手段に実行させるべき1つのタスク
    を順次特定するタスク・スケジューリング方法であっ
    て、 1又は複数のタスクからなる複数のタスクグループそれ
    ぞれを当該タスクグループの優先度に基づいて順次選択
    し、同一優先度の複数のタスクグループそれぞれについ
    てはタスクグループ毎に設定されたタイムスライス値を
    用いるラウンドロビン方式により当該順次選択を行う選
    択ステップと、 前記選択ステップにより選択されているタスクグループ
    に属する各タスクを、当該タスクの当該タスクグループ
    内における優先度に基づいて前記タスク実行手段の実行
    対象として順次特定し、同一優先度の複数のタスクそれ
    ぞれについてはタスク毎に設定されたタイムスライス値
    を用いるラウンドロビン方式により当該順次特定を行う
    特定ステップとを含むことを特徴とするタスク・スケジ
    ューリング方法。
  15. 【請求項15】 コンピュータにおいて複数のタスクの
    うちからタスク実行手段に実行させるべき1つのタスク
    を順次特定するタスク・スケジューリング方法であっ
    て、 複数のタスクからなる1以上のタスクグループと、いず
    れのタスクグループにも属さない1以上の独立タスクと
    のうちのそれぞれを、当該タスクグループ及び独立タス
    クの優先度に基づいて順次選択し、同一優先度のタスク
    グループと独立タスクとのそれぞれについては、タスク
    グループ又は独立タスクの単位で設定されたタイムスラ
    イス値を用いるラウンドロビン方式により当該順次選択
    を行い、選択したものが独立タスクである場合には当該
    独立タスクを前記タスク実行手段の実行対象として特定
    する選択ステップと、 前記選択ステップによりタスクグループが選択されたと
    きに、当該タスクグループに属する各タスクを、当該タ
    スクの当該タスクグループ内における優先度に基づいて
    前記タスク実行手段の実行対象として順次特定し、同一
    優先度の複数のタスクそれぞれについてはタスク毎に設
    定されたタイムスライス値を用いるラウンドロビン方式
    により当該順次特定を行う特定ステップとを含むことを
    特徴とするタスク・スケジューリング方法。
JP2002229363A 2001-08-09 2002-08-07 タスク・スケジューリング装置 Pending JP2003122586A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002229363A JP2003122586A (ja) 2001-08-09 2002-08-07 タスク・スケジューリング装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001242183 2001-08-09
JP2001-242183 2001-08-09
JP2002229363A JP2003122586A (ja) 2001-08-09 2002-08-07 タスク・スケジューリング装置

Publications (1)

Publication Number Publication Date
JP2003122586A true JP2003122586A (ja) 2003-04-25

Family

ID=26620274

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002229363A Pending JP2003122586A (ja) 2001-08-09 2002-08-07 タスク・スケジューリング装置

Country Status (1)

Country Link
JP (1) JP2003122586A (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004099984A1 (ja) * 2003-05-07 2004-11-18 Sony Corporation プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム
WO2005106661A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. データ処理プログラムおよびデータ処理装置
JP2005324278A (ja) * 2004-05-13 2005-11-24 Honda Motor Co Ltd ロボット制御装置
JP2007243645A (ja) * 2006-03-09 2007-09-20 Hitachi Kokusai Electric Inc 無線基地局装置
JP2009510817A (ja) * 2005-09-26 2009-03-12 深▲せん▼市朗科科技有限公司 メディアプレイヤにおけるマルチタスキング方法
CN100493041C (zh) * 2006-11-24 2009-05-27 河海大学 基于路由交换机的自适应可变时间片包转发调度方法
JP2009211386A (ja) * 2008-03-04 2009-09-17 Nec Corp プロセス制御装置、プロセス制御方法およびプロセス制御プログラム
JP2016004384A (ja) * 2014-06-16 2016-01-12 パナソニックIpマネジメント株式会社 店舗管理システムおよび店舗管理方法
KR101819504B1 (ko) 2011-06-01 2018-01-17 엘지전자 주식회사 이동 단말기 및 그 제어방법
KR20190060436A (ko) * 2017-11-24 2019-06-03 성균관대학교산학협력단 다중 사용자 환경에서 사용자 기반 리소스 스케쥴링 방법
CN111367652A (zh) * 2020-01-07 2020-07-03 苏州大学 一种嵌入式实时操作系统的任务调度处理系统和方法
CN111459981A (zh) * 2019-01-18 2020-07-28 阿里巴巴集团控股有限公司 查询任务的处理方法、装置、服务器及系统

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802253B2 (en) 2003-05-07 2010-09-21 Sony Corporation System for session management of resources and tasks having records in the lookup table for the session
WO2004099984A1 (ja) * 2003-05-07 2004-11-18 Sony Corporation プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム
WO2005106661A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. データ処理プログラムおよびデータ処理装置
US7765028B2 (en) 2004-05-13 2010-07-27 Honda Motor Co., Ltd. Robot control apparatus
JP2005324278A (ja) * 2004-05-13 2005-11-24 Honda Motor Co Ltd ロボット制御装置
JP2009510817A (ja) * 2005-09-26 2009-03-12 深▲せん▼市朗科科技有限公司 メディアプレイヤにおけるマルチタスキング方法
JP2007243645A (ja) * 2006-03-09 2007-09-20 Hitachi Kokusai Electric Inc 無線基地局装置
JP4648856B2 (ja) * 2006-03-09 2011-03-09 株式会社日立国際電気 無線基地局装置
CN100493041C (zh) * 2006-11-24 2009-05-27 河海大学 基于路由交换机的自适应可变时间片包转发调度方法
JP2009211386A (ja) * 2008-03-04 2009-09-17 Nec Corp プロセス制御装置、プロセス制御方法およびプロセス制御プログラム
JP4650504B2 (ja) * 2008-03-04 2011-03-16 日本電気株式会社 プロセス制御装置、プロセス制御方法およびプロセス制御プログラム
KR101819504B1 (ko) 2011-06-01 2018-01-17 엘지전자 주식회사 이동 단말기 및 그 제어방법
JP2016004384A (ja) * 2014-06-16 2016-01-12 パナソニックIpマネジメント株式会社 店舗管理システムおよび店舗管理方法
KR20190060436A (ko) * 2017-11-24 2019-06-03 성균관대학교산학협력단 다중 사용자 환경에서 사용자 기반 리소스 스케쥴링 방법
KR102044775B1 (ko) 2017-11-24 2019-11-14 성균관대학교산학협력단 다중 사용자 환경에서 사용자 기반 리소스 스케쥴링 방법
CN111459981A (zh) * 2019-01-18 2020-07-28 阿里巴巴集团控股有限公司 查询任务的处理方法、装置、服务器及系统
CN111459981B (zh) * 2019-01-18 2023-06-09 阿里巴巴集团控股有限公司 查询任务的处理方法、装置、服务器及系统
CN111367652A (zh) * 2020-01-07 2020-07-03 苏州大学 一种嵌入式实时操作系统的任务调度处理系统和方法
CN111367652B (zh) * 2020-01-07 2024-05-17 苏州大学 一种嵌入式实时操作系统的任务调度处理系统和方法

Similar Documents

Publication Publication Date Title
EP1286264A2 (en) Device for task scheduling with priority levels
US9229789B2 (en) Transparent user mode scheduling on traditional threading systems
US10459915B2 (en) Managing queries
US9218203B2 (en) Packet scheduling in a multiprocessor system using inter-core switchover policy
EP1916601A2 (en) Multiprocessor system
TWI416413B (zh) Work processing device
JP2003122586A (ja) タスク・スケジューリング装置
US8392932B2 (en) Information processing device for causing a processor to context switch between threads including storing contexts based on next thread start position
JP2004280485A (ja) 計算機システム
JP2017016541A (ja) 情報処理装置、並列計算機システム、ジョブスケジュール設定プログラムおよびジョブスケジュール設定方法
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
JP2007328413A (ja) 負荷分散方法
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
JP2009541852A (ja) コンピュータマイクロジョブ
JP5056346B2 (ja) 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム
JP2008204011A (ja) マルチスレッドシステム、スレッド動作異常検知方法
JP2008204013A (ja) スレッド動作異常検知方法、マルチスレッドシステム
JPWO2021117186A1 (ja) データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム
JP3998686B2 (ja) Cpu使用時間カウント方法及びこのcpu使用時間を用いるジョブ制御装置
US20020169908A1 (en) System and method for implementing a flexible arbitration mechanism
JP7188472B2 (ja) コンピュータ、スケジューリング方法、及び、プログラム
JP2019045907A (ja) アクセス制御装置
JP5772040B2 (ja) データ転送システム,データ転送スケジューリングプログラム
CN114490081A (zh) 资源调度方法、装置及电子设备