(57)【特許請求の範囲】
【請求項１】
周期的に起動される周期プロセスを含む複数のプロセスを時分割で実行するＣＰＵを備えたマルチプロセスシステムにおける、前記周期プロセスの実行に伴う前記ＣＰＵの負荷を制御する周期プロセス負荷制御システムにおいて、
前記周期プロセスは省略可能な処理部を含む複数の処理部と該周期プロセスの処理内容を制御する負荷制御部からなり、
前記省略可能な処理部は実行を省略するか否かを示す実行フラグを持ち、
前記周期プロセスが起動されると前記実行フラグが省略を示している前記省略可能な処理部以外の前記周期プロセス内のすべての前記処理部が実行された後に前記負荷制御部が実行され、
前記負荷制御部は前回動作した時刻と今回動作した時刻との間の時間間隔を計測して過去の複数の時間間隔の積算値からなる負荷評価値を求め、該負荷評価値に基づいて、前記省略可能な処理部の前記実行フラグの内容を設定することを特徴とする周期プロセス負荷制御システム。
【請求項２】
前記負荷制御部が、前記負荷評価値をしきい値と比較し該比較結果に応じて前記省略可能な処理部の前記実行フラグの内容を設定するものであって、
該周期プロセス負荷制御システムが、前記しきい値を変更自在に入力するしきい値入力部を備えたことを特徴とする請求項１記載の周期プロセス負荷制御システム。
【請求項３】
前記負荷制御部が、該負荷制御部が求めた過去の複数の時間間隔の積算値を格納するスロットを複数備え、これら複数のスロットに格納された積算値どうしの加算値を前記負荷評価値として用いるものであることを特徴とする請求項１記載の周期プロセス負荷制御システム。
【請求項４】
前記スロットの個数、及び／又は、１つのスロットに格納される積算値を構成する時間間隔の数を変更自在に入力するスロット条件入力部を備えたことを特徴とする請求項３記載の周期プロセス負荷制御システム。
【請求項５】
周期的に起動される周期プロセスを含む複数のプロセスを時分割で実行するＣＰＵを備えたマルチプロセスシステムにおける、前記周期プロセスの実行に伴う前記ＣＰＵの負荷を制御する周期プロセス負荷制御方法であって、
前記周期プロセスは省略可能な処理部を含む複数の処理部と該周期プロセスの処理内容を制御する負荷制御部とからなり、
前記省略可能な処理部は実行を省略するか否かを示す実行フラグを持ち、
当該周期プロセス負荷制御方法は、
前記周期プロセスを起動するステップと、
前記実行フラグが省略を示している前記省略可能な処理部以外の前記周期プロセス内のすべての前記処理部を実行するステップと、
前記負荷制御部を実行するステップと、
前記負荷制御部が前回動作した時刻と今回動作した時刻との間の時間間隔を計測するステップと、
過去の複数の前記時間間隔の積算値からなる負荷評価値を求めるステップと、
前記負荷評価値に基づいて、前記省略可能な処理部の前記実行フラグの内容を設定するステップとを含むことを特徴とする周期プロセス負荷制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
【０００２】
【発明の詳細な説明】
【０００３】
【発明の属する技術分野】
本発明は、周期的に起動される周期プロセスを含む複数のプロセスを時分割で実行するＣＰＵを備えたマルチプロセスシステムにおける、周期プロセスの実行に伴うＣＰＵの負荷を制御する周期プロセス負荷制御システムおよび周期プロセス負荷制御方法に関する。
【０００４】
【従来の技術】
近年のコンピュータシステムの高度化に伴い、複数のプロセスが時分割で実行されるタイムシェアリングシステムによるマルチプロセスシステムが普及してきている。
タイムシェアリングシステムによるマルチプロセスシステムの場合、基本的に各プロセスは独自に動作し、プロセスの実行切替えもそのタイムシェアリングシステムの構造にまかされており、一つのプロセスが処理に時間がかかるものになると、他のプロセスはそのまま遅れて処理される結果となる。また、タイマイベント等を用いてある特定の時刻に起動することが期待されたプロセスが存在しても、システムの都合（プロセスの優先順位、割り込み等）により指定時刻に起動されるとは限らない。
【０００５】
図１５は、タイマイベントを用いて周期的に繰り返し実行される周期プロセスのみが存在する場合の、その周期プロセスの実行時間を示す図、図１６は、その周期プロセスの他にも実行されるプロセスが存在する場合の各プロセスの実行時間を示す図である。図１６において白抜きの部分が注目している周期プロセスの実行時間、斜線の部分が他のプロセスの実行時間である。
【０００６】
例えば図１５に示すように、タイマイベントを用いて周期的に繰り返し実行される周期プロセスのみが存在する場合は、そのタイマイベントにしたがった起動タイミングどおりに起動される。
ところが、複数のプロセスが存在する場合、図１６に示すように、周期プロセスの処理の間に別のプロセスに割り込まれたり、優先度の高いプロセスのために起動タイミングが守られず遅れて起動されたり、あるいは他のプロセスの実行が集中したために一周期分の処理が一周期間隔の間に終了せず次の周期に跨ってしまい、その周期における周期プロセスの実行が欠落したりするという問題がある。このようなことから処理が遅延する傾向にある。
【０００７】
【発明が解決しようとする課題】
このように、タイムシェアリングシステムの場合、例えば映像や音声など高度のリアルタイム性が要求されるプロセスであっても他のリアルタイム性が要求されるプロセスの負荷の影響を受け、要求される時間通りに処理が間に合わず、リアルタイム性が損なわれてしまうことがある。
【０００８】
本発明は、上記事情に鑑み、他のプロセスの実行によりＣＰＵの負荷が増えた場合であっても、周期的に起動される周期プロセスのリアルタイム性の損失を緩和する周期プロセス負荷制御システムおよび周期プロセス負荷制御方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成する本発明の周期プロセス負荷制御システムは、周期的に起動される周期プロセスを含む複数のプロセスを時分割で実行するＣＰＵを備えたマルチプロセスシステムにおける、周期プロセスの実行に伴うＣＰＵの負荷を制御する周期プロセス負荷制御システムにおいて、
上記周期プロセスは省略可能な処理部を含む複数の処理部とその周期プロセスの処理内容を制御する負荷制御部からなり、
上記省略可能な処理部は実行を省略するか否かを示す実行フラグを持ち、
上記周期プロセスが起動されると実行フラグが省略を示している省略可能な処理部以外の周期プロセス内のすべての処理部が実行された後に負荷制御部が実行され、
上記負荷制御部は前回動作した時刻と今回動作した時刻との間の時間間隔を計測して過去の複数の時間間隔の積算値からなる負荷評価値を求め、その負荷評価値に基づいて、省略可能な処理部の実行フラグの内容を設定することを特徴とする。
【００１０】
ここで、上記本発明の周期プロセス負荷制御システムにおいて、上記負荷制御部が、負荷評価値をしきい値と比較しその比較結果に応じて省略可能な処理部の実行フラグの内容を設定するものであって、
この周期プロセス負荷制御システムが、上記しきい値を変更自在に入力するしきい値入力部を備えたものであることが好ましい。
【００１１】
また、上記本発明の周期プロセス負荷制御システムにおいて、上記負荷制御部が、その負荷制御部が求めた過去の複数の時間間隔の積算値を格納するスロットを複数備え、これら複数のスロットに格納された積算値どうしの加算値を負荷評価値として用いるものであることが好ましい。
その場合に、上記スロットの個数、及び／又は、１つのスロットに格納される積算値を構成する時間間隔の数を変更自在に入力するスロット条件入力部を備えることがさらに好ましい。
【００１２】
また、上記目的を達成する本発明の周期プロセス負荷制御方法は、周期的に起動される周期プロセスを含む複数のプロセスを時分割で実行するＣＰＵを備えたマルチプロセスシステムにおける、周期プロセスの実行に伴うＣＰＵの負荷を制御する周期プロセス負荷制御方法であって、
上記周期プロセスは省略可能な処理部を含む複数の処理部とその周期プロセスの処理内容を制御する負荷制御部とからなり、
上記省略可能な処理部は実行を省略するか否かを示す実行フラグを持ち、
この周期プロセス負荷制御方法は、
上記周期プロセスを起動するステップと、
上記実行フラグが省略を示している省略可能な処理部以外の周期プロセス内のすべての処理部を実行するステップと、
上記負荷制御部を実行するステップと、
上記負荷制御部が前回動作した時刻と今回動作した時刻との間の時間間隔を計測するステップと、
過去の複数の時間間隔の積算値からなる負荷評価値を求めるステップと、
上記負荷評価値に基づいて、省略可能な処理部の実行フラグの内容を設定するステップとを含むことを特徴とする。
【００１３】
本発明では、周期プロセスを構成する負荷制御部により上記の時間間隔が計測され、その時間間隔の積算値からなる負荷評価値が求められ、その負荷評価値に基づいてその周期プロセス自身の負荷が調整されるものであり、したがってその周期プロセスのリアルタイム性の損失が緩和される。
また、本発明において、上記しきい値入力部を備えると、しきい値を変更することにより、ソフトリアルタイムプロセス部の処理の実行の省略や、ソフトリアルタイムプロセス部を構成する複数の処理の中の負荷の小さい処理を選択することや、ソフトリアルタイムプロセス部の処理の実行の頻度を下げることに伴うデメリットと、リアルタイム性の確保とのバランス点を調整することができる。
【００１４】
さらに、本発明において、上記スロット条件入力部を備えると、全体としての負荷の変動に伴う、ソフトリアルタイムプロセス部の処理の実行やその省略の変更ソフトリアルタイムプロセス部を構成する複数の処理の中から選択される処理の変更、あるいはソフトリアルタイムプロセス部の処理の実行の頻度の変更の応答性、すなわち、負荷の短時間的な変動に応答するか、あるいは短時間的な負荷の変動には応答せず中長期的な負荷に応答するかを変更することができ、そのシステムないしそのシステムのユーザに適した応答性を得ることができる。
【００１５】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
図１は、本発明の周期プロセス負荷制御システムの一実施形態を包含するコンピュータシステムの外観図である。
図１に示すコンピュータシステム１００は、ＣＰＵやＭＯ（光磁気ディスク）ドライブ装置等が内蔵された本体部１０１、本体部１０１からの指示により、表示画面１０２ａ上に画像を表示するＣＲＴディスプレイ１０２、このコンピュータシステム１００に種々の情報を入力するためのキーボード１０３、ＣＲＴディスプレイ１０２の表示画面１０２ａ上の任意の位置を指定するマウス１０４、以下において説明する周期プロセス等を格納しておく記憶部１０５が備えられている。
【００１６】
周期プロセスを含むプロセス（プログラム）の開発は、この図１に示すコンピュータシステムでも行なうことができ、また、他の同種のコンピュータシステムを用いて開発されたものを可搬型記憶媒体であるＭＯ（光磁気ディスク）１１０に格納し、そのＭＯ１１０をこの図１に示すコンピュータシステム１００に装填して、このコンピュータシステム１００に入力することもできる。またそれと同様に、この図１に示すコンピュータシステム１００を用いて開発したプロセスを、ＭＯ１１０を介して他のコンピュータシステムに移すこともできる。
【００１７】
図２は、図１に示すコンピュータシステム内に実現された本発明の周期プロセス負荷制御システムの一実施形態を示す図である。
起動イベント発生部１０は、周期プロセス２０を起動するためのイベントを周期的に発生するものであり、周期プロセス２０はそのイベントが発生するたびに実行される。また時計部３０は現在時刻を管理しており、周期プロセス２０からの要求に応じて現在時刻を周期プロセス２０に渡す。
【００１８】
周期プロセス２０は、３つの処理Ａ、処理Ｂ、処理Ｃと、負荷制御部Ｄとからなる。
これらの処理のうち処理Ａは、例えば現在時刻に同期した内部状態を保つ必要のある処理であって、起動イベント発生部１０がイベントを発生するたびに確実に実行されないと内部の時間が狂ってしまうような処理であり、すなわち、その周期プロセス２０の内部状態を所定の状態に維持するためにイベント発生のたびに必ず実行する必要のある処理である。
【００１９】
一方、処理Ｂおよび処理Ｃは、イベント発生のたびに実行されるのが望ましいが、イベント発生のたびに必ずしも実行されなくても、その後実行されることによりイベント発生のたびに必ず実行された場合と同一の状態を回復することができる処理である。ここでは、処理Ｂと処理Ｃを比べたとき、処理Ｂの方が比較的イベント発生のたびに実行されるのが好ましい処理であるとする。
【００２０】
処理Ｂ、処理Ｃは、それぞれ、以下に説明する負荷制御部Ｄによりセットあるいはリセットされる各実行フラグＢ＿１，Ｃ＿１を持っている。処理Ｂの実行にあたっては、先ず実行フラグＢ＿１が参照され、その実行フラグＢ＿１がセットされているときは処理Ｂが実行され、その実行フラグＢ＿１がリセットされていたときは処理Ｂの実行は省略される。処理Ｃについても同様である。
【００２１】
負荷制御部Ｄは、前回の時刻を保存しておく時刻保存部Ｄ＿１、前回の時刻から今回の時刻までの経過時間、ないし過去の複数の経過時間の積算値を保存しておく複数のスロットＤ＿２ａ，Ｄ＿２ｂ，Ｄ＿２ｃを備え、後述するようにして負荷状態を判断する。
また、この負荷制御部Ｄは判断結果処理部Ｄ＿３を内蔵しており、この判断結果処理部Ｄ＿３では、負荷状態の判断結果に応じて、処理Ｂ，処理Ｃの実行フラグＢ＿１，Ｃ＿１のセット、リセットを行なう。
【００２２】
尚、この図２に示す周期プロセス負荷制御システムを構成する周期プロセス２０が記憶された状態の記憶部１０５（図１参照）が本発明の周期プロセス記憶媒体の一実施形態に相当する。この図２に示す周期プロセス２０がＭＯ１１０にダウンロードされたときは、その周期プロセス２０を格納した状態にあるＭＯ１１０も、本発明の周期プロセス記憶媒体の一例に相当する。
【００２３】
図３は、各負荷状態における周期プロセスの一回あたりの処理量をあらわした模式図である。
起動イベント発生部１０によりイベントが発生したときにおいて、低負荷の場合は、図３（１）に示すように、処理Ａ，処理Ｂ，処理Ｃ，および負荷制御部Ｄの処理がこの順に実行される。高負荷の場合は、図３（２）に示すように、処理Ａ，処理Ｂを実行した後、処理Ｃは省略されて負荷制御部Ｄの処理が実行される。さらに高負荷の場合は、処理Ａを実行した後処理Ｂ，処理Ｃ双方が省略されて負荷制御部Ｄの処理が実行される。このようにして、高負荷の場合の周期プロセス２０のリアルタイム性の低下が緩和される。
【００２４】
図４は、負荷制御部の処理の流れを示すフローチャートである。
負荷制御部２０の処理の実行が開始すると、先ず時計部３０からの時刻の取得が行なわれる（ステップ４＿１）。尚、時計部３０から取得する時刻は現在時刻である必要はなく、プロセスの実行が最初に起動された時刻からの経過時間であってもよく、要するに前回の時刻との差に相当する経過時間を求めることのできる時刻であればよい。
【００２５】
次いで、今回始めてこの周期プロセス２０の処理が実行されたか否かの判定が行なわれ（ステップ４＿２）、この周期プロセス２０の処理が始めて行なわれたときは時計部３０から取得した時刻を時刻保存部Ｄ＿１に保存し、かつ通常負荷であると判定し（ステップ４＿３）、判定結果処理部Ｄ＿３の処理の実行に移る（４＿１２）。判定結果処理部Ｄ＿３の処理については後述する。尚、この周期プロセス２０が初回に動作する前は、初期状態として、処理Ｂ，Ｃの実行フラグＢ＿１，Ｃ＿１がセットされた状態にあり、したがって初回の動作時には処理Ｂ，Ｃが実行され、その後に、この図４に示す負荷制御部Ｄの処理に移る。
【００２６】
ステップ４＿２の判定において周期プロセス２０の処理が今回始めてではないと判定されるとステップ４＿４に進み、時計部３０から今回取得した時刻と時刻保存部Ｄ＿１に格納されている前回の時刻との差を求め、前回の実行時から今回の実行時までの経過時間ＤＴを得（ステップ４＿４）、時計部３０から今回取得した時刻を時刻保存部Ｄ＿１に格納し（ステップ４＿５）、ステップ４＿４で求めた経過時間ＤＴを複数スロットＤ＿２ａ，Ｄ＿２ｂ，…，Ｄ＿２ｃのうちの１つに保存する（ステップ４＿６）。その保存の際、そのスロットに既に経過時間が保存されているときはそのスロットに既に保存されている経過時間に今回求めた経過時間を加算してそのスロットに保存する。
【００２７】
図５は、スロットの経過時間の保存方法を示す模式図である。
ここには、ＳＬＯＴ１〜ＳＬＯＴ１０の１０個のスロットが用意されており、各スロットには、５回の経過時間の積算値が格納される。すなわち、図５（１）に示すようなＳＬＯＴ１〜ＳＬＯＴ１０の全てのスロットが空の状態から出発し、先ずＳＬＯＴ１に順次積算しながら５回分の経過時間が順次積算されて格納され、ＳＬＯＴ１に５回分の経過時間の積算値が格納された後は、同様にして、ＳＬＯＴ２に順次積算しながら格納される。
【００２８】
図５（２）は、５＋２＝７回分の経過時間が格納された状態、図５（３）は５×９＋３＝４８回分の経過時間が格納された状態、図５（４）は５×１０＝５０回分の経過時間が格納され丁度満杯になった状態をあらわしている。図５（４）に示すように満杯になると一番先に経過時間が格納されたスロット（ここではＳＬＯＴ１）がクリアされ、図５（５）に示すように、そのクリアされたスロットに最新の経過時間が格納される。以下このような処理が繰り返される。ただし、以下に説明するようにして「通常」負荷以外の、「高負荷」と判定された場合および「低負荷」と判定された場合は、その判定の時点でＳＬＯＴ１〜ＳＬＯＴ１０のスロットが全てクリアされて図５（１）の状態に戻り、再度、その後の最初の経過時間から順に格納される。
【００２９】
ここでは、各スロットには複数（ここでは５つ）の経過時間の積算値が格納されるが、スロットの数を増やし各スロットに経過時間を１つずつ格納してもよい。ただし、その場合、スロットの数が増え大きなメモリ容量を必要とすることになる。
尚、上記のスロットの数（図５に示す例では１０個）や１つのスロットに積算して格納する経過時間の数（図５に示す例では５つ）を固定しておく代わりに、図１に示すキーボード１０３の操作等によりユーザが自由に設定できるように構成しておくことが好ましい。これらの設定を変更することにより、同一の負荷状態であっても、高負荷であると判定され、あるいは低負荷であると判定される時間間隔が調整される。
【００３０】
図４に戻って負荷制御部の処理の流れについての説明を続行する。
ステップ４＿７では、複数のスロットに格納された経過時間の積算値どうしが加算されて負荷評価値が求められ、その負荷評価値が高負荷であるか否かを定めるしきい値よりも大きいか否かが判定される。
負荷評価値がその判定値よりも大きいときはステップ４＿８に進み、高負荷であると判定し、かつ全てのスロットをクリアして、ステップ４＿１２の判定結果処理部Ｄ＿３の処理の実行に移る。
【００３１】
ステップ４＿７における高負荷であるか否かの判定は、経過時間が一回求められるたび、すなわち周期プロセスが一回動作するたびに行なわれる。
ステップ４＿７において高負荷ではないと判定されると、ステップ４＿９に進み、このステップ４＿９では、負荷評価値が低負荷であるか否かを定めるしきい値よりも小さいか否かが判定される。
【００３２】
この低負荷であるか否かの判定は、全てのスロットが満杯となった状態、すなわち図５に示す例では、図５（４）の状態において行なわれ、かつ、その後全てのスロットの同時クリアが行なわれないまま経過時間が５回求められるごとに行なわれる。
ステップ４＿９において負荷評価値が低負荷であるか否かの判定値よりも小さいと判定されたときはステップ４＿１０に進み、低負荷であると判定し、かつ全てのスロットをクリアして、ステップ４＿１２の判定結果処理部Ｄ＿３の処理に移る。
【００３３】
ステップ４＿７における高負荷があるか否かの判定を行なう際のしきい値としては、設定周期（起動イベント発生部１０によるイベントの発生間隔）をＴ、複数のスロットによる経過時間ＤＴの最大保存数（図５に示す例では５×１０スロット＝５０）をＤＴMAX としたとき、例えば設定周期の２０％の遅延をリアルタイム性を損う限界とみなした場合、
Ｔ×ＤＴMAX ×１．２          ……（１）
が目安となり、ステップ４＿９における低負荷であるか否かを判定に用いるしきい値は、
Ｔ×ＤＴMAX                   ……（２）
が目安となる。
【００３４】
尚、例えば（１）式、（２）式を目安とした高負荷、低負荷のしきい値を固定的に定めておいてもよいが、ユーザによるキーボード１０３の操作等により変更可能に構成しておくことが好ましい。これらのしきい値を変更可能としておくことにより、処理Ｂ、処理Ｃが実行されることによるメリットと、処理Ｂ、処理Ｃの実行によりリアルタイム性が損なわれることによるデメリットとのバランスをユーザが選択することができる。
【００３５】
判定結果処理部Ｄ＿３では、ステップ４＿８において高負荷であると判定されて判定結果処理部Ｄ＿３の処理に移ったときは、処理Ｂの実行フラグＢ＿１と処理Ｃの実行フラグＣ＿１を見てそれらの実行フラグＢ＿１，Ｃ＿１の双方がセットされていたとき（すなわち処理Ｂと処理Ｃの双方が実行される状態にあるとき）は、処理Ｃの実行フラグＣ＿１がリセットされ、これにより処理Ｃの実行は、次回以降、その実行フラグＣ＿１が再びセットされるまでの間、省略される。また、判定結果処理部Ｄ＿３は、高負荷であると判定された場合において処理Ｂの実行フラグＢ＿１と処理Ｃの実行フラグＣ＿１を見て処理Ｂの実行フラグＢ＿１はセットされており、処理Ｃの実行フラグがリセットされていたときは、処理Ｂの実行フラグＢ＿１をリセットする。これは、それよりも以前に処理Ｃの実行フラグＣ＿１がリセットされており、その後処理Ｃの実行が省略されたにも拘らずなお高負荷であると判定された場合に処理Ｂの実行も省略し、これにより負荷をさらに軽減しリアルタイム性を確保するためである。高負荷であると判定されて判定結果処理部Ｄ＿３の処理に移った場合において処理Ｂの実行フラグＢ＿１と処理Ｃの実行フラグＣ＿１の双方が既にリセットされていたときは、処理Ａの実行は省略することができないため、特に何も行なわれない。あるいは、例えば図１に示すＣＲＴディスプレイ１０２の表示画面１０２ａに極めて高負荷である旨の警告を表示してもよい。
【００３６】
一方、ステップ４＿１０において低負荷であると判定されてステップ４＿１２の判定結果処理部Ｄ＿３の処理に移ったときは、上記の高負荷の場合とは逆のフラグ操作が行なわれる。すなわち、低負荷であると判定された場合において処理Ｂの実行フラグＢ＿１と処理Ｃの実行フラグＣ＿１との双方がリセットされていたときは処理Ｂの実行フラグＢ＿１がセットされ、低負荷であると判定された場合において処理Ｂの実行フラグＢ＿１がセットされており、かつ処理Ｃの実行フラグＣ＿１がリセットされていたときは、処理Ｃの実行フラグがセットされる。これは、処理Ａと処理Ｂが実行され処理Ｃの実行が省略されている場合においてそれでも低負荷であった場合に処理Ｃも実行させるようにするためである。低負荷であると判定された場合において処理Ｂの実行フラグＢ＿１と処理Ｃの実行フラグＣ＿１の双方がセットされていたときは何も行なわない。
【００３７】
ステップ４＿３、あるいはステップ４＿１１において通常負荷であると判定されてステップ４＿１２の判定結果処理部Ｄ＿３の処理に移ったときは判定結果処理部４＿１２では何の処理も行なわれない。すなわちその時の処理Ｂ、処理Ｃの実行状態あるいは実行の省略の状態が継続される。
尚、判定結果処理部４＿１２において処理Ｂの実行フラグＢ＿１をセット、リセットするには、それぞれ関数コールで
Ｂ＿ａｃｔｉｖｅ＿ｓｅｔ（１）
Ｂ＿ａｃｔｉｖｅ＿ｓｅｔ（０）
のように行ない、実行フラグＢ＿１をセット（‘１’を格納）し、あるいはリセット（‘０’を格納）する。処理Ｃの実行フラグＣ＿１をセット、リセットする場合も、同様に、
Ｃ＿ａｃｔｉｖｅ＿ｓｅｔ（１）
Ｃ＿ａｃｔｉｖｅ＿ｓｅｔ（０）
のように行なわれる。
【００３８】
図６は、図２に示す周期プロセス２０の他に実行されるプロセスが存在しない場合の周期プロセスの実行状態を示した図である。
この場合、処理Ｂ，Ｃを含めた周期プロセス全体が起動タイミング（起動イベント発生部１０によるイベント発生のタイミング）に同期して実行される。この場合、経過時間ＤＴは一定であり、起動タイミングの周期と同一である。
【００３９】
図７は、図２に示す周期プロセス２０の他にも実行されるプロセスが存在する場合の、それらのプロセスの実行状態を示した図である。
この図７に示すように他のプロセスが実行されると周期プロセスの実行途中に他のプロセスが割り込んでくることになり、経過時間ＤＴが大きくなる。
図８は、処理Ｃの実行が省略された状態のプロセスの実行状態を示した図、図９は、処理Ｂと処理Ｃの双方の実行が省略された状態のプロセスの実行状態を示した図である。
【００４０】
図７に示すように経過時間ＤＴが大きくなり高負荷であると判定されると、図８に示すように処理Ｃの実行が省略されて、各起動タイミング毎に処理Ａ，処理Ｂおよび負荷制御部Ｄの処理が実行され、さらに他のプロセスが実行される。
この図８に示す状態においてもなお経過時間ＤＴが大きくなり再度高負荷であると判定されると、今度は図９に示すように、処理Ｃとともに処理Ｂも省略されて、各起動タイミング毎に処理Ａと負荷制御部Ｄの処理が実行され、さらに他のプロセスが実行される状態となる。
【００４１】
図９に示す状態において経過時間ＤＴが小さくなり低負荷であると判定されると、図８に示す、処理Ｂが実行される状態に戻り、図８に示す状態において経過時間ＤＴが小さくなり低負荷であると判定されると、図７に示す、処理Ｃが実行される状態に戻る。
図１０は、負荷評価値の推移を示す模式図である。
【００４２】
ここでは簡単のためスロットは４個とし、各スロットに各１つの経過時間ＤＴを格納するものとする。
処理Ａ，Ｂ，Ｃの全てが実行されている状態において各スロットへ各経過時間が順次格納され、それら４つのスロットに格納された４つの経過時間の加算値からなる負荷評価値が求められる。この負荷評価値が時刻Ｔ１において高負荷判定のしきい値を越えるとその時刻Ｔ１において処理Ｃが実行から外される。その後も負荷評価値がモニタされ時刻Ｔ２において再度高負荷判定のしきい値を越えるとその時刻Ｔ２において今度は処理Ｂが実行から外される。時刻Ｔ３では、全てのスロットに経過時間が格納れた状態において低負荷判定のしきい値を越えなかったため処理Ｂの実行が再開され、時刻Ｔ４では、処理Ｂが実行されており、かつ全てのスロットに経過時間が格納された状態において低負荷判定のしきい値を越えなかったため、処理Ｃの実行が再開される。
【００４３】
以上のようにして経過時間ＤＴの遅れに応じて負荷調整が行なわれ、周期プロセスのリアルタイム性が確保される。
図１１は、図１に示すコンピュータシステム内に実現された本発明の周期プロセス負荷制御システムの、より具体的な実施形態を示す図である。
図１１に示すように、本実施形態の周期プロセス負荷制御システムはある時間間隔ごとにハードウェア割り込みを発生するタイマ割り込み発生部４０と、その割り込み信号を受け取るＣＰＵ５０と、ＣＰＵ５０が割り込み信号を受けたことで起動されるイベント処理部６０と、イベント処理部６０からタイマイベントを受け取ることで起動する周期プロセス７０と、リアルタイムクロック８０と、メモリ領域ＶＲＡＭ９０と、ＶＲＡＭ９０の内容を表示するＣＲＴディスプレイ１０２と、周期プロセス７０とは独立なＴＳＳプロセスＡ，Ｂとによって構成される。
【００４４】
ここで周期プロセス７０は、物体移動計算モジュール７１と、物体描画イメージ作成モジュール７２と、物体描画イメージ転送モジュール７３と、負荷制御部７４と、周期プロセス７０内に確保されるイメージバッファ７５とによって構成される。各モジュールの機能について後述する。また、負荷制御部７４内には負荷判断部７４Ａと判断結果処理部７４Ｂが含まれ、負荷判断部７４Ａには前回の時刻を記憶しておく時刻記憶部７４１、および１０個のスロット７４２＿１〜７４２＿１０が含まれ、物体描画イメージ転送モジュール７３には実行フラグ７３１が含まれる。
【００４５】
尚、イベント処理部６０、周期プロセス７０、ＴＳＳプロセスＡ，Ｂはソフトウェア的要素であり、ＣＰＵ５０が扱うメモリ上に存在する。
本発明との対比では、タイマ割り込み発生部４０と、イベント処理部６０と、タイマ割り込みによってイベント処理部６０を実行するＣＰＵ５０との組合せが本発明にいう起動イベント発生部に相当し、周期プロセス７０が本発明にいう周期プロセスに相当し、物体描画イメージ転送モジュール７３が本発明にいうソフトリアルタイムプロセス部に相当し、さらに負荷制御部７４が本発明にいう負荷制御部に相当する。
【００４６】
タイマ割り込み発生部４０は、定期的に割り込み信号を発生するハードウェア割り込み発生部である。ＣＰＵ５０は、タイマ割り込み発生部４０から割り込み信号を受信すると、イベント処理部６０に対し、タイマ割り込みが発生したことを通知する。イベント処理部６０はＣＰＵ５０からタイマ割り込みが発生したことの通知を受け、タイマイベント待ちになっているプロセスのイベント発行タイミングになっていれば、タイマイベント待ちになっているプロセス（ここでは周期プロセス７０）にタイマイベントを発行し、そのプロセスを起動する。
【００４７】
周期プロセス７０は、イベント処理部６０からタイマイベントを受け取ることで実行が開始される。周期プロセス７０内では、物体移動計算モジュール７１、物体描画イメージ作成モジュール７２、物体描画イメージ転送モジュール７３、負荷制御部７４がこの順に実行される。これらが一周期分の処理である。物体移動計算モジュール７１は物体の移動における座標計算等を主に行なう。物体描画イメージ作成モジュール７２は物体移動計算モジュール７１の計算結果を受けて、イメージバッファ７５に、描画イメージを書き込む。物体描画イメージ転送モジュール７３はイメージバッファ７５内に作成された描画イメージをＶＲＡＭ９０に転送する。描画イメージがＶＲＡＭ９０に転送されると、ＣＲＴディスプレイ１０２の表示画面１０２ａに、その描画イメージが画像として表示される。
【００４８】
物体描画イメージ転送モジュール７３は、イメージバッファ７５に作成された描画イメージの転送に当り、ハードウェアのバスを長時間占有するものであり、一周期分の実行時間の中でも占める割合が大きい。ただし、このモジュールの実行を省いても周期プロセス７０の内部状態に影響がないことから、実行フラグ７３１を用意して、実行するかしないかを選択できるようにしている。実行フラグ７３１がオンであれば、物体描画イメージ転送モジュール７３１は実行され、実行フラグ７３１がオフであれば物体描画イメージ転送モジュール７３は実行されない。この実行フラグ７３１は、初期状態ではオンになっている。
【００４９】
負荷制御部７４では、まず負荷判断部７４Ａの処理が実行され、リアルタイムクロック８０から現在時刻を取得し、時刻保持部４７１が保持していた前回の時刻との差分を算出する。算出した経過時間はスロットに保存される。ここではスロット一つにつき一つの時間間隔が保持される。よって、本実施形態では、スロットが１０個有るため過去１０回分の時間間隔が保持されることになる。判断結果処理部７４Ｂでは、負荷判断の結果高負荷であると判断されたときは、物体描画イメージ転送モジュール７３の実行フラグ７３１をオフにし、低負荷であると判断されたときは、その実行フラグ７３１をオンにする。その後、一周期分のプロセスの実行が終了し、次のタイマイベントが届くまで待ちの状態になる。
【００５０】
ここで、タイマイベントの発行間隔を１００ｍｓｅｃに設定する。このとき、１０個のスロット７４２＿１，…，７４２＿１０にそれぞれ１００（ｍｓｅｃ）が格納されるとそれらの加算値（負荷平均値）は１０００（ｍｓｅｃ）となる。これに対し、低負荷の基準値を１０１０（ｍｓｅｃ）とし、高負荷の基準値も１０１０（ｍｓｅｃ）とする。すなわちその負荷評価値が１０１０を越えるか否かに応じて高負荷であるか低負荷であるかを判定する。ここでは、周期プロセス７０のほかにＴＳＳプロセスＡ、Ｂが実行されている環境において、周期プロセス７０は、ボールを、等速度でＣＲＴディスプレイ１０２の表示画面１０２ａの左から右に移動させるよう動画を表示させるものとする。ここでは、周期が乱れないときは１０秒でその移動が終了するものとする。
【００５１】
図１２は実行周期に乱れがないときの、ＣＲＴディスプレイ１０２の表示画面１０２ａ上に表示された画像の時間的推移を示した模式図、図１３は、実行周期に乱れが生じたにも拘らず仮に負荷制御部７４を動作させなかった場合、すなわち従来例に相当する表示画像の時間的推移を示した模式図、図１４は、実行周期に乱れが生じ、負荷制御部７４を動作させた場合、すなわち本実施形態の場合の表示画像の時間的推移を示した模式図である。図１４において、白抜きの部分は物体描画イメージ転送モジュール７３の実行も含めて周期プロセス７０が実行された時間帯であり、斜線分は負荷制御により物体描画イメージ転送モジュール７３の実行が省略されて周期プロセス７０が実行された時間帯である。
【００５２】
ＴＳＳプロセスＡ，Ｂの負荷が周期を乱さない程度のものであれば、図１２に示すように１０秒間で移動表示が完了する。負荷制御部７４が動作しない場合、ＴＳＳプロセスＡ，Ｂの負荷が周期を乱すほどのものであれば、図１３のように表示が１０秒よりも遅れて終了する。負荷制御部７４が動作すれば、図１４のように、途中で移動がストップしたように表示される場合が生じるものの、図１３の場合より遅れの幅は縮小される。
【００５３】
尚、上記実施形態では、オン、オフの二値のみからなる実行フラグを有し、その実行フラグのオン、オフに応じてある特定のモジュール（ソフトリアルタイムプロセス部）を実行させ、あるいは、実行を省略したが、オン、オフの二値ではなく多値からなる実行レベルを設定するようにし、実行レベルに応じて負荷の異なる処理を実行するようにしてもよい。負荷の程度の異なる処理とは、例えば上記の実施形態における物体描画イメージ転送モジュール７３においてイメージバッファ７５の描画イメージ全体をＶＲＡＭ９０に転送するか、１画素おきの粗いイメージを転送し画像の分解能を犠牲にして負荷を低減させるかといった処理が挙げられる。あるいは描画イメージを転送するときはその描画イメージ全体を転送することとし、ただし一周ごとに必ず転送するか一周期おきに転送するか２周期おきに転送するかといった転送の頻度を実行レベルに応じて変更するようにしてもよい。転送の頻度を変更するようにした場合は、多数の周期に跨がって表示が動かないという見苦しさが緩和できる。
【００５４】
【発明の効果】
以上説明したように、本発明によれば、タイムシェアリングシステムによるマルチプロセスシステムにおいて周期プロセスの負荷状態を検出し制御することで、時間依存性の高い、例えば映像等を処理するプロセスのリアルタイム性の損失を緩和することができる。特に数時間、数千時間、といったコンピュータ内部で長時間動作し続けるマルチメディアプロセスにおいてその効果が大きい。
【図面の簡単な説明】
【図１】本発明の周期プロセス負荷制御システムの一実施形態を包含するコンピュータシステムの外観図である。
【図２】図１に示すコンピュータシステム内に実現された本発明の周期プロセス負荷制御システムの一実施形態を示す図である。
【図３】各負荷状態における周期プロセスの一回あたりの処理量をあらわした模式図である。
【図４】負荷制御部の処理の流れを示すフローチャートである。
【図５】スロットの経過時間の保存方法を示す模式図である。
【図６】周期プロセスの他に実行されるプロセスが存在しない場合の周期プロセス実行状態を示した図である。
【図７】周期プロセスの他にも実行されるプロセスが存在する場合の、それらのプロセスの実行状態を示した図である。
【図８】処理Ｃの実行が省略された状態のプロセスの実行状態を示した図である。
【図９】処理Ｂと処理Ｃの双方の実行が省略された状態のプロセスの実行状態を示した図である。
【図１０】負荷評価値の推移を示す模式図である。
【図１１】図１に示すコンピュータシステム内に実現された本発明の周期プロセス負荷制御システムのより具体的な実施形態を示す図である。
【図１２】実行周期に乱れがないときの、ＣＲＴディスプレイの表示画面上に表示された画像の時間的推移を示した模式図である。
【図１３】従来例に相当する表示画像の時間的推移を示した模式図である。
【図１４】本実施形態の場合の表示画像の時間的推移を示した模式図である。
【図１５】タイマイベントを用いて周期的に繰り返し実行される周期プロセスのみが存在する場合の、その周期プロセスの実行時間を示す図である。
【図１６】周期プロセスの他にも実行されるプロセスが存在する場合の各プロセスの実行時間を示す図である。
【符号の説明】
１０    起動イベント発生部
２０    周期プロセス
３０    時計部
４０    タイマ割り込み発生部
５０    ＣＰＵ
６０    イベント処理部
７０    周期プロセス
７１    物体移動計算モジュール
７２    物体描画イメージ作成モジュール
７３    物体描画イメージ転送モジュール
７３１  実行フラグ
７４    負荷制御部
７４Ａ  負荷判断部
７４１  時刻記憶部
７４２＿１，…，７４２＿１０  スロット
７４Ｂ  判断結果処理部
８０    リアルタイムクロック
９０    ＶＲＡＭ
１００  コンピュータシステム
１０１  本体部
１０２  ＣＲＴディスプレイ
１０２ａ  表示画面
１０３  キーボード
１０４  マウス
１０５  記憶部
１１０  ＭＯ
【図１】
0003898789.tif 000002
【図２】
0003898789.tif 000003
【図３】
0003898789.tif 000004
【図４】
0003898789.tif 000005
【図５】
0003898789.tif 000006
【図６】
0003898789.tif 000007
【図７】
0003898789.tif 000008
【図８】
0003898789.tif 000009
【図９】
0003898789.tif 000010
【図１０】
0003898789.tif 000011
【図１１】
0003898789.tif 000012
【図１２】
0003898789.tif 000013
【図１３】
0003898789.tif 000014
【図１４】
0003898789.tif 000015
【図１５】
0003898789.tif 000016
【図１６】
0003898789.tif 000017