JP4016010B2 - リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム - Google Patents

リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム Download PDF

Info

Publication number
JP4016010B2
JP4016010B2 JP2004093020A JP2004093020A JP4016010B2 JP 4016010 B2 JP4016010 B2 JP 4016010B2 JP 2004093020 A JP2004093020 A JP 2004093020A JP 2004093020 A JP2004093020 A JP 2004093020A JP 4016010 B2 JP4016010 B2 JP 4016010B2
Authority
JP
Japan
Prior art keywords
task
processors
time
tasks
real
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
JP2004093020A
Other languages
English (en)
Other versions
JP2005284351A (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 JP2004093020A priority Critical patent/JP4016010B2/ja
Priority to US11/085,532 priority patent/US7797703B2/en
Priority to US10/592,362 priority patent/US7789670B2/en
Priority to CNB2005100592984A priority patent/CN100357894C/zh
Publication of JP2005284351A publication Critical patent/JP2005284351A/ja
Application granted granted Critical
Publication of JP4016010B2 publication Critical patent/JP4016010B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Compositions Of Macromolecular Compounds (AREA)

Description

本発明は複数のプロセッサ上で複数のタスクをリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定方法および同方法が適用されるリアルタイムシステムに関する。
リアルタイムシステムは、“タスクごとに決められた制限時間内に必ずこのタスクの処理を完了させなければならない”という時間的制約を受けたコンピュータシステムである。
一般に、各タスクごとに決められた制限時間のことを“デッドライン”、デッドライン内にタスクの処理が完了しないことを“デッドラインミス”と呼ぶ。デッドラインミスはリアルタイムシステムにおいては絶対に起こってはいけないことである。
代表的なリアルタイムシステムの応用例としては、航空管制システム、プラント制御監視システム、医療システムなどがある。例えば、航空管制システムは、航空機の衝突事故防止のため、航空機間や航空機と他の障害物との間の安全間隔を設定する。この際、飛行機同士が一秒以内に衝突するかどうか判定するという処理を二秒かかって行ったのでは意味がないので、航空管制システムは厳格な時間制約の上で動作しなければならない。
デッドラインミスを一切許さないという厳格な時間制約のもとで機器を動かすことを“リアルタイムスケジューリング”と呼ぶ。リアルタイムスケジューリングを実現する方法に関しては、様々な検討が進められている。
リアルタイムスケジューリングを実現する方法としては、EDF(earliest deadline first)アルゴリズムを用いてスケジューリングを行う技術が知られている(例えば、非特許文献1参照。)。
リアルタイムスケジューリングにおいては、各タスクがデッドラインミスを起こさないで実行できるように、適切なプロセッサを適切な期間だけ適切なタスクに割り当てることが重要である。
複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングする際には、第一に、これらのタスクが複数のプロセッサ上でリアルタイムスケジューリング可能であるかどうかをリアルタイムスケジューリング可能性判定方法を用いて判定し、可能であると判定された場合に限り、第二に、適切なスケジューリング方法を用いて、実際にどのプロセッサをどの期間にどのタスクに割り当てるか決定する。
代表的なスケジューリング方法であるEDFアルゴリズムは、デッドラインが早いタスクに対して優先的に早い時刻にプロセッサを割り当てるアルゴリズムである。
また、リアルタイムスケジューリング可能性判定方法としては、EDFアルゴリズムによるリアルタイムスケジューリングが可能であるかどうかを判定する方法が知られている(例えば、非特許文献2参照。)。
さらに、リアルタイムスケジューリング可能性判定方法としては、仮想的にスケジューリングを実行してデッドライミスが発生するかどうかを検査する方法も知られている(例えば、非特許文献3参照。)。
本明細書の以下においては、特に特記しない限りにおいて“リアルタイムスケジューリング可能(不可能)”であることを単に“スケジューリング可能(不可能)”と呼ぶことにする。
J. W. S. Liu著, "Real-Time Systems", Prentice Hall, 2000 T. P. Baker著, "An Analysis of EDF Schedulability on a Multiprocessor", FSU Computer Science Technical Report TR-030202, 2003 J. F. Hermant et all著, "Real-Time Fixed and Dynamic Priority Driven Scheduling Algorithms: Theory and Experience", Inria Technical Report, 1996
しかし、非特許文献2の判定方法は一つのタスクに同時に割り当てることが可能なプロセッサが一つである場合を前提とした方法であり、同時に複数のプロセッサを必要とするタスクについては考慮されていない。タスクによっては、その処理効率を高めるために同時に複数のプロセッサを必要とするものがある。従って、一つのタスクに同時に割り当てることが必要なプロセッサ数が複数である場合にも利用可能なスケジューリング可能性判定方法を提供することが必要である。
また仮想的にスケジューリングを行う非特許文献3の方法は計算時間が長いため現実的ではない。
本発明は上述の事情を考慮してなされたものであり、一つのタスクに同時に割り当てることが必要なプロセッサ数が複数である場合にも利用可能であり、かつ計算時間が短いスケジューリング可能性判定方法およびリアルタイムシステムを提供することを目的とする。
上述の課題を解決するため、請求項1に係る本発明は、同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定方法において、前記複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出するステップと、前記複数のタスクの全てがΣi=1...N Mi * Uk,i ≦ Lk の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定するステップとを具備し、前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、前記条件を満たす可能性を検証すべきタスクk ( 1 ≦ k ≦ N )に対応する前記Lkの値は、
(1) Mk ≦ (M + 1)/2 の場合
Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
であり、
前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
(1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
(3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とする。
本発明によれば、一つのタスクに同時に割り当てることが必要なプロセッサ数が複数である場合にもリアルタイムスケジューリング可能性を判定することができ、また仮想的なスケジューリングを行う場合に比べ計算時間を短くすることができる。
以下、図面を参照して、本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るリアルタイムシステムの構成例が示されている。このリアルタイムシステムは、例えば組み込みシステムとして使用されるコンピュータシステムであり、複数のタスクをその時間制約の範囲内でリアルタイムに実行する。
このリアルタイムシステムは、マスタープロセッサユニット(MPU11:Master Processing Unit)11と、複数のバーサタイルプロセッサユニット(VPU:Versatile Processing Unit)12と、バス13と、共有メモリ14と、I/O(input/output)コントローラ15、およびI/Oデバイス16を含んでいる。MPU11、複数のVPU12、メインメモリ14、I/Oコントローラ15は、バス13によって相互に接続されている。
MPU11は本リアルタイムシステムの動作を制御するメインプロセッサであり、共有メモリ14内に格納されたオペレーティングシステム(OS:Operating System)を実行する。各VPU12は、MPU11の管理の下で各種の処理を実行するプロセッサである。リアルタイム性が要求される複数のタスクは、複数のVPU12上で実行される。複数のタスクの各々は、同時に1以上のプロセッサを必要とする。オペレーティングシステムは、各タスクに1以上のVPU12をリアルタイムに割り当てる。このオペレーティングシステムは、スケジュール可能性判定部101およびスケジューラ102を含む。
スケジュール可能性判定部101は、リアルタイム性が要求される複数のタスクを複数のVPU12上で、例えばEDFアルゴリズムを用いてリアルタイムスケジューリングすることが可能であるかどうかを判定するスケジューリング可能性判定処理を実行する。リアルタイムスケジューリングすることが可能であることが判定された場合、スケジューラ102は、実際に複数のタスクを複数のVPU12上で、例えばEDFアルゴリズムを用いてリアルタイムスケジューリングする。EDFアルゴリズムは、上述したように、デッドラインが早いタスクに対して優先的に早い時刻にプロセッサを割り当てるアルゴリズムである。
スケジューリング可能性判定処理は、例えば、あるアプリケーションプログラムの実行が要求された時に実行される。この場合、スケジュール可能性判定部101は、そのアプリケーションプログラム内の複数のタスクと既に実行されているアプリケーションプログラム内の複数のタスクとを含む全てのタスクの各々についてデッドラインミスを発生する可能性があるかどうかを判定する。全てのタスクについてデッドラインミスを発生する可能性が無いことが判定されたならば、スケジューラ102は、全てのタスクのケジューリングを開始する。一方、もし全てのタスクの中の一つでもデッドラインミスを発生する可能性があると判定されたならば、実行が要求されたアプリケーションプログラム内の複数のタスクのスケジューリングは実行されない。既に実行されているアプリケーションプログラムは継続して実行される。これにより、デッドラインミスが発生することを事前に防止することができる。
図2には、スケジューリング可能性判定処理が実行される場合のデータの流れが示されている。
スケジュール可能性判定部101は、スケジューリングに利用可能な総プロセッサ数と、スケジューリングすべき全てのタスクそれぞれに対応するタスクパラメタ情報を入力する。各タスクのタスクパラメタ情報は、そのタスクを含むアプリケーションプログラムからスケジュール可能性判定部101に渡される。本実施形態においては、総プロセッサ数は、本リアルタイムシステムに設けられたVPU12の数を示す。
各タスクに対応するタスクパラメタ情報は、そのタスクの周期、そのタスクによって同時に使用されるプロセッサ数(利用プロセッサ数)、そのタスクの処理時間(実行期間)、およびそのタスクの相対デッドライン、等を示す。周期は、タスクが繰り返し実行されるべき時間間隔を示す。利用プロセッサ数は、タスクに同時に割り当てるべきプロセッサの数を示す。タスク毎に利用プロセッサ数は予め決められている。処理時間(実行期間)は、タスクの実行に要する時間を示す。
スケジュール可能性判定部101は、総プロセッサ数と、スケジューリングすべき全てのタスクそれぞれに対応するタスクパラメタ情報とを利用して、スケジューリング可能性判定処理を実行する。そして、スケジュール可能性判定部101は、判定結果(スケジューリング可能である、またはスケジューリング不可能である)をスケジューラ102に出力する。
ここで、タスクについて説明する。
各タスクは“ジョブ”と呼ばれるタスク実行単位の繰り返しであり、“周期”に等しい時間ごとにジョブが開始する。また、各ジョブはジョブ開始時刻から“相対デッドライン”に等しい時間内に、“利用プロセッサ数”に等しい数のプロセッサを同時に用いて、“処理時間”に等しい時間だけ実行される。また、ジョブ開始時刻に相対デッドラインを加えた時刻(つまりジョブの実行が完了しなければならない時刻)を“絶対デッドライン”と呼ぶことにする。
図3はタスクの具体例を示している。
この図3の横軸は時間軸, 縦軸はプロセッサを表している。また、この図3は、スケジューリングに利用可能な総プロセッサ数(VPUの総数)が 3 であるリアルタイムシステムにおいて、周期が 100ms, 利用プロセッサ数が 2, 処理時間が 50ms, 相対デッドラインが 80ms である、あるタスクを実行した例を示している。
図3においては、タスクの実行の様子が 3 周期分だけ示されている。各周期において、 2 つのプロセッサを同時に用いる、処理時間50ms のジョブが実行される。図3では、各ジョブの処理はジョブ開始時刻から絶対デッドラインまでの期間内に収まっている(デッドラインミスは発生していない)。
本明細書の以下において、特に明記しない限りにおいて、タスク実行に利用可能な総プロセッサ数を M, スケジューリング対象の総タスク数を N とし, N 個のタスクには 1 から N のタスク番号を付与することにする。また、タスクi ( 1 ≦ i ≦ N ) の周期, タスクi の利用プロセッサ数, タスクi の処理時間, タスクi の相対デッドラインをそれぞれ Ti, Mi, Ci, Di と置くことにする。
次に、スケジューリング可能性判定処理の手続きの概要を説明する。
図4は、複数のタスクを複数のプロセッサ上でEDF アルゴリズムを用いてスケジューリングすることが可能であるかどうか判定する手続きを示すフローチャートである。
スケジューリング可能性判定部101は、あるタスク (フローチャートではタスク k ( 1 ≦ k ≦ N )) に注目し、このタスクがデッドラインミスを起こす可能性があるかどうか判定する(ステップS101〜S103)。そして、スケジューリング可能性判定部101は、注目するタスク k を順番に変えながら(ステップS104、S105)、上記判定を繰り返し実行する。
もしすべてのタスクがデッドラインミスを起こす可能性がないと判定された場合には(ステップS105のYES)、スケジューリング可能性判定部101は、スケジューリング可能であると判定する(ステップS106)。タスクの中に 1 つでもデッドラインミスを起こす可能性があると判断されるタスクが含まれている場合には(ステップS103のYES)、スケジューリング可能性判定部101は、その時点でスケジューリング不可能であると判定する(ステップS107)。
スケジューリング可能性判定部101によってスケジューリング可能であると判定された場合には、デッドラインミスの発生を招くことなく、EDF アルゴリズムを用いたリアルタイムスケジューリングを実際に実行することが可能である。
本実施形態では、タスクがデッドラインミスを起こす場合に必ず成り立つ事象を用い、その事象が成り立つ場合にはタスクがデッドラインミスを起こす可能性があると判定を行う。
図5に、上記事象を用い図4に示したフローチャートを書き直したものを示した。
図5のフローチャートにおいては、タスク k がデッドラインミスを起こす場合に必ず成り立つ事象を Ak で表している。そのような事象はタスクごとに異なることから添字 k を付けてある。図5のフローチャートにおいては、スケジューリング可能性判定部101は、Ak が成り立つか否かを判定し(ステップS201)、これによって、EDF アルゴリズムを用いてスケジューリングした場合に、タスク k のデッドラインミスが発生する可能性があるかどうかを判定する。
より具体的には、タスク k がデッドラインミスを起こす場合に必ず成り立つ事象は以下に説明を行う Lk, Uk を用いた不等式 Lk < Uk で表される。この不等式の左辺, 右辺はタスクごとに異なることから添字 k を付けてある。
図7に、上記不等式 Lk < Ukを用い図5に示したフローチャートを書き直したものを示した。図7のフローチャートにおいては、スケジューリング可能性判定部101は、Lk < Uk が成り立つか否かを判定し(ステップS301)、これによってタスク k のデッドラインミスが発生する可能性があるかどうかを判定する。
次に、本実施形態で用いる、タスク k がデッドラインミスを起こす場合に必ず成り立つ事象 Lk < Uk ついて、第一に概要説明、第二に詳細説明を行う。
第一に上記事象について概要説明を行う。
デッドラインミスは、スケジューリングされた全てのタスクの負荷がリアルタイムシステムの処理能力を越える場合に発生する。そこでまず、負荷に関して定義を行う。負荷の定義は、 Lk, Uk を説明する際に重要な役割を果たす。
以下、負荷に関して厳密な定義を行う。
いま、複数のタスクを複数のプロセッサ上で実行する場合を想定する。そして、ある任意の期間Tに注目する。あるタスク i のジョブ群のうち、期間T内に絶対デッドラインを持つジョブ群のみに注目し、これらのジョブそれぞれが期間T内に実行される時間を合計したものをタスク i の“単一負荷時間”と定義する。
タスク i の利用プロセッサ数とタスク i の単一負荷時間とを掛け合わせたものをタスク i の“単一負荷”と定義する。タスク i の“単一負荷”は、そのタスク i 自体の実行によって生じる負荷である。
以上の“単一負荷時間”と“単一負荷”の定義により、たとえタスク i のあるジョブが期間T内に実行されていても、このジョブの絶対デッドラインが期間T内に入っていなければ、このジョブの実行時間はタスク i の“単一負荷時間”には加味されない。
また、すべてのタスクそれぞれの“単一負荷”を足し合わせたものを“合計負荷”と定義する。
上記の“単一負荷時間”、“単一負荷”、“合計負荷”の値を期間の長さで割ると様々な時間平均を求めることができる。
本明細書では、
“単一負荷時間”を期間Tの長さで割った値を“平均単一負荷時間”,
“単一負荷”を期間Tの長さで割った値を“平均単一負荷”,
“合計負荷”を期間Tの長さで割った値を“平均負荷”
とそれぞれ定義する。
いま、例えば期間 [T, T + Δ) に注目する。ここで、記号“[”は以上、記号“)”は未満を意味する。つまり、期間 [T, T + Δ) は、時刻Tから、時刻T + Δの直前までの期間である。
タスク数を N, タスク i の利用プロセッサ数を Mi, タスク i の単一負荷時間を Ei とすると、
期間 [T, T + Δ) におけるタスク i の単一負荷時間 = Ei,
期間 [T, T + Δ) におけるタスク i の単一負荷 = Mi * Ei,
期間 [T, T + Δ) における全てのタスクの合計負荷 = Σi=1...N ( Mi * Ei ),
期間 [T, T + Δ) におけるタスク i の平均単一負荷時間 = Ei / Δ,
期間 [T, T + Δ) におけるタスク i の平均単一負荷 = Mi * Ei / Δ,
期間 [T, T + Δ) における全てのタスクの平均負荷 = { Σi=1...N ( Mi * Ei )} / Δ,
とそれぞれ計算することができる。
図6に負荷の具体例を示す。
この図6の横軸は時間軸, 縦軸はプロセッサを表している。また図6は、スケジューリングに利用可能な総プロセッサ数 (VPUの総数)が 3 であるリアルタイムシステムにおいて、タスク 1 とタスク 2 が実行される様子を、 期間 [T, T + Δ) に関して示している。タスク 1 の絶対デッドライン T3 は期間[T, T + Δ)内に含まれている。このタスク 1 は、時刻 T1 から時刻 T2 の間プロセッサ 1 上で実行される。タスク 2 の絶対デッドライン T6 は期間[T, T + Δ)内に含まれている。このタスク 2 は、時刻 T4 から時刻 T5 の間 2 つのプロセッサ 2, 3 上で実行される。この 2 つのタスク 1 , 2 以外にこの期間[T, T + Δ)内に絶対デッドラインを持つタスクは存在しないとする。
この図6において、
タスク 1 の単一負荷時間 = T2 - T1
タスク 1 の単一負荷 = 1 * (T2 - T1)
タスク 2 の単一負荷時間 = T5 - T4
タスク 2 の単一負荷 = 2 * (T5 - T4)
合計負荷 = 1 * (T2 - T1) + 2 * (T5 - T4)
タスク 1 の平均単一負荷時間 = (T2 - T1) / Δ
タスク 1 の平均単一負荷 = 1 * (T2 - T1) / Δ
タスク 2 の平均単一負荷時間 = (T5 - T4) / Δ
タスク 2 の平均単一負荷 = 2 * (T5 - T4) / Δ
平均負荷 = {1 * (T2 - T1) + 2 * (T5 - T4)} / Δ
でそれぞれ計算される。
以下で詳しく説明する通り、あるタスク k がデッドラインミスを起こす場合においては、Lk は ある期間における全てのタスクの平均負荷以下の値に必ずなっており、Uk は同じ期間の平均負荷よりも必ず大きな値になっている。つまり、タスク k がデッドラインミスを起こす際には、必ず Lk < Uk という事象が成立する。スケジュール可能性判定部101は、Lk < Uk という事象が成立するかどうかを判定して、タスク k がデッドラインミスを起こす可能性があるかどうかを判断する。
以下において Lk, Uk を定義する。
まず、 Lk は、
“タスク k ごとに一意に定まる値であり、
タスク k がデッドラインミスを起こす場合に、
この値以上の平均負荷を持つ期間が存在することが保証されている値”
と定義する。
Lk は、タスク k がデッドラインミスを起こす場合には、“ある期間の実際の平均負荷が必ずこの値以上となる”という値であり、
Lk ≦ 実際の負荷
の関係が成立する。尚、Lk は、タスク k がデッドラインミスを起こす/起こさないに関係なく、タスク kのパラメタ情報と総プロセッサ数 M から求められる値である。
タスク k がデッドラインミスを起こす場合における Lk の値のことを、タスク k の “基準平均負荷”と呼ぶことにする。タスク k の“基準平均負荷”は、タスク k がデッドラインミスを起こす場合にのみ定義される値であり、ある一意に決められる期間の負荷はこの値以上になる。
また、“基準平均負荷期間”は
“あるタスクがデッドラインミスを起こす場合に一意に定まる期間であり,
基準平均負荷以上の平均負荷を持つ期間”
と定義する。
あるタスクがデッドラインミスを起こす場合、全てのタスクの平均負荷は期間ごとに様々な値を取り得る。このため、基準平均負荷 Lk としてどの値を選択するかにはいくつかの選択肢がある。
上記基準平均負荷の定義は、選択肢のうちどの値を基準平均負荷として選択するかに関しては規定していない。また、あるタスクがデッドラインミスを起こす場合、基準平均負荷以上の平均負荷を持つ期間は一期間または複数期間存在する。
上記基準平均負荷期間の定義は、それらの期間のうちどの期間を基準平均負荷期間として選択するかに関しては規定していない。
図8に基準平均負荷と基準平均負荷期間の具体例を示す。
この図8の横軸が概念的な期間, 縦軸が平均負荷を表している。期間は開始時間 S と終了時間 E の二次元で表されるものであるため、本来であればグラフの一次元の軸 (横軸) で表すことができない。そこで、この図8では横軸があくまで “概念的”な期間であると考えて説明を行う。
図8のグラフには、複数のタスクを複数のプロセッサ上で EDF アルゴリズムを用いて
スケジューリングした際に、期間ごとに平均負荷がどのように変化するかが波線で表されており、ある時刻においてタスク k がデッドラインミスを起こしているとする。この場合、平均負荷がタスク k の基準平均負荷Lk 以上となる期間が必ず存在する。
図8のグラフにおいては、
期間 I1 と期間 I2 の間の期間,
期間 I3 と期間 I4 の間の期間,
期間 I5 と期間 I6 の間の期間が
Lk 以上の平均負荷を持つ期間であるとする。
これらの期間の中から、タスク k の基準平均負荷期間が一意に定義される。図8では、例えば I3 をタスク k の基準平均負荷期間であるとしている。
次に、 Uk,i は
“タスク k, タスク i の二つのタスクの組ごとに一意に定まる値であり,
タスク k がデッドラインミスを起こす場合に,
タスク k の基準平均負荷期間におけるタスク i の平均単一負荷時間以上の値に
( i が k に等しい場合には, 平均単一負荷時間より大きく ) なっていることが
保証されている値“
と定義する。
Uk は
Uk = Σi=1...N ( Mi * Uk,i ) と定義する。
Uk は、タスク k がデッドラインミスを起こす場合には、“基準平均負荷期間の実際の平均負荷が必ずこの値未満となる”という値であり、
実際の負荷 < Uk
の関係が成立する。
タスク k がデッドラインミスを起こす場合においては、タスク k の基準平均負荷期間におけるタスク i の平均単一負荷時間の値以上となる値 ( i が k に等しい場合には, 平均単一負荷時間よりも大きい値) は無限に存在する。
上記 Uk,i の定義は、それらの値のうちどの値を Uk,i として選択するかに関しては規定していない。
あるタスクの平均単一負荷時間の値はどんなタスクに対しても 1 以下であるので、一例として、 i が k と等しいならば Uk,i = 1.1、それ以外の場合には Uk,i = 1 と定義することが可能である。これはほんの一例であり、複数存在する Uk,i の候補の中から、本実施形態例において具体的にどのような方法を用いて Uk,i を決めているかに関しては、タスクがデッドラインミスを起こす場合に必ず成り立つ事象 Lk < Uk の詳細説明を行う際に述べる。
Lk, Uk の定義を行ったので、次にタスク k がデッドラインミスを起こす場合に
Lk < Uk という事象が必ず成り立つことを説明する。
タスク k がデッドラインミスを起こす場合において、例えば、
タスク k の基準平均負荷期間を [Tk, Tk + Δk),
タスクの数を N,
タスク i の利用プロセッサ数を Mi,
基準平均負荷期間 [Tk, Tk + Δk) におけるタスク i の単一負荷時間を Ei
とすると、基準平均負荷と単一平均負荷の関係から、以下の式が成り立つ。
タスク k の基準平均負荷期間 [Tk, Tk + Δk) における全てのタスクの平均負荷
= { Σi=1...N ( Mi * Ei )} / Δk
= Σi=1...N ( Mi * 基準平均負荷期間 [Tk, Tk + Δk) におけるタスク i の平均単一負荷時間)
タスク k の基準平均負荷 Lk は、タスク k の基準平均負荷期間 [Tk, Tk + Δk) における全てのタスクの平均負荷以下であるこのことから、Lk に関する以下の式が成り立つ。
Lk ≦ タスク k の基準平均負荷期間 [Tk, Tk + Δk) における全てのタスクの平均負荷
また Uk,i は、 “タスク k がデッドラインミスを起こす場合に,
タスク k の基準平均負荷期間におけるタスク i の平均単一負荷時間以上に
( i が k に等しい場合には, 平均単一負荷時間より大きく ) なっていることが
保証されている値”であることから、 Uk,i に関する以下の式が成り立つ。
i = k の場合,
Uk,i > (基準平均負荷期間 [Tk, Tk + Δk) におけるタスク i の平均単一負荷時間) …(1)
それ以外の場合(つまり i ≠ k の場合),
Uk,i ≧ (基準平均負荷期間 [Tk, Tk + Δk) におけるタスク i の平均単一負荷時間) …(2)
また、
Uk = Σi=1...N Mi * Uk,i …(3)
である。
これらの式(1)〜(3)と先に示した Lk に関する不等式を用いると、以下の式を導くことができる。
Lk < Uk …(4)
以上のことから、タスク k がデッドラインミスを起こす場合には、Lk < Uk という事象が必ず成り立つことが示された。
次に、本実施形態で用いる、あるタスクがデッドラインミスを起こす場合に必ず成り立つ事象について詳細説明を行う。
タスク k がデッドラインミスを起こす場合に必ず成り立つ事象 Lk < Uk の
概要説明においては、
1)複数存在する Lk の値の候補から, 本実施形態において, 具体的にどのような方法を用いて Lk を選択しているか
2)複数存在する基準平均負荷期間の候補の中から, 本実施形態において, 具体的にどのような方法を用いて基準平均負荷期間を選択しているか
3)複数存在する Uk,i の値の候補から, 本実施形態において, 具体的にどのような方法を用いて Uk,i を選択しているか
に関しては特に規定しておらず、
これらに関しては事象 Lk < Uk の詳細説明を行う際に述べると言うに留めている。
そこで以下において、これら三つの選択方法に関して詳細説明を行う。
本実施例では、 Lk を以下に示す値にする。
(1) Mk ≦ (M + 1)/2 の場合
Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
(2) (M + 1)/2 < Mk の場合
Lk = M - Mk + 1
既に概要説明において述べた通り、タスク k がデッドラインミスを起こす場合において、全てのタスクの平均負荷が Lk 以上である期間が必ず存在するように Lk を選択しなければならない。
以下において、タスク k がデッドラインミスを起こす場合においては、全てのタスクの平均負荷が上記 Lk 以上となる期間が必ず存在することを示す。
そのためには、タスク k がデッドラインミスを起こす場合にこの時刻を Tk' とし、期間 [Tk' - Dk, Tk') における全てのタスクの平均負荷が上記 Lk 以上であることが示せれば十分である。
図9にタスク k がデッドラインミスを起こす直前の期間 [Tk' - DK, Tk') におけるタスク群の実行例を示す。図9の横軸は時間軸, 縦軸は各タスクが利用中のプロセッサ数を表している。また、この図9のグラフにおいて、ダブルハッチが施されている部分がタスク k の実行を示し、シングルハッチが施されている部分がタスク k 以外の他のタスク群の実行を示している。Tk' はタスク k がデッドラインミスを起こす可能性がある時点であり、期間 [Tk' - DK, Tk') は、タスク k の相対デッドラインの期間である。
またこのグラフでは、期間 [Tk' - DK, Tk') にタスク k のジョブが2回に分けて実行され、その合計の実行時間の長さを x で示している。
x = x1 + x2
タスク k が時刻Tk' でデッドラインミスを起こした場合、x はタスク k の処理時間 Ck よりも小さい。したがって、Dk から x を引いた残りの時間はタスク k を実行するために必要な Mk 個のプロセッサの空きがなかった、つまり少なくともM - Mk + 1 個のプロセッサがタスク k 以外のタスクを実行するために利用されていたことになる。
この事実を用いて、期間 [Tk' - DK, Tk') における全てのタスクの平均負荷を計算すると、その値は、
{Mk * x + (M - Mk + 1)(Dk - x)} / Dk …(5)
以上の値であることが分かる。
タスク k の実行時間 x は 0 以上 Ck 以下であるので、この式(5)の最小値は、
Mk ≦ (M + 1)/2 の場合は
(M - Mk + 1) - (M - 2Mk + 1)Ck/Dk,
(M + 1)/2 < Mk の場合は
M - Mk + 1
であり、これらは上記 Lk の値に等しい。
以上のことから、タスク k がデッドラインミスを起こす場合には、平均負荷が上記 Lk 以上の期間が必ず存在することが示された。
また、以上のことから、Lk の値は、タスク k のデッドラインミスを引き起こす可能性がある、最小の平均負荷値に相当するものであると言える。タスク k がデッドラインミスを起こす場合には、そのデッドラインミスを起こす直前のある期間(例えば、タスク k の相対デッドラインの期間)における平均負荷は Lk の値以上となる。
次に、基準平均負荷期間の定め方について説明する。
本実施形態では、 タスク k がデッドラインミスを起こす場合に, この時刻を Tk' とし, 平均負荷が Lk 以上である期間 [Tk' - Δk', Tk') の中で一番長い期間を基準平均負荷期間とする。 タスク k がデッドラインミスを起こす場合においては、平均負荷が Lk 以上である期間が必ず存在するので、基準平均負荷期間は必ず存在する。
図10に基準平均負荷期間の具体例を示す。
この図10の横軸が時間軸、縦軸が平均負荷を表している。期間 [T, Tk') における平均負荷と時刻 T との関係が波線で表されている。期間 [T, Tk') における平均負荷の値が、時刻 T 上に示されている。たとえば、時刻 Tk' - Dk 上に示された平均負荷の値は期間 [Tk' - Dk, Tk') における平均負荷の値であり、時刻 Tk 上に示された平均負荷の値は期間 [Tk , Tk') における平均負荷の値である。図10においては、平均負荷が Lk 以上になっている幾つかの期間の中でもっとも長い期間[Tk, Tk') がこの具体例における基準平均負荷期間である。
本実施形態では、Uk,i を以下に示す値にする。
(1) Mk ≦ (M + 1) / 2 の場合
(1-1) Mi < (M + 1) / 2 の場合
(1-1-1) Xk,i ≦ 0 の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(1-1-2) 0 < Xk,i < Ci/Ti の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
(1-1-3) Ci/Ti ≦ Xk,i の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
(1-2) Mi = (M + 1) / 2 の場合
(1-2-1) Mk ≠ (M + 1) / 2 の場合
(1-2-1-1) Ck / Dk < 1 / 2 の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(1-2-1-2) 1 / 2 ≦ Ck / Dk の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
(1-2-2) Mk = (M + 1) / 2 の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
(1-3) (M + 1) / 2 < Mi の場合
(1-3-1) Xk,i ≦ 0 の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
(1-3-2) 0 < Xk,i の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(2) (M + 1) / 2 < Mk の場合
(2-1) Mi < (M + 1) / 2 の場合
(2-1-1) Yk,i < Ci/Ti の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Yk,i*Ti)/Dk
(2-1-2) Ci/Ti ≦ Yk,i の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
(2-2) (M + 1) / 2 ≦ Mi の場合
(2-2-1) Mi ≦ Mk の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
(2-2-2) Mk < Mi の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
ただし、
Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)
Yk,i = (Mk - Mi)/(M - 2Mi + 1)
である。
また、上記 Uk,i の値を示す式においては、複数の条件のアンド条件を階層構造で示している。例えば、
“(1) Mk ≦ (M + 1) / 2 の場合
(1-1) Mi < (M + 1) / 2 の場合
(1-1-1) Xk,i ≦ 0 の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(1-1-2) 0 < Xk,i < Ci/Ti の場合
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk ”
という表記は、
(1) Mk ≦ (M + 1) / 2 の場合,(1-1) Mi < (M + 1) / 2 の場合,且つ
(1-1-1) Xk,i ≦ 0 の場合に
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(1) Mk ≦ (M + 1) / 2 の場合,(1-1) Mi < (M + 1) / 2 の場合,且つ
(1-1-2) 0 < Xk,i < Ci/Ti の場合に
Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
であることを示している。以下においても、同様の表記を利用する。
既に事象 Lk < Uk の概要説明において述べた通り、
タスク k がデッドラインミスを起こす場合に,
基準平均負荷期間におけるタスク i の平均単一負荷時間が Uk,i 以下に
( i が k に等しい場合には, タスク i の平均単一負荷時間が Uk,i 未満に )
必ずなるように Uk,i を選択しなければならない。
以下において、
タスク k がデッドラインミスを起こす場合に,
上記 Uk,i が基準平均負荷期間におけるタスク i の平均単一負荷時間以上に
( i が k に等しい場合には, タスク i の平均単一負荷時間がより大きく )
なっていることを示す。
図11にタスク k の基準平均負荷期間におけるタスク i の実行の具体例を示す。
この図11の横軸は時間軸、縦軸はプロセッサを表している。総プロセッサ数は 3 であり、期間 [Tk, Tk + Δk) がタスク k の基準平均負荷期間であるとする。
またこの具体例では、基準平均負荷期間 [Tk, Tk + Δk) にデッドラインが入っているタスク i のジョブが n + 1 個存在するとする。
さらに、 n + 1 個のジョブのうち最初に開始するジョブは、時刻 Tk - φに開始し、基準平均負荷期間 [Tk, Tk + Δk) 内に εi ( ≦ Ci ) の長さの時間だけ実行されるとする。また、n + 1 個のジョブのうち最後に開始するジョブは時刻 Tk + Δk - ψに開始し、基準平均負荷期間 [Tk, Tk + Δk) 内に δi ( i = k の場合には δi < Ci, それ以外の場合には δi ≦ Ci ) の長さの時間だけ実行されるとする。
基準平均負荷期間 [Tk, Tk + Δk) におけるタスク i の単一負荷時間は、
{εi + ( n - 1) * Ci + δi} / Δk
で計算でき、
i = k の場合には
{εi + ( n - 1) * Ci + δi} / Δk < (εi + n * Ci) / Δk
それ以外の場合には
{εi + ( n - 1) * Ci + δi} / Δk ≦ (εi + n * Ci) / Δk
の関係が成り立つ。
このため、(εi + n * Ci) / Δk の値が上記 Uk,i 以下であることが示せれば十分である。
以下、
(1) (εi + n * Ci) / Δk が最大になる条件を求める,
(2) “εi がこの値よりは絶対に大きくなることはないという値”を計算する,
(3) “(εi + n * Ci ) / Δk がこの値よりは絶対に大きくなることはないという値”を計算する,
という三つの手続きを経て、(εi + n * Ci) / Δk がこの値よりは絶対に大きくなることはないという値を計算する。
<<(εi + n * Ci) / Δk が最大になる条件>>
始めに, (εi + n * Ci) / Δk が最大になる条件を求める。
n + 1 個のジョブのうち最後に開始するジョブの絶対デッドラインが限りなく Tk + Δk に近くなる場合、図10に示した具体例で言うと、 ψ が限りなく Di に近くなる場合に (εi + n * Ci) / Δk が最大になる。
このことは、 ψ = Di + d ( d > 0 ) である期間 [Tk, Tk + Δk) において
(εi + n * Ci) / Δk が最大になると仮定すると、
期間 [Tk, Tk + Δk)
期間 [Tk - d / 2, Tk + Δk - d / 2) とでは、
期間 [Tk - d / 2, Tk + Δk - d / 2) の方が (εi + n * Ci) / Δk の値が大きくなり不合理を生じることから証明される。
また, ψ を Di に限りなく近くすると、n は (Δk - Di + φ) / Ti に限りなく近くなる。
<<εi がこの値よりは絶対に大きくなることはないという値の計算>>
次に, εi がこの値よりは絶対に大きくなることはないという値を計算する。
0 < εi であると仮定する。
図12に期間 [Tk - φ, Tk) におけるタスク群の実行の具体例を示す。
この図12の横軸が時間軸, 縦軸がタスク群によって使用されているプロセッサ数を表している。また、この図12のグラフにおいて、ダブルハッチが施されている部分がタスク i の実行を表しており、シングルハッチが施されている部分がタスク i 以外の他のタスク群の実行を表している。またこの具体例では、 期間 [Tk - φ, Tk) にタスク i が長さ Ci - εi の時間だけ実行されている。
φ から Ci - εi を引いた残り φ - Ci + εi の時間は、タスク i を実行するために必要な Mi 個のプロセッサの空きがなかった, つまり少なくとも M - Mi + 1 個のプロセッサがタスク i 以外のタスクを実行するために利用されていたことになる。
この事実を用いると、
期間 [Tk - φ, Tk + Δk) の全体負荷のうち
期間 [Tk - φ, Tk) に含まれるものは、
Mi * (Ci - εi) + (M - Mi + 1)(φ - Ci + εi)
よりも小さくなることはないことが計算される。
平均負荷が Lk 以上である期間 [Tk' - Δk', Tk') の候補の中で一番長い期間が基準平均負荷期間の定義であったので、
{Mi * (Ci - εi) + (M - Mi + 1)(φ - Ci + εi) } / φ は
基準平均負荷より小さい。
つまり、
{Mi * (Ci - εi) + (M - Mi + 1)(φ - Ci + εi) } / φ < Lk …(6)
の関係が成り立つ.
上記不等式(6)を適切な場合分けを行って整理すると、以下の通りになる。
ただし、
Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)
Yk,i = (Mk - Mi)/(M - 2Mi + 1)
と置いている。
(1) Mk ≦ (M + 1) / 2 の場合
(1-1) Mi < (M + 1) / 2 の場合
εi < Ci - Xk,i * φ
(1-2) Mi = (M + 1) / 2 の場合
(1-2-1) Mk ≠ (M + 1) / 2 の場合
Ck / Dk < 1 / 2
(1-2-2) Mk = (M + 1) / 2 の場合
0 < 0
(1-3) (M + 1) / 2 < Mi の場合
Ci - Xk,i * φ < εi
(2) (M + 1) / 2 < Mk の場合
(2-1) Mi < (M + 1) / 2 の場合
εi < Ci - Yk,i * φ .
(2-2) Mi = (M + 1) / 2 の場合
Mk < Mi = (M + 1) / 2
(2-3) (M + 1) / 2 < Mi の場合
Ci - Yk,i * φ < εi .
上記の結果には、 0 < 0 など恒等的に偽になる不等式が含まれているが、この場合は 0 < εi という仮定自体が誤っていたことを意味している。この結果に, さらに 0 ≦ εi ≦ Ci の関係を適用すると、εi は以下の通り整理できる。
(1) Mk ≦ (M + 1) / 2 の場合
(1-1) Mi < (M + 1) / 2 の場合
(1-1-1) Xk,i ≦ 0 の場合
εi ≦ Ci
(1-1-2) 0 < Xk,i * φ < Ci の場合
εi < Ci - Xk,i * φ
(1-1-3) Ci ≦ Xk,i * φ の場合
εi = 0
(1-2) Mi = (M + 1) / 2 の場合
(1-2-1) Mk ≠ (M + 1) / 2 の場合
(1-2-1-1) Ck / Dk < 1 / 2 の場合
εi ≦ Ci
(1-2-1-2) 1 / 2 ≦ Ck / Dk の場合
εi = 0
(1-2-2) Mk = (M + 1) / 2 の場合
εi = 0
(1-3) (M + 1) / 2 < Mi の場合
(1-3-1) Xk,i ≦ 0 の場合
εi = 0
(1-3-2) 0 < Xk,i の場合
εi ≦ Ci
(2) (M + 1) / 2 < Mk の場合
(2-1) Mi < (M + 1) / 2 の場合
(2-1-1) Yk,i ≦ 0 の場合
εi ≦ Ci
(2-1-2) 0 < Yk,i * φ < Ci の場合
εi < Ci - Yk,i * φ
(2-1-3) Ci ≦ Yk,i * φ の場合
εi = 0
(2-2) Mi = (M + 1) / 2 の場合
εi = 0
(2-3) (M + 1) / 2 < Mi の場合
(2-3-1) Yk,i ≦ 0 の場合
εi = 0
(2-3-2) 0 < Yk,i の場合
εi ≦ Ci
以上、“εi がこの値よりは絶対に大きくなることはないという値”を計算した。
<< (εi + n * Ci ) / Δk がこの値よりは絶対に
大きくなることはないという値の計算>>
最後に、 (εi + n * Ci ) / Δk がこの値よりは絶対に大きくなることはないという値を計算する。
εi がこの値よりは絶対に大きくなることはないという値が求められたので、この結果に加えて、
n = (Δk - Di + φ) / Ti, Dk ≦ Δk, 0 < φ ≦ Ti
の関係を用いると、
以下の不等式が成り立つ。
(1) Mk ≦ (M + 1) / 2 の場合
(1-1) Mi < (M + 1) / 2 の場合
(1-1-1) Xk,i ≦ 0 の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(1-1-2) 0 < Xk,i < Ci/Ti の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
(1-1-3) Ci/Ti ≦ Xk,i の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}
(1-2) Mi = (M + 1) / 2 の場合
(1-2-1) Mk ≠ (M + 1) / 2 の場合
(1-2-1-1) Ck / Dk < 1 / 2 の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(1-2-1-2) 1 / 2 ≦ Ck / Dk の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}
(1-2-2) Mk = (M + 1) / 2 の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}
(1-3) (M + 1) / 2 < Mi の場合
(1-3-1) Xk,i ≦ 0 の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}
(1-3-2) 0 < Xk,i の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
(2) (M + 1) / 2 < Mk の場合
(2-1) Mi < (M + 1) / 2 の場合
(2-1-1) Yk,i < Ci/Ti の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Yk,i*Ti)/Dk
(2-1-2) Ci/Ti ≦ Yk,i の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}
(2-2) (M + 1) / 2 ≦ Mi の場合
(2-2-1) Mi ≦ Mk の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}
(2-2-2) Mk < Mi の場合
(εi+n*Ci)/Δk≦Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
以上のことから、 (εi + n * Ci) / Δk の値が Uk,i 以下であることが示された。
以上、本実施形態で用いる、 タスクがデッドラインミスを起こす場合に必ず成り立つ
事象 Lk < Uk について詳細説明を行った。
次に、図13のフローチャートを参照して、スケジュール可能性判定部101によって実行されるスケジューリング可能性判定処理全体の流れについて説明する。
スケジュール可能性判定部101は、スケジューリング対象となる全てのタスクそれぞれに対応するタスクパラメタ情報、および総プロセッサ数を、オペレーティングシステムを通じて入力する(ステップS501)。次いで、スケジュール可能性判定部101は、タスク k のタスクパラメタ情報と、総プロセッサ数とに基づいて、タスク k のデッドラインミスを引き起こす可能性がある、最小の平均負荷値を求める(ステップS502)。最小の平均負荷値は上記 Lk である。
次に、スケジュール可能性判定部101は、全てのタスクそれぞれのタスクパラメタ情報に基づいて、平均負荷が Lk 以上となる最も早い時点からタスク k のデッドラインミスが発生する可能性がある時点までの期間(基準平均負荷期間)において発生する可能性がある、全てのタスクそれぞれの最大平均負荷の合計値を算出する(ステップS503)。この合計値は、上記 Uk である。
スケジュール可能性判定部101は、Lk と Uk を比較してタスク k のデッドラインミスが発生する可能性があるかどうかを判定する(ステップS504)。そして、スケジュール可能性判定部101は、タスク k を変更しながら(ステップS504)、ステップS502〜S504を繰り返し実行し、全てのタスクについてデッドラインミスを発生する可能性がないと判定された場合にスケジューリング可能であると判定する。
以上のように、本実施形態では、プロセッサ総数と各タスクの利用プロセッサ数とを考慮してLk と Uk の値を定義し、タスク毎に Lk , Uk を求めて Lk < Uk の事象が成立するかどうかを判定しているので、一つのタスクに同時に割り当てることが必要なプロセッサ数が複数である場合にも利用可能であり、かつ計算時間が短いスケジューリング可能性判定方法を実現できる。
また、複数の基準平均負荷期間の候補の中で一番長い期間を基準平均負荷期間として使用しているので、スケジューリング可能性判定の判定結果の厳密性を高めることが出来る。
また、実際には、一つのタスクが同時に使用するプロセッサの数には上限を設けることが現実的であるので、Uk,iの値としては、例えば、(1) Mk ≦ (M + 1) / 2, 且つMi < (M + 1) / 2の条件に対応する値のみを定義しても、十分な効果を得ることが出来る。
また、以上の例では、いずれか一つのタスクがLk < Ukの条件を満たすならば、EDFアルゴリズムを用いてリアルタイムスケジューリングすることが不可能であると判定したが、全てのタスクが Uk ≦ Lk の条件を満たすならばリアルタイムスケジューリング可能であると判定することも出来る。
この場合のスケジューリング可能性判定処理全体の流れを図14に示す。
スケジュール可能性判定部101は、スケジューリング対象となる全てのタスクそれぞれに対応するタスクパラメタ情報、および総プロセッサ数を、オペレーティングシステムを通じて入力する(ステップS601)。次いで、スケジュール可能性判定部101は、デッドラインミスを発生する可能性を検証するための2つの値、つまりLk , Uk 、をタスク k 毎に求める(ステップS602)。このステップS602では、スケジュール可能性判定部101は、まず、検証対象のタスク k のデッドラインミスを引き起こす可能性がある、最小の平均負荷値( Lk )を求める。次いで、スケジュール可能性判定部101は、全てのタスクそれぞれのタスクパラメタ情報に基づいて、平均負荷が Lk 以上となる最も早い時点から検証対象のタスク k のデッドラインミスが発生する可能性がある時点までの期間(基準平均負荷期間)において発生する可能性がある、全てのタスクそれぞれの最大平均負荷の合計値( Uk )を算出する。
スケジュール可能性判定部101は、検証対象のタスクを変更しながらステップS602の処理を繰り返し実行し(ステップS603,S604)、これによって全てのタスクそれぞれについて、Lk と Ukを求める。
次に、スケジュール可能性判定部101は、全てのタスクが、Uk ≦ Lk の条件を満たすか否かを判定する(ステップS605)。満たすならば、スケジューリング可能と判定し(ステップS606)、満たさないならば、スケジューリング不可能と判定する(ステップS607)。
次に、図15のフローチャートを参照して、スケジューリング可能性判定処理のさらなる他の例について説明する。
ここでは、タスク k がEDF アルゴリズムを用いてスケジューリングされた場合にデッドラインミスを起こす可能性を示す値 Xk を用いる。 Xk は、
Xk = Uk - Lk
で定義される。
スケジュール可能性判定部101は、スケジューリング対象となる全てのタスクそれぞれに対応するタスクパラメタ情報、および総プロセッサ数を、オペレーティングシステムを通じて入力する(ステップS701)。次いで、スケジュール可能性判定部101は、タスク k がデッドラインミスを起こす可能性を示す値 Xk を求める(ステップS702)。このステップS702では、スケジュール可能性判定部101は、まず、検証対象のタスク k のデッドラインミスを引き起こす可能性がある、最小の平均負荷値( Lk )を求める。次いで、スケジュール可能性判定部101は、全てのタスクそれぞれのタスクパラメタ情報に基づいて、平均負荷が Lk 以上となる最も早い時点から検証対象のタスク k のデッドラインミスが発生する可能性がある時点までの期間(基準平均負荷期間)において発生する可能性がある、全てのタスクそれぞれの最大平均負荷の合計値( Uk )を算出する。そして、これらUk , Lk を用いて、タスク k がデッドラインミスを起こす可能性を示す値 Xk を求める。
スケジュール可能性判定部101は、検証対象のタスクを変更しながらステップS702の処理を繰り返し実行し(ステップS703,S704)、これによって全てのタスクそれぞれについて、Xk を求める。
次に、スケジュール可能性判定部101は、全てのタスクそれぞれに対応する全てのXk の値が正であるかか否かを判定する(ステップS705)。満たすならば、スケジューリング可能と判定し(ステップS706)、満たさないならば、スケジューリング不可能と判定する(ステップS707)。
なお、本実施形態のスケジューリング可能性判定方法は全てコンピュータプログラムによって実現されているので、そのコンピュータプログラムが格納されたコンピュータ読み取り可能な記録媒体を通じてそのコンピュータプログラムをコンピュータに導入して実行するすることにより、容易に本実施形態と同様の効果を実現することが出来る。
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の一実施形態に係るリアルタイムシステムの構成の例を示すブロック図。 同実施形態のリアルタイムシステムで利用されるスケジューリング可能性判定部の動作を説明するための図。 同実施形態のリアルタイムシステムによって実行されるタスクを説明するための図。 同実施形態のリアルタイムシステムによって実行されるスケジューリング可能性判定処理の手順を示す第1のフローチャート。 同実施形態のリアルタイムシステムによって実行されるスケジューリング可能性判定処理の手順を示す第2のフローチャート。 同実施形態のリアルタイムシステムにおける負荷の具体例を説明するための図。 同実施形態のリアルタイムシステムによって実行されるスケジューリング可能性判定処理の手順を示す第3のフローチャート。 同実施形態のリアルタイムシステムにおける平均負荷と基準平均負荷期間を説明するための図。 同実施形態のリアルタイムシステムにおいてデッドラインミスが発生する直前の期間におけるタスク群の実行例を示す図。 同実施形態のリアルタイムシステムにおける基準平均負荷期間の定め方を説明するための図。 同実施形態のリアルタイムシステムにおける基準平均負荷期間におけるタスク i の実行例を示す図。 図11における期間 [Tk - φ, Tk) のタスク群の実行の具体例を示す図。 同実施形態のリアルタイムシステムによって実行されるスケジューリング可能性判定処理の手順を示す第4のフローチャート。 同実施形態のリアルタイムシステムによって実行されるスケジューリング可能性判定処理の手順を示す第5のフローチャート。 同実施形態のリアルタイムシステムによって実行されるスケジューリング可能性判定処理の手順を示す第6のフローチャート。
符号の説明
11…MPU、12…VPU、14…共有メモリ、101…スケジュール可能性判定部、102…スケジューラ

Claims (18)

  1. 同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定方法において、
    前記複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出するステップと、
    前記複数のタスクの全てが
    Σi=1...N Mi * Uk,i ≦ Lk
    の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定するステップとを具備し、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、
    前記条件を満たす可能性を検証すべきタスクk ( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    であり、
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とするリアルタイムスケジューリング可能性判定方法。
  2. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項1記載のリアルタイムスケジューリング可能性判定方法。
  3. 同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定方法において、
    前記複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出するステップと、
    前記複数のタスクの全てが
    Σi=1...N Mi * Uk,i ≦ Lk
    の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定するステップとを具備し、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、
    前記条件を満たす可能性を検証すべきタスk ( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    (2) (M + 1)/2 < Mk の場合
    Lk = M - Mk + 1
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2 の場合
    (1-1) Mi < (M + 1) / 2 の場合
    (1-1-1) Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (1-1-2) 0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (1-1-3) Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-2) Mi = (M + 1) / 2 の場合
    (1-2-1) Mk ≠ (M + 1) / 2の場合
    (1-2-1-1) Ck / Dk < 1 / 2 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (1-2-2) Mk = (M + 1) / 2 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-3) (M + 1) / 2 < Mi の場合
    (1-3-1) Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-3-2) 0 < Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) (M + 1) / 2 < Mk の場合
    (2-1) Mi < (M + 1) / 2 の場合
    (2-1-1) Yk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Yk,i*Ti)/Dk
    (2-1-2) Ci/Ti ≦ Yk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (2-2) (M + 1) / 2 ≦ Mi の場合
    (2-2-1) Mi ≦ Mk の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (2-2-2) Mk < Mi の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であり、Yk,i = (Mk - Mi)/(M - 2Mi + 1)であることを特徴とするリアルタイムスケジューリング可能性判定方法。
  4. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項3記載のスケジューリング可能性判定方法。
  5. 同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定方法において、
    (1)前記各タスクの周期、前記各タスクによって同時に使用されるプロセッサ数、前記各タスクの処理時間、および前記各タスクの相対デッドラインを示すタスクパラメタ情報を入力するステップと
    (2)前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとした場合において、
    前記デッドラインミスが発生する可能性を検証すべきタスクk ( 1 ≦ k ≦ N )のタスクパラメタ情報と前記複数のプロセッサの数M とに基づいて、前記検証すべきタスクk に対応する Lk および Σ i=1...N Mi * Uk,i を算出するステップと、
    (3)Σ i=1...N Mi * Uk,i ≦ Lk
    の条件を満たすか否かを判定するステップと、
    (4)前記検証すべきタスクk を1 から N まで変更しながら前記(2)〜(3)を繰り返し実行するステップと、
    (5)前記複数のタスクのすべてがΣ i=1...N Mi * Uk,i ≦ Lk の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定するステップとを具備し、
    前記検証すべきタスクk ( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    であり、
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とするリアルタイムスケジューリング可能性判定方法。
  6. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項5記載のリアルタイムスケジューリングが可能性判定方法。
  7. 複数のプロセッサと、
    同時に1以上のプロセッサをそれぞれ使用する、リアルタイムスケジューリング対象のの複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出する手段と、
    前記複数のタスクの全てが
    Σi=1...N Mi * Uk,i ≦ Lk
    の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定する手段と、
    前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定された場合に、前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングするスケジューリング手段とを具備し、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、
    前記条件を満たす可能性を検証すべきタスクk( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    であり、
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とするリアルタイムシステム。
  8. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項7記載のリアルタイムシステム。
  9. 複数のプロセッサと、
    同時に1以上のプロセッサをそれぞれ使用する、リアルタイムスケジューリング対象のの複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出する手段と、
    前記複数のタスクの全てが
    Σi=1...N Mi * Uk,i ≦ Lk
    の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定する手段と、
    前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定された場合に、前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングするスケジューリング手段とを具備し、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、
    前記条件を満たす可能性を検証すべきタスクk( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    (2) (M + 1)/2 < Mk の場合
    Lk = M - Mk + 1
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2 の場合
    (1-1) Mi < (M + 1) / 2 の場合
    (1-1-1) Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (1-1-2) 0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (1-1-3) Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-2) Mi = (M + 1) / 2 の場合
    (1-2-1) Mk ≠ (M + 1) / 2の場合
    (1-2-1-1) Ck / Dk < 1 / 2 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (1-2-2) Mk = (M + 1) / 2 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-3) (M + 1) / 2 < Mi の場合
    (1-3-1) Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-3-2) 0 < Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) (M + 1) / 2 < Mk の場合
    (2-1) Mi < (M + 1) / 2 の場合
    (2-1-1) Yk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Yk,i*Ti)/Dk
    (2-1-2) Ci/Ti ≦ Yk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (2-2) (M + 1) / 2 ≦ Mi の場合
    (2-2-1) Mi ≦ Mk の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (2-2-2) Mk < Mi の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であり、Yk,i = (Mk - Mi)/(M - 2Mi + 1)であることを特徴とするリアルタイムシステム。
  10. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項9記載のリアルタイムシステム。
  11. 複数のプロセッサと、
    同時に1以上のプロセッサをそれぞれ使用する、リアルタイムスケジューリング対象の複数のタスクの各々の周期、前記各タスクによって同時に使用されるプロセッサ数、前記各タスクの処理時間、および前記各タスクの相対デッドラインを示すタスクパラメタ情報を入力する手段と、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとした場合において、前記デッドラインミスが発生する可能性を検証すべきタスクk ( 1 ≦ k ≦ N )のタスクパラメタ情報と前記複数のプロセッサの数M とに基づいて、前記検証すべきタスクk に対応する Lk および Σ i=1...N Mi * Uk,i を算出する第1の処理を実行する手段と、
    Σ i=1...N Mi * Uk,i ≦ Lk
    の条件を満たすか否かを判定する第2の処理を実行する手段と、
    前記検証すべきタスクk を1 から N まで変更しながら、前記第1の処理と第2の処理を繰り返し実行する手段と、
    前記複数のタスクのすべてがΣ i=1...N Mi * Uk,i ≦ Lk の条件を満たす場合に、前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングするスケジューリング手段とを具備し、
    前記検証すべきタスクk ( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    であり、
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とするリアルタイムシステム。
  12. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項11記載のリアルタイムシステム。
  13. 同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定処理をコンピュータに実行させるプログラムであって、
    前記複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出する処理を、前記コンピュータに実行させる手順と、
    前記複数のタスクの全てが
    Σi=1...N Mi * Uk,i ≦ Lk
    の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定する処理を、前記コンピュータに実行させる手順とを具備し、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、
    前記条件を満たす可能性を検証すべきタスクk( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    であり、
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    であり、ただしMk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とするプログラム。
  14. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項13記載のプログラム。
  15. 同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でリアルタイムスケジューリングすることが可能であるかどうかを判定するリアルタイムスケジューリング可能性判定処理をコンピュータに実行させるプログラムであって、
    前記複数のタスクの各々について Lk および Σi=1...N Mi * Uk,i を算出する処理を、前記コンピュータに実行させる手順と、
    前記複数のタスクの全てが
    Σi=1...N Mi * Uk,i ≦ Lk
    の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定する処理を、前記コンピュータに実行させる手順とを具備し、
    前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとすると、
    前記条件を満たす可能性を検証すべきタスクk( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    (2) (M + 1)/2 < Mk の場合
    Lk = M - Mk + 1
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2 の場合
    (1-1) Mi < (M + 1) / 2 の場合
    (1-1-1) Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (1-1-2) 0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (1-1-3) Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-2) Mi = (M + 1) / 2 の場合
    (1-2-1) Mk ≠ (M + 1) / 2の場合
    (1-2-1-1) Ck / Dk < 1 / 2 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (1-2-2) Mk = (M + 1) / 2 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-3) (M + 1) / 2 < Mi の場合
    (1-3-1) Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (1-3-2) 0 < Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) (M + 1) / 2 < Mk の場合
    (2-1) Mi < (M + 1) / 2 の場合
    (2-1-1) Yk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Yk,i*Ti)/Dk
    (2-1-2) Ci/Ti ≦ Yk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (2-2) (M + 1) / 2 ≦ Mi の場合
    (2-2-1) Mi ≦ Mk の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    (2-2-2) Mk < Mi の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であり、Yk,i = (Mk - Mi)/(M - 2Mi + 1)であることを特徴とするプログラム。
  16. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項15記載のプログラム。
  17. 同時に1以上のプロセッサをそれぞれ使用する複数のタスクを複数のプロセッサ上でスケジューリングすることが可能であるかどうかを判定する処理を、コンピュータに実行させるプログラムであって、
    (1)前記各タスクの周期、前記各タスクによって同時に使用されるプロセッサ数、前記各タスクの処理時間、および前記各タスクの相対デッドラインを示すタスクパラメタ情報を入力する処理を、前記コンピュータに実行させる手順と、
    (2)前記複数のプロセッサの数をM、前記複数のタスクの数をN、タスクi( 1 ≦ i ≦ N )の周期をTi、タスクiによって同時に使用されるプロセッサ数をMi、タスクiの処理時間をCi、タスクiの相対デッドラインをDiとした場合において、
    前記デッドラインミスが発生する可能性を検証すべきタスクk ( 1 ≦ k ≦ N )のタスクパラメタ情報と前記複数のプロセッサの数M とに基づいて、前記検証すべきタスクk に対応する Lk および Σ i=1...N Mi * Uk,i を算出する処理を、前記コンピュータに実行させる手順と、
    (3)Σ i=1...N Mi * Uk,i ≦ Lk
    の条件を満たすか否かを判定する処理を、前記コンピュータに実行させる手順と、
    (4)前記検証すべきタスクk を1 から N まで変更しながら前記(2)〜(3)を繰り返し実行する処理を、前記コンピュータに実行させる手順と、
    (5)前記複数のタスクのすべてがΣ i=1...N Mi * Uk,i ≦ Lk の条件を満たす場合に前記複数のタスクを前記複数のプロセッサ上でリアルタイムスケジューリングすることが可能であると判定する処理を、前記コンピュータに実行させる手順とを具備し、
    前記検証すべきタスクk ( 1 ≦ k ≦ N )に対応する前記Lkの値は、
    (1) Mk ≦ (M + 1)/2 の場合
    Lk = (M - Mk + 1) - (M - 2Mk + 1)Ck/Dk
    であり、
    前記タスクk( 1 ≦ k ≦ N )に対応する前記Uk,iの値は、
    (1) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Xk,i ≦ 0 の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+Ci/Dk
    (2) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ0 < Xk,i < Ci/Ti の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}+(Ci-Xk,i*Ti)/Dk
    (3) Mk ≦ (M + 1) / 2の場合, Mi < (M + 1) / 2の場合, 且つ Ci/Ti ≦ Xk,i の場合
    Uk,i = Ci/Ti{1+(Ti-Di)/Dk}
    であり、ただし、Mk は検証すべきタスクk によって同時に使用されるプロセッサ数、Ck は検証すべきタスクk の処理時間、Dk は検証すべきタスクkの相対デッドラインであり、Xk,i = {Mk - Mi + (M - 2Mk + 1)Ck/Dk}/(M - 2Mi + 1)であることを特徴とするプログラム。
  18. 前記リアルタイムスケジューリングはEDF(earliest deadline first)アルゴリズムを用いて実行されることを特徴とする請求項17記載のプログラム。
JP2004093020A 2004-03-26 2004-03-26 リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム Expired - Fee Related JP4016010B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004093020A JP4016010B2 (ja) 2004-03-26 2004-03-26 リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム
US11/085,532 US7797703B2 (en) 2004-03-26 2005-03-22 Real-time schedulability determination method and real-time system
US10/592,362 US7789670B2 (en) 2004-03-26 2005-03-24 Planar connector
CNB2005100592984A CN100357894C (zh) 2004-03-26 2005-03-25 实时可调度性确定方法和实时***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004093020A JP4016010B2 (ja) 2004-03-26 2004-03-26 リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム

Publications (2)

Publication Number Publication Date
JP2005284351A JP2005284351A (ja) 2005-10-13
JP4016010B2 true JP4016010B2 (ja) 2007-12-05

Family

ID=35046527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004093020A Expired - Fee Related JP4016010B2 (ja) 2004-03-26 2004-03-26 リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム

Country Status (3)

Country Link
US (2) US7797703B2 (ja)
JP (1) JP4016010B2 (ja)
CN (1) CN100357894C (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4074296B2 (ja) * 2005-03-25 2008-04-09 株式会社東芝 スケジューリング可能性判定方法、リアルタイムシステム及びプログラム
JP2007133723A (ja) * 2005-11-11 2007-05-31 Hitachi Ltd マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ
JP4523921B2 (ja) * 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
US8584122B2 (en) * 2006-03-31 2013-11-12 Ebay Inc. Batch scheduling
TWI472574B (zh) * 2006-08-24 2015-02-11 Polyplastics Co 非對稱電子零件
CN100465857C (zh) * 2006-10-12 2009-03-04 浙江大学 一种面向嵌入式***低功耗实时任务调度的简化方法
CN100416463C (zh) * 2006-10-12 2008-09-03 浙江大学 面向嵌入式***低功耗实时任务参数模型调度方法
JP2009064388A (ja) * 2007-09-10 2009-03-26 Fourlink Systems:Kk タスク制御システム
US8789059B2 (en) * 2007-11-02 2014-07-22 International Business Machines Corporation Dynamic scheduling feasibility analysis of event-driven applications based on reducing tasks of overlapping events
JP5165492B2 (ja) * 2008-05-23 2013-03-21 ポリプラスチックス株式会社 平面状コネクター
US20090313631A1 (en) * 2008-06-11 2009-12-17 Fabio De Marzo Autonomic workload planning
WO2010089900A1 (en) * 2009-02-05 2010-08-12 Nec Corporation Method, system and program for deadline constrained task admission control and scheduling using genetic approach
TW201132747A (en) * 2009-11-16 2011-10-01 Sumitomo Chemical Co Liquid crystalline polyester composition for connector and connector using the same
US8856807B1 (en) * 2011-01-04 2014-10-07 The Pnc Financial Services Group, Inc. Alert event platform
JP6185922B2 (ja) 2011-11-15 2017-08-23 ティコナ・エルエルシー ファインピッチ電気コネクター及びそれにおいて用いる熱可塑性組成物
TWI487726B (zh) 2011-11-15 2015-06-11 Ticona Llc 用於具有小尺寸公差之模製部件之低環烷之液晶聚合物組合物
US8906259B2 (en) 2011-11-15 2014-12-09 Ticona Llc Naphthenic-rich liquid crystalline polymer composition with improved flammability performance
JP2014533325A (ja) 2011-11-15 2014-12-11 ティコナ・エルエルシー 低ナフテン系液晶ポリマー組成物
US8646994B2 (en) 2011-11-15 2014-02-11 Ticona Llc Compact camera module
US8938739B2 (en) * 2012-06-02 2015-01-20 Texas Instruments Incorporated Resource sharing aware task partitioning for multiprocessors
WO2014062536A1 (en) 2012-10-16 2014-04-24 Ticona Llc Antistatic liquid crystalline polymer composition
KR101399758B1 (ko) 2012-11-27 2014-05-27 숭실대학교산학협력단 다수의 슬레이브 장치에서 실행되는 태스크의 주기 스케쥴링 장치 및 방법
US9355753B2 (en) 2012-12-05 2016-05-31 Ticona Llc Conductive liquid crystalline polymer composition
KR20140080058A (ko) * 2012-12-20 2014-06-30 삼성전자주식회사 멀티코어를 위한 로드 밸런싱 방법 및 휴대 단말
KR102465221B1 (ko) 2013-03-13 2022-11-09 티코나 엘엘씨 컴팩트 카메라 모듈
CN106164172B (zh) 2014-04-09 2019-07-26 提克纳有限责任公司 摄像模组
KR102305241B1 (ko) 2014-04-09 2021-09-24 티코나 엘엘씨 대전방지 중합체 조성물
KR102309429B1 (ko) * 2017-03-20 2021-10-07 현대자동차주식회사 차량 및 그 제어 방법
KR102627886B1 (ko) 2017-12-05 2024-01-19 티코나 엘엘씨 카메라 모듈에 사용하기 위한 방향족 중합체 조성물
CN109947543B (zh) * 2019-03-06 2022-11-01 华侨大学 一种基于单检查点机制的容错能耗优化方法
KR102264205B1 (ko) * 2019-09-20 2021-06-10 인천대학교 산학협력단 실시간 시스템에서의 작업 할당 스케줄링이 가능한지 여부를 판정할 수 있는 실시간성 분석 장치 및 그 동작 방법
KR102252079B1 (ko) * 2019-09-20 2021-05-13 인천대학교 산학협력단 실시간 시스템을 위한 실시간성 분석 장치 및 그 동작 방법
EP4111834A4 (en) 2020-02-26 2024-06-05 Ticona LLC CIRCUIT STRUCTURE
CN115151414A (zh) 2020-02-26 2022-10-04 提克纳有限责任公司 用于电子器件的聚合物组合物
CN115151607A (zh) 2020-02-26 2022-10-04 提克纳有限责任公司 电子器件
US11728065B2 (en) 2020-07-28 2023-08-15 Ticona Llc Molded interconnect device
WO2023276075A1 (ja) * 2021-06-30 2023-01-05 三菱電機株式会社 スケジューリング方法及びスケジューリング設計支援装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2579742B2 (ja) 1995-02-20 1997-02-12 ポリプラスチックス株式会社 射出成型用組成物
US6466962B2 (en) * 1995-06-07 2002-10-15 International Business Machines Corporation System and method for supporting real-time computing within general purpose operating systems
JP3453981B2 (ja) 1996-01-26 2003-10-06 東レ株式会社 ファインピッチコネクター成形品用液晶性樹脂組成物およびそれからなるファインピッチコネクター成形品。
JP3683080B2 (ja) 1997-09-25 2005-08-17 三菱エンジニアリングプラスチックス株式会社 樹脂組成物、並びに中空部を有する射出成形品及び射出成形方法
JP2000026743A (ja) 1998-07-15 2000-01-25 Toray Ind Inc 液晶性樹脂組成物
JP4118425B2 (ja) 1998-12-18 2008-07-16 ポリプラスチックス株式会社 コネクター用液晶性ポリマー組成物およびコネクター
WO2000075159A1 (en) * 1999-06-03 2000-12-14 Cornell Research Foundation, Inc. FUNGAL EXO-β 1,3 GLUCOSIDASE ENCODING DNA MOLECULE AND ITS USE IN CONTROLLING FUNGI IN PLANTS
JP4450902B2 (ja) * 1999-10-08 2010-04-14 ポリプラスチックス株式会社 液晶性ポリマー組成物
JP2001350639A (ja) * 2000-06-06 2001-12-21 Atr Adaptive Communications Res Lab ソフトリアルタイムにおけるスケジューリング方法
JP2002194188A (ja) 2000-12-26 2002-07-10 Toray Ind Inc 難燃性液晶ポリエステル樹脂組成物
JP2002342097A (ja) * 2001-05-17 2002-11-29 Matsushita Electric Ind Co Ltd タスク割当可能時間決定装置及びタスク割当可能時間決定方法
AU2003248904A1 (en) * 2002-03-01 2003-09-16 Koninklijke Philips Electronics N.V. Timebox driven scheduling of software components in hard real-time systems

Also Published As

Publication number Publication date
JP2005284351A (ja) 2005-10-13
US7797703B2 (en) 2010-09-14
CN100357894C (zh) 2007-12-26
US20050229177A1 (en) 2005-10-13
US20070197706A1 (en) 2007-08-23
CN1673965A (zh) 2005-09-28
US7789670B2 (en) 2010-09-07

Similar Documents

Publication Publication Date Title
JP4016010B2 (ja) リアルタイムスケジューリング可能性判定方法およびリアルタイムシステム
JP4074296B2 (ja) スケジューリング可能性判定方法、リアルタイムシステム及びプログラム
Gardner et al. Analyzing stochastic fixed-priority real-time systems
EP2568346A1 (en) Robust system control method with short execution deadlines
US9645850B2 (en) Task time allocation method allowing deterministic error recovery in real time
KR101770191B1 (ko) 자원 할당 방법 및 그 장치
WO2018097058A1 (ja) 解析ノード、リソース管理方法およびプログラム記録媒体
JP6239400B2 (ja) 制御装置
Piao et al. Predictability of earliest deadline zero laxity algorithm for multiprocessor real-time systems
Hong et al. Local-deadline assignment for distributed real-time systems
Leng et al. Co-scheduling aperiodic real-time tasks with end-to-end firm and soft deadlines in two-stage systems
Law et al. Justifying the service provided to low criticality tasks in a mixed criticality system
Ren et al. Workload-aware harmonic partitioned scheduling for fixed-priority probabilistic real-time tasks on multiprocessors
JP2019012456A (ja) タスク割当て装置、および、タスク割当て方法
Andrei et al. An improved upper-bound algorithm for non-preemptive task scheduling
JP2020191074A (ja) 動作のスケジューリング
Alsheikhy et al. An efficient dynamic scheduling algorithm for periodic tasks in real-time systems using dynamic average estimation
US20140189709A1 (en) Method of distributing processor loading between real-time processor threads
Yu et al. The emergency scheduling engineering in single resource center
US20210365871A1 (en) Information processing apparatus and job scheduling method
JP5349876B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP6289197B2 (ja) プラント制御装置エンジニアリングツール
Polyakov et al. Improving the load of supercomputers based on job migration using container virtualization
Yin et al. An algorithm for scheduling aperiodic real-time tasks on a static schedule
Naik et al. IUF Scheduling Algorithm for Improving the Schedulability, Predictability and Sustainability of the Real Time System

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070914

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

Free format text: PAYMENT UNTIL: 20100921

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100921

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110921

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110921

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120921

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120921

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130921

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees