(57)【要約】【課題】  ＳＭＴを用いるＣＰＵ上でリアルタイムプロセスのデッドラインを保証しながら、可能な限り、同時に他のプロセスを処理し、システムのスループットを向上させるシステムおよび方法およびその機能を提供するプログラムが記録された記録媒体を提供する。【解決手段】  本発明のシステムは、計算資源であるプロセッサ４１による計算処理により得られるプロセスの計算量を計測する計測部６１と、プロセッサ４１による計算処理に割り込みを発生させ、計測部６１から割り込み発生時刻までに得られた計算量を取得し、取得した計算量をプロセッサ４１に与えて余裕時間を計算させ、余裕時間があるか否かを判定する余裕時間判定部６２と、余裕時間判定部６２が、余裕時間がないと判定した場合、プロセッサ４１に他のプロセスの計算処理を中断させる処理中断部６３とを含む。【選択図】  図２
2005157955.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを同時に処理する計算資源において、所定の計算量を要求するプロセスに対し、前記デッドライン時刻までに前記所定の計算量が得られるように保証する計算資源予約システムであって、
前記計算資源による計算処理により得られる前記プロセスの計算量を計測する計測部と、
前記計算資源による計算処理に割り込みを発生させ、前記計測部から割り込み発生時刻までに得られた前記計算量を取得し、取得した前記計算量を前記計算資源に与えて余裕時間を計算させ、前記余裕時間があるか否かを判定する余裕時間判定部と、
前記余裕時間判定部が、前記余裕時間がないと判定した場合、前記計算資源による他のプロセスの計算処理を中断させる処理中断部と
を含む、システム。
【請求項２】
前記余裕時間判定部は、所定時間ごとに割り込みを発生させる、請求項１に記載のシステム。
【請求項３】
前記余裕時間判定部は、前記余裕時間と前記割り込み発生時刻とを用いて、前記計算資源に次の割り込み発生時刻を計算させ、前記次の割り込み発生時刻に割り込みを発生させるように該次の割り込み発生時刻を設定する割り込み発生時刻設定部を含む、請求項１に記載のシステム。
【請求項４】
前記余裕時間判定部は、前記次の割り込み発生時刻より前に、前記所定の計算量が得られているか否かを判定する計算量判定部を含む、請求項３に記載のシステム。
【請求項５】
前記システムは、前記処理中断部により中断された前記他のプロセスのコンテキストを記憶する記憶部を含む、請求項１〜４のいずれか１項に記載のシステム。
【請求項６】
前記余裕時間ｔｓは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式
【数１】
2005157955.tif 000009
により算出される、請求項１〜５のいずれか１項に記載のシステム。
【請求項７】
前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式
【数２】
2005157955.tif 000010
により算出される、請求項３に記載のシステム。
【請求項８】
前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０と、前記計算資源を前記他のプロセスに割り当てた場合でも得られる計算性能の最低保証値α（αは、０以上１未満の数である。）とを用い、下記式
【数３】
2005157955.tif 000011
により算出される、請求項３に記載のシステム。
【請求項９】
複数のプロセスを同時に処理する計算資源において、所定の計算量を要求するプロセスに対し、前記デッドライン時刻までに前記所定の計算量が得られるように保証する計算資源予約方法であって、
前記計算資源による計算処理により得られる前記プロセスの計算量を計測するステップと、
前記計算資源による計算処理に割り込みを発生させ、割り込み発生時刻までに得られた前記計算量を取得するステップと、
取得した前記計算量を前記計算資源に与えて余裕時間を計算させ、前記余裕時間があるか否かを判定するステップと、
前記余裕時間があるか否かを判定するステップで、前記余裕時間がないと判定された場合、前記計算資源による他のプロセスの計算処理を中断させるステップと
を含む、方法。
【請求項１０】
前記計算量を取得するステップでは、所定時間ごとに割り込みを発生させる、請求項９に記載の方法。
【請求項１１】
前記方法は、前記余裕時間と前記割り込み発生時刻とを用いて、前記計算資源に次の割り込み発生時刻を計算させ、前記次の割り込み発生時刻に割り込みを発生させるように該次の割り込み発生時刻を設定するステップを含む、請求項９に記載の方法。
【請求項１２】
前記方法は、前記次の割り込み発生時刻より前に、前記所定の計算量が得られているか否かを判定するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記方法は、中断された前記他のプロセスのコンテキストを記憶するステップを含む、請求項９〜１２に記載の方法。
【請求項１４】
前記余裕時間ｔｓは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式
【数４】
2005157955.tif 000012
により算出される、請求項９〜１３のいずれか１項に記載の方法。
【請求項１５】
前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式
【数５】
2005157955.tif 000013
により算出される、請求項１１に記載の方法。
【請求項１６】
前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０と、前記計算資源を前記他のプロセスに割り当てた場合でも得られる計算性能の最低保証値α（αは、０以上１未満の数である。）とを用い、下記式
【数６】
2005157955.tif 000014
により算出される、請求項１１に記載の方法。
【請求項１７】
複数のプロセスを同時に処理する計算資源において、所定の計算量を要求するプロセスに対し、前記デッドライン時刻までに前記所定の計算量が得られるように保証するためのプログラムが記録された記録媒体であって、前記プログラムは、
前記計算資源による計算処理により得られる前記プロセスの計算量を計測するステップと、
前記計算処理に割り込みを発生し、割り込み発生時刻までに得られた前記計算量を取得するステップと、
取得した前記計算量を用いて余裕時間を計算し、前記余裕時間があるか否かを判定するステップと、
前記余裕時間があるか否かを判定するステップで、前記余裕時間がないと判定された場合、他のプロセスの計算処理を中断するステップと
を前記計算資源に実行させる、記録媒体。
【請求項１８】
前記計算量を取得するステップでは、所定時間ごとに割り込みを発生する、請求項１７に記載の方法。
【請求項１９】
前記余裕時間と前記割り込み発生時刻とを用いて次の割り込み発生時刻を計算し、前記次の割り込み発生時刻に割り込みを発生するように該次の割り込み発生時刻を設定するステップをさらに含む、請求項１７に記載の記録媒体。
【請求項２０】
前記次の割り込み発生時刻より前に、前記所定の計算量が得られているか否かを判定するステップをさらに含む、請求項１９に記載の記録媒体。
【請求項２１】
中断された前記他のプロセスのコンテキストを記憶するステップをさらに含む、請求項１７〜２０に記載の記録媒体。
【請求項２２】
前記余裕時間ｔｓは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式
【数７】
2005157955.tif 000015
により算出される、請求項１７〜２１のいずれか１項に記載の記録媒体。
【請求項２３】
前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式
【数８】
2005157955.tif 000016
により算出される、請求項１９に記載の記録媒体。
【請求項２４】
前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０と、前記計算資源を前記他のプロセスに割り当てた場合でも得られる計算性能の最低保証値α（αは、０以上１未満の数である。）とを用い、下記式
【数９】
2005157955.tif 000017
により算出される、請求項１９に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同時マルチスレッド（ＳＭＴ）技術が適用される計算資源において、リアルタイムプロセスへの計算資源の割り当てを保証しつつ、同時にできる限り多くの計算資源を非リアルタイムプロセスに与えて、システム全体のスループットを向上させることを可能にするシステムおよび方法および記録媒体に関する。
【背景技術】
【０００２】
ファイル入出力や画面描画処理をする際、その処理が終わるまでに他のイベント、例えば、電源電圧降下やセンサー異常などが発生した場合、そのイベントに対するイベント・ハンドラ（外部割り込みにより起動される割り込み処理ルーチン）が、例えば、数十μｓｅｃ〜数十ｍｓｅｃといった、ある決められた時間以内に確実に起動されることを保証する機能を持つリアルタイム・オペレーティング・システム（リアルタイムＯＳ）が、リアルタイムにイベントの処理を行なわなければならないような用途に用いられている。このリアルタイムＯＳは、リアルタイム処理能力に重点を置いて作られたプリエンプティブなマルチタスクＯＳであり、計測機器や制御装置、ロボット制御など、あるイベントが発生するとすぐに、イベント・ハンドラを起動して処理を行なわなければならないような用途に適している。
【０００３】
リアルタイムＯＳに対する要件の１つに、システム中のプロセスの単位時間あたりの処理量を保証することを挙げることができる。従来、リアルタイムＯＳを備えるリアルタイムシステムは、組み込み用途への適用が多く、システム内のプロセスが予め固定されていることが多い。このため、プロセス群の優先関係を注意深く設定し、かつ、プロセス間で協調動作させることで、必要な処理性能を確保している。しかしながら、最近では、組み込みシステムとはいえ、実質的には開放型システムになりつつあり、システム上で動作するアプリケーションの種類や挙動を予め把握することは困難になってきている。そこで、資源予約型システムが提案されている。この資源予約型システムは、デッドラインを有するリアルタイムプロセスに対して、要求される処理量を達成するために必要な計算時間の最大値で、計算資源、すなわち中央処理装置（ＣＰＵ）の実行時間を予約することにより、確実にデッドラインまでに要求を満たすことができる。
【０００４】
しかしながら、１つのＣＰＵ上で、複数のスレッドが同時に動作することを可能にするＳＭＴ技術では、一定時間内に実行することができるＣＰＵの計算量は、同じＣＰＵ上で同時に動作している他のスレッド（以下、裏プロセッサスレッドとする。）の影響を受けて大きく変動してしまうことになる。この結果、ＳＭＴ技術が適用される環境下では、計算資源の予約によって必要な計算時間が予約されているにもかかわらず、予定した計算量を得ることができないといった問題が生じていた。なお、上記スレッドは、オペレーティング・システム（ＯＳ）がＣＰＵの実行時間を割り当てる基本単位であり、ＯＳの基本機能を実現するカーネルがプログラムを管理するための単位であるプロセス内に１つ以上生成される。プロセスの実行において、少なくとも１つのスレッドが起動される。
【０００５】
上述した問題を解決する方法としては、予定した計算量を得るため、リアルタイムプロセスを実行している間、ＳＭＴ機能を無効にし、１つのＣＰＵ上で同時に動作する裏プロセッサスレッドを実行させないようにする方法を挙げることができる。しかしながら、この方法は、プロセスの同時実行によるシステムのスループットを向上させるというＳＭＴの特性を無駄にしてしまうといった問題があった。
【０００６】
また、上述した問題を解決するシステムとして、例えば、ＴｉｍｅＳｙｓ社のＴｉｍｅＳｙｓ  Ｌｉｎｕｘ／ＲＴを挙げることができる。このリアルタイムＯＳは、マルチプロセッサ・システムに対応した計算時間の予約機能を提供する。しかしながら、この予約機能は、ＳＭＴを考慮したものではなく、ＳＭＴを用いるシステム上ではＣＰＵの計算速度が時間的に予測不可能な挙動で変動し、ＣＰＵの実行時間を予約することにより、計算性能を保証することができなくなるといった問題があった。
【０００７】
本発明者らは、上記予約機能がＳＭＴを用いる環境において予定した計算量を確保できないことを確認し、この解決方法として、予約されたプロセスが実行される間、同時に実行される裏プロセッサスレッドをアイドルさせるか、または、予約されたプロセスと常に同じ組み合わせとなる他のプロセスを実行するように提案している（非特許文献１参照）。
【０００８】
また、他の解決方法として、リアルタイムタスクを、同時に組み合わせで実行しても影響の少ないプロセスを選んでスケジューリングする、ＳＭＴを用いる環境におけるソフトリアルタイムプロセスのスケジューリングが提案されている（非特許文献２参照）。
【０００９】
しかしながら、上述した予約されたプロセスが実行される間、同時に実行される裏プロセッサスレッドをアイドルさせるか、または、常に同じ組み合わせで実行する方法では、アイドルさせるため、ＳＭＴ機能を充分に活用していないこととなり、また、常に同じ組み合わせで実行しなければならないため、システム内に混在する他のプロセスが未知であるようなシステムには適用することができないといった問題があった。さらに、ＳＭＴを用いたシステム上でソフトリアルタイムプロセスのスケジューリングでは、５％以下のデッドラインミスを許容しており、デッドラインまでに確実に計算量を保証することはできないといった問題があった。
【００１０】
【非特許文献１】井上  拓、「ＳＭＴ環境下におけるＣＰＵ資源予約」、ソフトウェア科学会、第６回プログラミング及び応用のシステムに関するワークショップ、２００３年３月１２日〜１４日
【非特許文献２】Jain. R., Hughes. C. J., Adve. S. V.,”Soft Real-Time Scheduling on Simultaneous Multithreaded Processors”, 23rd IEEE Real-Time Systems Symposium, Dec. 3-5,2002
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、上記問題に鑑みなされたものであり、ＳＭＴを用いるＣＰＵ上でリアルタイムプロセスのデッドラインを保証しながら、可能な限り、同時に他のプロセスを処理し、システムのスループットを向上させるシステムおよび方法およびその機能を提供するプログラムが記録された記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、予約されたプロセスが計算資源にディスパッチされた時点で、デッドライン時刻までに余裕時間があるか否かを判定し、余裕時間がある場合には、他のプロセスをディスパッチし、適宜、余裕時間があるか否かを確認し、余裕時間がある場合には、他のプロセスを続行することができ、余裕時間がない場合には、他のプロセスをディスパッチすることにより動作する裏プロセッサスレッドをアイドルさせ、予約されたプロセスに計算資源を占有させることでデッドライン時刻までに所定の計算量を保証するものである。
【００１３】
すなわち、本発明によれば、複数のプロセスを同時に処理する計算資源において、所定の計算量を要求するプロセスに対し、前記デッドライン時刻までに前記所定の計算量が得られるように保証する計算資源予約システムであって、
前記計算資源による計算処理により得られる前記プロセスの計算量を計測する計測部と、
前記計算資源による計算処理に割り込みを発生させ、前記計測部から割り込み発生時刻までに得られた前記計算量を取得し、取得した前記計算量を前記計算資源に与えて余裕時間を計算させ、前記余裕時間があるか否かを判定する余裕時間判定部と、
前記余裕時間判定部が、前記余裕時間がないと判定した場合、前記計算資源による他のプロセスの計算処理を中断させる処理中断部と
を含む、システムが提供される。
【００１４】
本発明によれば、前記余裕時間判定部は、所定時間ごとに割り込みを発生させることができる。
【００１５】
本発明によれば、前記余裕時間判定部は、前記余裕時間と前記割り込み発生時刻とを用いて、前記計算資源に次の割り込み発生時刻を計算させ、前記次の割り込み発生時刻に割り込みを発生させるように該次の割り込み発生時刻を設定する割り込み発生時刻設定部を含む。
【００１６】
本発明によれば、前記余裕時間判定部は、前記次の割り込み発生時刻より前に、前記所定の計算量が得られているか否かを判定する計算量判定部をさらに含む。
【００１７】
本発明によれば、前記処理中断部により中断された前記他のプロセスのコンテキストを記憶する記憶部をさらに含む。
【００１８】
本発明によれば、前記余裕時間ｔｓは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式により算出することができる。
【００１９】
【数１】
2005157955.tif 000003
【００２０】
本発明によれば、前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０とを用い、下記式により算出することができる。
【００２１】
【数２】
2005157955.tif 000004
【００２２】
本発明によれば、前記次の割り込み発生時刻ｔｎは、前記デッドライン時刻ｔｄと、前記割り込み発生時刻ｔ０と、前記所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃｒと、前記割り込み発生時刻において計測された計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値ｃ０と、前記計算資源を前記他のプロセスに割り当てた場合でも得られる計算性能の最低保証値α（αは、０以上１未満の数である。）とを用い、下記式により算出することができる。
【００２３】
【数３】
2005157955.tif 000005
【００２４】
また、本発明によれば、複数のプロセスを同時に処理する計算資源において、所定の計算量を要求するプロセスに対し、前記デッドライン時刻までに前記所定の計算量が得られるように保証する計算資源予約方法であって、
前記計算資源による計算処理により得られる前記プロセスの計算量を計測するステップと、
前記計算資源による計算処理に割り込みを発生させ、割り込み発生時刻までに得られた前記計算量を取得するステップと、
取得した前記計算量を前記計算資源に与えて余裕時間を計算させ、前記余裕時間があるか否かを判定するステップと、
前記余裕時間があるか否かを判定するステップで、前記余裕時間がないと判定された場合、前記計算資源による他のプロセスの計算処理を中断させるステップと
を含む、方法が提供される。
【００２５】
本発明によれば、前記計算量を取得するステップでは、所定時間ごとに割り込みを発生させることができる。
【００２６】
本発明によれば、前記余裕時間と前記割り込み発生時刻とを用いて、前記計算資源に次の割り込み発生時刻を計算させ、前記次の割り込み発生時刻に割り込みを発生させるように該次の割り込み発生時刻を設定するステップをさらに含む方法が提供される。
【００２７】
本発明によれば、前記次の割り込み発生時刻より前に、前記所定の計算量が得られているか否かを判定するステップをさらに含む方法が提供される。
【００２８】
本発明によれば、中断された前記他のプロセスのコンテキストを記憶するステップをさらに含む方法が提供される。
【００２９】
さらに、本発明によれば、複数のプロセスを同時に処理する計算資源において、所定の計算量を要求するプロセスに対し、前記デッドライン時刻までに前記所定の計算量が得られるように保証するためのプログラムが記録された前記計算資源により可読な記録媒体であって、前記プログラムは、
前記計算資源による計算処理により得られる前記プロセスの計算量を計測するステップと、
前記計算処理に割り込みを発生し、割り込み発生時刻までに得られた前記計算量を取得するステップと、
取得した前記計算量を用いて余裕時間を計算し、前記余裕時間があるか否かを判定するステップと、
前記余裕時間があるか否かを判定するステップで、前記余裕時間がないと判定された場合、他のプロセスの計算処理を中断するステップと
を前記計算資源に実行させる、記録媒体が提供される。
【００３０】
本発明によれば、前記計算量を取得するステップでは、所定時間ごとに割り込みを発生することができる。
【００３１】
本発明によれば、前記余裕時間と前記割り込み発生時刻とを用いて次の割り込み発生時刻を算出し、前記次の割り込み発生時刻に割り込みを発生するように該次の割り込み発生時刻を設定するステップをさらに実行させることができる。
【００３２】
本発明によれば、前記次の割り込み発生時刻より前に、前記所定の計算量が得られているか否かを判定するステップをさらに実行させることができる。
【００３３】
本発明によれば、中断された前記他のプロセスのコンテキストを記憶するステップをさらに実行させることができる。
【発明の効果】
【００３４】
本発明のシステム、方法および記録媒体を提供することにより、同時マルチスレッド技術（ＳＭＴ）を用いてＣＰＵといった計算資源上で、その計算資源の予約によるリアルタイムプロセスのデッドラインを保証しつつ、かつスループットを向上させることが可能となる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明を図面に示した具体的な実施の形態に沿って説明するが、本発明は、後述する実施の形態に限定されるものではない。
【００３６】
図１は、本発明の計算資源予約システムを組み込んだシステム１０の実施例を示した図である。図１には、テレビアンテナ２０と、リモートコントローラ３０と、ビデオレコーダ４０と、表示装置５０とから構成されるシステム１０が示されている。図１に示すシステム１０では、ビデオレコーダ４０に本発明の計算資源予約システム６０が組み込まれている。また、ビデオレコーダ４０内には、本発明の計算資源予約システム６０のほか、計算資源であるプロセッサ４１と、各種資源の管理およびアプリケーションがそれら資源を利用できるようにするためのＯＳおよびアプリケーションが格納され、処理結果を記憶するための記憶装置４２と、リモートコントローラ３０からの信号を受信する受信部４３と、テレビアンテナ２０を介して画像データおよび音声データを受信するテレビチューナー４４とを備えている。ここで、資源とは、プロセッサ４１、記憶装置４２、受信部４３、テレビチューナー４４などをいう。
【００３７】
図１に示す実施の形態では、テレビチューナー４４により受信した画像データおよび音声データをプロセッサ４１で圧縮処理し、記憶装置に書き込む処理が行われている。これは、録画と呼ばれる処理である。また、録画中に、ユーザによりリモートコントローラ３０を使用して他の操作も行われている。この場合、プロセッサ４１は、録画のための圧縮処理と同時に、ユーザの操作に対する応答処理も行っている。プロセッサ４１は、ユーザの操作に対する応答処理として、例えば、チャンネル変更処理を行い、変更されたチャンネルの画像を表示装置５０に表示している。
【００３８】
上記圧縮処理およびチャンネル変更処理は、プロセスを１つの処理単位として実行される。任意の画像および音声の圧縮処理は、次の画像および音声データが受信されるまでに終了する必要があり、次の画像および音声データが受信されるまでに終了しない場合、そのデータは失われてしまう。この処理の場合、データを受信し、圧縮処理し、次のデータを受信するまでが１つのプロセスであり、次のデータを受信するまでに処理を終了しなければならないというデッドラインをもつプロセスである。したがって、このプロセスは、リアルタイムプロセスである。これに対し、チャンネル変更処理は、でき得る限り早く処理することが望ましいが、デッドラインをもたないため、時間を遅らせるなどして処理することができる。この処理の処理単位としてのプロセスは、非リアルタイムプロセスである。
【００３９】
本発明の計算資源予約システムは、上述したリアルタイムプロセスへの計算資源の割り当てを保証しつつ、同時に、できる限り多くの計算資源を上述した非リアルタイムプロセスに与えるようにスケジューリングするためのシステムである。すなわち、プロセスを割り当て、計算資源を予約するためのシステムである。具体的には、リアルタイムプロセスに対して得られた計算量を適宜確認し、その計算量から残りの計算量を得、また、デッドライン時刻までの残り時間を得、その残り時間と残りの計算量とから時間的余裕、すなわち余裕時間があるか否かを判定し、余裕時間がなくなった場合に非リアルタイムプロセス内のスレッドの実行を中断させ、計算資源をすべてリアルタイムプロセスに割り当て、デッドライン時刻までに所定の計算量が確実に得られるようにするシステムである。
【００４０】
図１を参照して説明すると、ユーザが録画を行うと、そのイベントに応答して、プロセッサ４１上で実行されているＯＳは、実行されるべき計算をプロセスという単位で作成して管理する。また、ＯＳは、このプロセスを計算処理させるためにプロセッサ４１を割り当てるディスパッチを行う。なお、プロセスは、デッドライン時刻およびそのデッドライン時刻までに得なければならない所定の計算量が予め決められている。また、所定の計算量に対する、裏プロセッサスレッドを実行しない場合、すなわち、プロセッサ４１をこのプロセスのみに割り当てた場合の計算時間も決められている。本発明の計算資源予約システム６０は、プロセスがディスパッチされた時点で、余裕時間があるか否かを判断し、余裕時間がある場合に、例えば、チャンネル変更処理といった他のプロセスをディスパッチすることができる。
【００４１】
また、本発明の計算資源予約システム６０は、適宜、割り込みを発生させ、プロセッサ４１による計算処理を中断させ、プロセッサ４１に余裕時間を計算させ、その計算結果により、余裕時間があるか否かを判定し、余裕時間がないと判定した場合、上記他のプロセスへの割り当てを開放し、プロセッサ４１を上記プロセスのみに割り当て、デッドライン時刻までに計算量が得られるように保証することができる。なお、デッドライン時刻までに得なければならない所定の計算量が得られた場合には、その時刻からデッドライン時刻までの間、他のプロセスにプロセッサ４１を割り当てることができる。
【００４２】
本発明の計算資源予約システムの１つの実施の形態を、図２を参照して説明する。図２に示す計算資源予約システム６０は、複数のプロセスを同時に処理する計算資源において、デッドライン時刻までに所定の計算量を要求するプロセス（以下、リアルタイムプロセスとする。）に対し、そのデッドライン時刻までに所定の計算量が得られるように保証するものであり、計測部６１、余裕時間判定部６２、処理中断部６３から構成されている。計測部６１は、計算資源であるプロセッサ４１による計算処理によって得られるリアルタイムプロセスの計算量を計測するものである。余裕時間判定部６２は、プロセッサ４１による計算処理に割り込みを発生させ、割り込みを発生させた時刻（割り込み発生時刻）において、計測部６１から計算量を取得し、取得した計算量をプロセッサ４１に与えて余裕時間を計算させ、その結果により、余裕時間があるか否かを判定するものである。なお、割り込みは、割り込み信号をプロセッサ４１に送り、プロセッサ４１の処理を中断させることにより行われる。また、割り込みは、一定時間間隔で発生させたり、任意の時刻に発生させたりことができる。処理中断部６３は、余裕時間判定部６２が、余裕時間がないと判定した場合、同時に実行されている他のプロセスの計算処理を中断させるものである。
【００４３】
デッドラインを有するリアルタイムプロセスは、ＯＳによってプロセッサ４１に割り当てられ、プロセッサ４１による処理が開始される。図２では、リアルタイムプロセスと非リアルタイムプロセスとが同時に処理されている。計測部６１は、プロセッサ４１がリアルタイムプロセスの処理を開始した時刻からリアルタイムプロセスの計算量を計測し、要求に応じて任意の時間における計算量を提供することができる。図２に示す実施の形態では、一定時間間隔ごとに発生する割り込みにおいて、その割り込み発生時刻までに得られた計算量を提供するように構成されている。本発明においては、例えば、プロセッサ４１により実行されるプログラム内でリアルタイムプロセスの処理と同時にその計算量を計測するようにプログラムを構成し、その実行により、計算量を計測することもでき、また、プロセッサ４１のパフォーマンスモニタを使用して計算量を計測することもできる。なお、上記プログラムを構成する場合、割り込みの発生に応答して、割り込み発生時刻までに得られた計算量を通知するように構成することができる。
【００４４】
図２に示す実施の形態では、余裕時間判定部６２は、一定時間間隔ごとに割り込みを発生させるように設定されている。割り込みは、計算処理中のプロセッサ４１に割り込み信号を与えることにより行われる。なお、割り込みが発生すると、プロセッサ４１は、計算処理を中断する。この割り込みの間、割り込み発生時刻までに得られた計算量を計測部６１から取得する。本発明では、割り込み発生に応答して、計測部６１が通知することにより、その時刻までに得られた計算量を取得するようにしてもよい。本発明においては、割り込みは、ＯＳに実装されるシステム・タイマや外部タイマを用いて発生させることができる。なお、システム・タイマを使用する場合、割り込みは、一定時間間隔ごとに発生し、外部タイマを使用する場合には、可変時間間隔ごとに発生させることができる。
【００４５】
また、余裕時間判定部６２は、割り込みの間、計測部６１から取得した計算量をプロセッサ４１に与え、プロセッサ４１に余裕時間を計算させ、この結果により、余裕時間があるか否かを判定する。なお、余裕時間ｔｓは、以下の式を用いて算出することができる。
【００４６】
【数４】
2005157955.tif 000006
【００４７】
上記ｔｄは、デッドライン時刻であり、ｔ０は、割り込み発生時刻であり、ｃｒは、所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値、すなわち、プロセッサ４１上で裏プロセッサスレッドを実行しない場合の所定の計算量を計算時間として表した値であり、ｃ０は、時刻ｔ０までに得られた計算量を、ｃｒと同様、裏プロセッサスレッドの影響がない場合の計算時間で表した値である。例えば、ｃ０は、予め決められた所定の計算量とその所定の計算量に対応する予め決められた計算時間とから計算量／計算時間の値を得、この値と計測した計算量とを用いて得ることができる。この計算時間の単位は、例えば、ｍｓ（ミリ秒）である。余裕時間は、上述したデッドライン時刻までの残りの時間から得なければならない残りの計算時間を引いた値である。余裕時間判定部６２は、算出された余裕時間が０であるか、０を超えるかを判定する。なお、余裕時間が０である場合、プロセッサ４１をリアルタイムプロセスのみに割り当てなければ、デッドライン時刻までに所定の計算量を取得できないことを意味し、余裕時間が０を超える場合、他のプロセス（以下、非リアルタイムプロセスとする。）にもまだ割り当て可能であることを意味する。
【００４８】
余裕時間判定部６２が、余裕時間がないと判定した場合、プロセッサ４１をリアルタイムプロセスのみに割り当てなければならないため、処理中断部６３は、プロセッサ４１上で処理されている非リアルタイムプロセスを中断させる。プロセッサ４１がさらに別のプロセスの処理も行っている場合には、その別のプロセスも中断させる。これにより、上述したように、プロセッサ４１をリアルタイムプロセスのみに割り当てることができ、デッドライン時刻までに得なければならない計算量を確実に取得することができる。実際にプロセッサ４１上では、スレッドが実行されているため、非リアルタイムプロセスの裏プロセッサスレッドをアイドルさせることにより中断させることができる。なお、中断された非リアルタイムプロセスは、その中断された時点における状態、すなわちコンテキストがキャッシュなどの図示しない記憶部に記憶される。コンテキストは、実行中のプログラムが処理内容を選択する際の判断の材料となる、プログラムの内部状態や置かれた状況、与えられた条件などを指し、例えば、複数の型の引数を取ることができるようになっている演算子や関数が、引数の型に合わせて返り値の型を選択する場合の、その演算子や関数を呼び出す際の引数の型である。本発明においては、デッドライン時刻までにリアルタイムプロセスが終了した場合、そのリアルタイムプロセスへのプロセッサの割り当てを開放することにより、プロセッサ４１が、図示しない記憶部からコンテキストを読み出し、非リアルタイムプロセスを中断された時点の状態から処理することができる。
【００４９】
また、余裕時間判定部６２が０を超えると判定した場合、再び、一定時間後に割り込みを発生させ、それまでに得られた計算量を取得し、それをプロセッサ４１に与えて余裕時間を計算させ、この結果、余裕時間が０であるか、０を超えるかを判定する。これを繰り返すことにより、リアルタイムプロセスのデッドラインを保証しながら、非リアルタイムプロセスにも計算資源を有効に割り当て、システムのスループットを向上させることができる。なお、余裕時間判定部６２による割り込みは１つのプロセスの処理時間に比較し、著しく小さいものである。また、上記計算量の取得、上記余裕時間の計算などは、この割り込み時間内に処理される。
【００５０】
余裕時間判定部６２が一定時間間隔ごとに割り込みを発生させる場合、プロセッサ４１によって計算される余裕時間が負の値になる可能性がある。余裕時間が負の値になる場合、リアルタイムプロセスのみにプロセッサ４１を割り当てたとしても、デッドライン時刻までに得なければならない計算量を取得することができないことを意味する。したがって、本発明では、割り込み発生間隔を短くしたり、余裕時間に閾値を設け、例えば、余裕時間が０．０１ｍｓを超えるか否かを判定させるようにして、リアルタイムプロセスのデッドラインを保証するようにすることができる。上記余裕時間の算出、余裕時間があるか否かの判断、他のプロセスの中断といった機能は、割り込み時にプロセッサ４１に送られる実行コードである割り込みハンドラに含め、このハンドラをプロセッサ４１に実行させることにより実現することもできる。
【００５１】
図３は、図２に示す計算資源予約システムを用いて計算資源の予約を行うプロセスを示したフローチャートである。まず、リアルタイムプロセスが計算資源であるプロセッサにディスパッチされることにより開始される（ステップ３００）。一定時間経過後に、割り込みを発生させ、割り込み発生時刻までに得られたリアルタイムプロセスの計算量を取得する（ステップ３１０）。取得した計算量をプロセッサに与え、余裕時間を計算させて、余裕時間があるか否かを判定する（ステップ３２０）。余裕時間があると判定された場合、ステップ３１０に戻り、次の一定時間経過後に、割り込みを発生させ、プロセスの開始時刻から次の割り込み発生時刻までに得られた計算量を取得する。ステップ３２０において、余裕時間がないと判定された場合、プロセッサ上で実行されている裏プロセッサスレッドの実行を中断させる（ステップ３３０）。これにより、リアルタイムプロセスのみにプロセッサを割り当て、デッドライン時刻までに得なければならない計算量を確実に取得することができる。また、リアルタイムプロセスが終了した場合、非リアルタイムプロセスの処理を再開することができる（ステップ３４０）。なお、デッドライン時刻に到達した後、リアルタイムプロセスがプロセッサにディスパッチされた場合、再び、ステップ３００〜３４０の処理を行うことができる。リアルタイムプロセスのディスパッチが行われない場合、非リアルタイムプロセスの終了によりプロセッサによる処理を終了する（ステップ３５０）。
【００５２】
本発明では、ディスパッチされた時点で、プロセッサに余裕時間を計算させて、余裕時間があるか否かを判定し、余裕時間がある場合に非リアルタイムプロセスをディスパッチするステップを含むことができる。この場合、ステップ３００とステップ３１０の間に、上記ディスパッチするステップを含めることができる。
【００５３】
図４は、本発明の計算資源予約システムの別の実施の形態を示した図である。図４に示すシステムは、割り込みを発生させる時刻を計算させ、その時刻に割り込みを発生させ、その時刻における計算量を取得することを可能にするシステムである。図４に示すシステムでは、余裕時間判定部６２が、余裕時間があると判定した場合に、余裕時間および割り込み発生時刻を用いて次の割り込み発生時刻をプロセッサに計算させ、算出された次の割り込み発生時刻に割り込みを発生させるように、次の割り込み発生時刻を設定する割り込み発生時刻設定部６２ａを含む構成とされている。
【００５４】
割り込み発生時刻設定部６２ａは、デッドライン時刻、デッドライン時刻までに得なければならない計算量、割り込み発生時刻、割り込み発生時刻までに得られた計算量および以下の式を用いて、プロセッサ４１に次の割り込み発生時刻ｔｎを計算させる。
【００５５】
【数５】
2005157955.tif 000007
【００５６】
上記ｔｄは、デッドライン時刻であり、ｔ０は、割り込み発生時刻であり、ｃｒは、所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値であり、ｃ０は、ｔ０までに得られた計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値である。なお、このｔｎは、ｔ０に、余裕時間を加えたものである。ｔ０からｔｎの間は、例え計算量が全く得られない場合でも、余裕時間が減少するだけで、この間は余裕時間を有しているため、この間において割り込みを発生させても無駄となる。割り込み発生時刻設定部６２ａは、上記式５を用いて計算量が全く得られない場合に余裕時間が０となる時刻、すなわちｔｎをプロセッサ４１に計算させ、得られた時刻に割り込みを発生させるように余裕時間判定部６２に設定し、その間、無駄な割り込みが発生しないようにする。なお、ｔ０からｔｎの間に計算量が全く得られない場合、時刻ｔｎに裏プロセッサスレッドをアイドルさせ、リアルタイムプロセスのみにプロセッサ４１を割り当てることにより、デッドライン時刻までに得るべき所定の計算量を取得することができる。この割り込み発生時刻設定部６２ａを用いることにより、割り込み回数を減少させることができ、より効率的に処理を行うことができる。この機能も、上述した割り込みハンドラに含め、このハンドラをプロセッサ４１に実行させることにより実現することができる。
【００５７】
図５は、図４に示す計算資源予約システムを用いて計算資源の予約を行うプロセスを示したフローチャートである。まず、リアルタイムプロセスが計算資源であるプロセッサにディスパッチされることにより開始される（ステップ５００）。ディスパッチされた時点で、プロセッサに余裕時間を計算させ、余裕時間があるか否かを判定する（ステップ５１０）。この場合の余裕時間は、割り込み発生時刻を０とし、計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値を０として上記式４により算出することができる。ステップ５１０で余裕時間があると判定された場合、割り込み発生時刻を計算させ、得られた時刻に割り込み発生時刻を設定する（ステップ５２０）。割り込み発生時刻において割り込みを発生させ、その割り込み発生時刻までに得られた計算量を取得する（ステップ５３０）。この取得された計算量に基づき、プロセッサに余裕時間を計算させ、余裕時間があるか否かを判定する（ステップ５４０）。
【００５８】
ステップ５４０で余裕時間があると判定された場合、次の割り込み発生時刻を計算させ、得られた時刻に次の割り込み発生時刻を設定する（ステップ５５０）。ステップ５３０に戻り、次の割り込みを発生させ、計算量を取得する。ステップ５１０で余裕時間がないと判定された場合、非リアルタイムプロセスのスレッドの実行を中断させ（ステップ５６０）、リアルタイムプロセスのみにプロセッサを割り当てる。また、ステップ５４０で余裕時間がないと判定された場合も、裏プロセッサスレッドの実行を中断させ（ステップ５６０）、リアルタイムプロセスのみにプロセッサを割り当てる。リアルタイムプロセスが終了した場合、非リアルタイムプロセスの処理を再開することができる（ステップ５７０）。デッドライン時刻に到達した後、リアルタイムプロセスがプロセッサにディスパッチされた場合、再び、ステップ５００〜５７０の処理を行うことができる。リアルタイムプロセスのディスパッチが行われない場合、非リアルタイムプロセスの終了によりプロセッサによる処理を終了する（ステップ５８０）。
【００５９】
図６は、本発明の計算資源予約システムのさらに別の実施の形態を示した図である。図６に示すシステムは、割り込み発生時刻を計算させ、その時刻に計算量を取得することを可能にするとともに、割り込み発生時刻より前に所定の計算量が得られたか否かを判定することを可能にするシステムである。図６に示すシステムでは、余裕時間判定部６２が、さらに計算量判定部６２ｂを含む構成とされており、この計算量判定部６２ｂにより、所定の計算量を割り込み時間より前に取得できたと判定した場合、それまでリアルタイムプロセスが占有していたプロセッサの割り当てを、非リアルタイムプロセスに割り当て、非リアルタイムプロセスの処理を促進させることができる。このような構成を採用することにより、システムのスループットをさらに向上させることができる。
【００６０】
割り込み発生時刻設定部６２ａは、余裕時間を確認するために、次の割り込み発生時刻を算出する。計測部６１は、リアルタイムプロセスの計算量を計測する。計測部６１がリアルタイムプロセスの終了を検知すると、計算量判定部６２ｂは、その検知に応答して、割り込み発生時刻より前に所定の計算量が得られたと判定し、余裕時間判定部６２に通知し、割り込みをキャンセルする。この場合、リアルタイムプロセスへの資源割り当てを開放し、非リアルタイムプロセスに資源を割り当て、プロセッサは非リアルタイムプロセスの裏プロセッサスレッドを実行することができる。割り込み発生時刻より前に所定の計算量が得られていないと判定した場合には、余裕時間判定部６２への通知はなく、余裕時間判定部６２は、割り込み発生時刻設定部６２ａにより設定された時刻に、割り込みを発生させる。この機能も、上述した割り込みハンドラに含め、このハンドラをプロセッサ４１に実行させることにより実現することができる。
【００６１】
図７は、図６に示す計算資源予約システムを用いて計算資源の予約を行うプロセスを示したフローチャートである。まず、リアルタイムプロセスが計算資源であるプロセッサにディスパッチされることにより開始される（ステップ７００）。ディスパッチされた時点で、余裕時間を算出し、余裕時間があるか否かを判定する（ステップ７１０）。余裕時間があると判定された場合、割り込み発生時刻を算出し、その割り込み発生時刻を設定する（ステップ７２０）。割り込み発生時刻に到達すると、割り込みが発生し、その割り込み発生時刻までに得られた計算量を取得する（ステップ７３０）。この取得された計算量に基づき、余裕時間を算出し、余裕時間があるか否かを判定する（ステップ７４０）。ステップ７４０で余裕時間があると判定された場合、次の割り込み発生時刻を算出する（ステップ７５０）。算出された次の割り込み発生時刻より前に、得るべき所定の計算量が得られたか否かを判定する（ステップ７６０）。得られていないと判定された場合、ステップ７３０に戻り、ステップ７５０で算出された割り込み発生時刻に基づき、次の割り込みを行う。
【００６２】
ステップ７１０およびステップ７４０で余裕時間がないと判定された場合、非リアルタイムプロセスのスレッドの実行を中断させ（ステップ７７０）、リアルタイムプロセスのみにプロセッサを割り当てる。また、ステップ７６０で、割り込み発生時刻より前に、所定の計算量が得られたと判定された場合、リアルタイムプロセスへの資源割り当てを開放し、非リアルタイムプロセスに割り当て、非リアルタイムプロセスの処理を再開する（ステップ７８０）。デッドライン時刻に到達した後、リアルタイムプロセスがプロセッサにディスパッチされた場合には、再び、ステップ７００〜７８０の処理を行うことができる。リアルタイムプロセスのディスパッチが行われない場合、非リアルタイムプロセスの終了によりプロセッサによる処理を終了する（ステップ７９０）。
【００６３】
本発明においては、リアルタイムプロセスへの計算資源の割り当ての最低保証値を使用して、割り込み回数をさらに減少させることができる。これは、非リアルタイムプロセスを計算資源に割り当てた場合でも、最低限ある保証された計算性能が得られることがわかっている場合に採用することができる。この場合、割り込み発生時刻設定部６２ａは、以下の式を用いて、次の割り込み発生時刻ｔｎを算出することができる。
【００６４】
【数６】
2005157955.tif 000008
【００６５】
上記ｔｄは、デッドライン時刻であり、ｔ０は、割り込み発生時刻であり、ｃｒは、所定の計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値であり、ｃ０は、時刻ｔ０において取得した計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値である。また、αは、最低保証値であり、非リアルタイムプロセスを処理する場合でも得られる計算性能の最低保証量を、非リアルタイムプロセスの処理を行わなかった場合に得られる計算性能との比で表した値であり、０以上１未満の範囲の値をとる。αが１に近い値を示す場合には、非リアルタイムプロセスの処理がほとんど行われておらず、リアルタイムプロセスの処理に対して非リアルタイムプロセスの影響をほとんど受けないことを意味する。それとは反対に、αが０である場合には、非リアルタイムプロセスにプロセッサのすべてを占有され、リアルタイムプロセスがまったく処理されないことを意味する。
【００６６】
本発明の計算資源予約システムを用いた計算資源の予約について詳細に説明する。図８〜図１０は、図４または図６に示すシステムを採用した場合に得られるタイミング図である。図８〜図１０では、リアルタイムプロセスへの割り当てをＣＰＵ０で示し、非リアルタイムプロセスへの割り当てをＣＰＵ１で示す。また、計算量として、裏プロセッサスレッドの影響がない場合の計算時間で表した値、すなわち計算時間を用いて説明する。図８は、計算資源であるプロセッサに、リアルタイムプロセスの処理をさせる場合に、割り込みを発生させるタイミングを示した第１実施例である。図８は、縦軸に計算量を裏プロセッサスレッドの影響がない場合の計算時間で表した値である計算時間（ｍｓ）を示し、横軸に時刻（ｍｓ）を示している。図８に示す実施の形態では、リアルタイムプロセスである予約プロセス（reserved process）が１０ｍｓ後のデッドラインまでに６ｍｓ分の計算時間を予約している。時刻０において、リアルタイムプロセスがプロセッサにディスパッチされ、このリアルタイムプロセスが処理されるのと同時に、非リアルタイムプロセスである他のプロセス（other process）もディスパッチされている。
【００６７】
まず、時刻０において、余裕時間が算出される。時刻０であり、計算時間も０であるから、上記式４により、余裕時間４ｍｓが算出される。余裕時間があるため、裏プロセッサスレッドはアイドルされず、時刻４ｍｓにおいて、割り込みが発生している。この割り込みは、上述したように、時刻４ｍｓにおける計算時間を取得するために行われる。図８に示す実施の形態では、割り込みにより、３．５ｍｓ分の計算時間が得られたことを示している。時刻４ｍｓにおいては、３．５ｍｓ分の計算時間が得られているため、残りの計算時間は２．５ｍｓであり、また、デッドライン時刻までに６ｍｓあるため、３．５ｍｓの余裕時間があることになる。この３．５ｍｓという余裕時間は、上記式４により算出することができ、また、上記式５により、次の割り込みを発生させる時刻を算出すると、時刻７．５ｍｓとなる。
【００６８】
図８に示す実施の形態では、時刻７ｍｓに予約した計算時間を得ることができており、したがって、時刻７．５ｍｓにおける割り込みはキャンセルされる。また、時刻７ｍｓまでに予約した計算時間を得ることができた場合、デッドライン時刻までの残りの３ｍｓ分の計算時間は、他のプロセスに割り当てることができる。
【００６９】
図９は、計算資源であるプロセッサに、リアルタイムプロセスの処理をさせる場合に、割り込みを発生させるタイミングを示した第２実施例である。図８と同様に、縦軸は計算時間（ｍｓ）を示し、横軸は時刻（ｍｓ）を示す。これも、図８に示す実施の形態と同様、予約プロセスが１０ｍｓ後のデッドラインまでに６ｍｓ分の時間を予約している。また、予約プロセスと他のプロセスとによってプロセッサが占有されている。図８に示す実施の形態と同様、予約プロセスがプロセッサにディスパッチされた時刻を０とし、時刻０において、余裕時間を算出する。上述したように、時刻０で計算時間も０であるから、上記式４より、余裕時間は４ｍｓと算出される。余裕時間があることから、次に、上記式５を用いて割り込み発生時刻が算出される。この場合、割り込み発生時刻は予約プロセスの開始時刻から４ｍｓ後と算出される。したがって、時刻４ｍｓに割り込みを発生させ、時刻４ｍｓにおける計算時間を取得する。
【００７０】
図９では、時刻４ｍｓにおいて、６ｍｓ分の計算時間に対し、２ｍｓ分を計算時間しか得られていないことを示している。この２ｍｓという計算時間を取得し、再び余裕時間が計算される。このとき、余裕時間は、デッドライン時刻までの時間が６ｍｓに対し、計算時間は残り４ｍｓ分であるから、上記式４により、２ｍｓとなる。余裕時間が０を超えているため、次の割り込み発生時刻が算出される。この場合、上記式５から、時刻６ｍｓと算出される。時刻６ｍｓにおいて、割り込みを発生させ、計算時間を取得する。図９に示す実施の形態では、時刻４ｍｓから時刻６ｍｓまでの間、予約プロセスが全く処理されておらず、時刻６ｍｓにおいて、２ｍｓ分の計算時間しか得られていない。再び余裕時間が算出され、残りの計算時間が４ｍｓに対し、デッドライン時刻までの時間が４ｍｓであることから、余裕時間として０が算出される。デッドライン時刻までに、予約した計算時間を得るためには、プロセッサに予約プロセスのみを割り当てる必要があり、余裕時間が０と算出された場合、同時に処理されている他のプロセスをアイドルさせる。これにより、予約プロセスの予約した計算時間をデッドライン時刻までに得ることができる。
【００７１】
図１０は、計算資源であるプロセッサに、リアルタイムプロセスの処理をさせる場合に、割り込みを発生させるタイミングを示した第３実施例である。図８および図９に示す実施の形態と同様、予約プロセスが１０ｍｓ後のデッドラインまでに６ｍｓ分の計算時間を予約している。図１０に示す実施の形態では、同時に処理される他のプロセスの影響を受けても、最低保証値αの計算性能が得られることが保証されている。
【００７２】
例えば、最低保証値αが０．５であれば、常に、５０％分のプロセッサ性能をリアルタイムプロセスに割り当てることができることを保証する。上述したようにして、４ｍｓの余裕時間が算出されるが、次の割り込みは、上記式６により、時刻８ｍｓと算出される。これは、最低保証値を使用してプロセッサが処理した場合に余裕時間が０となる時間が８ｍｓであることを意味する。図１０に示す実施の形態では、時刻７ｍｓに終了しているため、デッドライン時刻までの残り３ｍｓは、非リアルタイムプロセスである他のプロセスに割り当てることができる。なお、この場合、割り込みはキャンセルされるため、デッドライン時刻までに割り込みは発生しない。
【００７３】
ここで、本発明のシステムを採用した場合の処理結果と、従来のシステム、すなわち単にリアルタイムプロセスと非リアルタイムプロセスとを同時に処理する場合の処理結果とを比較したものを図１１に示す。具体的には、本発明の上記機能をＬｉｎｕｘ上で実装し、インテル社のHyper Threading技術を採用したマシンを使用した場合と、上記機能を実装しない場合とで行った。非リアルタイムプロセスには、カーネルのコンパイルを、リアルタイムプロセスには、４３．３ｍｓ周期で、３０ｍｓかかる計算を採用した。なお、実線は、本発明のシステムを採用し、本発明の方法で処理した結果を示し、破線は、上述した従来の方法で処理した結果を示す。また、図１１には、縦軸の計算時間４３．３ｍｓにデッドラインも示されている。
【００７４】
図１１に示す結果では、実装しない場合には、１つのプロセッサ上で、リアルタイムプロセスと非リアルタイムプロセスとを同時に処理するため、デッドライン時刻となる４３．３ｍｓ後には３０ｍｓ分の処理を行うことができず、その３０ｍｓ分の処理を行うのに、破線で示されるように、４５ｍｓ〜５５ｍｓかかっている。これに対し、本発明のシステムを実装したマシンでは、常にデッドラインより下側にあり、デッドライン時刻である４３．３ｍｓ後には常に３０ｍｓ分の処理が終了していることを示しており、デッドライン時刻までに所定の計算時間、すなわち所定の計算量が得られることを見出すことができた。
【００７５】
また、本発明のシステムを採用した場合と、従来の、リアルタイムプロセスの処理中、非リアルタイムプロセスの処理を停止し、リアルタイムプロセスの終了後、非リアルタイムプロセスを処理する場合とを比較すると、非リアルタイムプロセスの処理量が、最大１．９倍のスループットで、最低でも従来の場合と同程度のスループットを得ることができることを見出すことができた。
【００７６】
これまで本発明を図面に示した実施の形態に基づいて説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、各部の機能を、上述したように、プログラムを実行させることにより達成することができ、この場合、プログラムが記録された記録媒体として提供することも可能である。記録媒体として提供する場合、そのプログラムは、計算資源であるプロセッサにより実行させることができ、そのプログラムは、上述したように、割り込みハンドラとして提供することができる。したがって、この場合、プロセッサが、そのプログラムを実行して割り込みを発生し、余裕時間を判定し、非リアルタイムプロセスを中断することになる。
【産業上の利用可能性】
【００７７】
本発明のシステムは、リアルタイムプロセスのデッドラインを保証しながら、可能な限り、同時に他のプロセスを処理し、システムのスループットを向上させるシステムであるため、デッドラインを厳守する必要がある飛行機の管制システムや医療システムなどに適用可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の計算資源予約システムが組み込まれたシステムの実施例を示した図。
【図２】本発明の計算資源予約システムの１つの実施の形態を示した図。
【図３】図２に示す計算資源予約システムを用いて計算資源の予約を行うプロセスを示したフローチャート。
【図４】本発明の計算資源予約システムの別の実施の形態を示した図。
【図５】図４に示す計算資源予約システムを用いて計算資源の予約を行うプロセスを示したフローチャート。
【図６】本発明の計算資源予約システムのさらに別の実施の形態を示した図。
【図７】図６に示す計算資源予約システムを用いて計算資源の予約を行うプロセスを示した図。
【図８】計算資源であるプロセッサに、リアルタイムプロセスの処理をさせる場合に、割り込みを発生させるタイミングを示した図。
【図９】計算資源であるプロセッサに、リアルタイムプロセスの処理をさせる場合に、割り込みを発生させるタイミングを示した図。
【図１０】計算資源であるプロセッサに、リアルタイムプロセスの処理をさせる場合に、割り込みを発生させるタイミングを示した図。
【図１１】本発明のシステムを採用した場合の効果と、従来のシステム、すなわち単にリアルタイムプロセスと非リアルタイムプロセスとを同時に処理する場合の効果とを比較した図。
【符号の説明】
【００７９】
１０…システム
２０…テレビアンテナ
３０…リモートコントローラ
４０…ビデオレコーダ
４１…プロセッサ
４２…記憶装置
４３…受信部
４４…テレビチューナー
５０…表示装置
６０…計算資源予約システム
６１…計測部
６２…余裕時間判定部
６２ａ…割り込み発生時刻設定部
６２ｂ…計算量判定部
６３…処理中断部
【図１】
2005157955.tif 000018
【図２】
2005157955.tif 000019
【図３】
2005157955.tif 000020
【図４】
2005157955.tif 000021
【図５】
2005157955.tif 000022
【図６】
2005157955.tif 000023
【図７】
2005157955.tif 000024
【図８】
2005157955.tif 000025
【図９】
2005157955.tif 000026
【図１０】
2005157955.tif 000027
【図１１】
2005157955.tif 000028