(57)【要約】【課題】  他のアプリの動作の影響を受けることなく時間的制約のあるアプリの処理を保障することができるＣＰＵ資源管理システムを実現する。【解決手段】ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、各アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期またはイベント応答要求時間の短いアプリから順にＣＰＵ資源を割り当てることを特徴とする。【選択図】                      図１
2009146379.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、
各アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期またはイベント応答要求時間の短いアプリから順にＣＰＵ資源を割り当てることを特徴とするＣＰＵ資源管理システム。
【請求項２】
前記各アプリの前記動作周期または前記イベント応答要求時間の１／２を前記ＣＰＵ資源の割当周期とし、ＣＰＵ制御周期ごとに、前記割当周期の短いアプリから順に前記各アプリの実行時間を管理するための最小時間単位で前記ＣＰＵ資源を割り当てることを特徴とする
請求項１記載のＣＰＵ資源管理システム。
【請求項３】
前記ＣＰＵ資源管理システムとして動作するためのプログラムや前記各アプリの前記割当周期、使用率を登録するアプリ要求資源テーブル、前記各アプリのＣＰＵ資源の割当期間を登録する割当テーブルのうち少なくとも前記要求資源テーブルと前記割当テーブルを格納する記憶部と、
前記アプリ要求資源テーブルに基づいて前記各アプリの前記割当周期の最小公倍数を算出して前記ＣＰＵ制御周期とし、前記ＣＰＵ制御周期ごとに前記割当周期の短いアプリから順に特定の時間単位でＣＰＵ資源を割り当てて、各アプリの識別子とそのＣＰＵ資源の割当期間を前記割当テーブルに登録し記憶する演算制御部とで構成されることを特徴とする
請求項２記載のＣＰＵ資源管理システム。
【請求項４】
前記演算制御部は、
前記アプリ要求資源テーブルに基づいて、割当周期の短いアプリから順にＣＰＵを割り当てるアプリを選択し、このアプリの割当周期で前記ＣＰＵ制御周期を区切り、最初の割当周期中の先頭の前記特定の時間単位で分割された期間から順にＣＰＵ資源の割当対象期間とし、この割当対象期間が他のアプリに割り当てられていない場合はＣＰＵ資源を割り当てて前記割当テーブルに前記ＣＰＵ資源割当期間を登録・記憶することを特徴とする
請求項３記載のＣＰＵ資源管理システム。
【請求項５】
前記演算制御部は、
前記割当テーブルの前記ＣＰＵ資源割当期間に基づいて、各アプリを実行することを特徴とする
請求項３または請求項４に記載のＣＰＵ資源管理システム。
【請求項６】
前記演算制御部は、
時間的制約のあるアプリに最高優先度を設定するとともに時間的制約のないアプリに最高優先度未満の優先度を設定し、前記ＣＰＵ制御周期のｔｉｃｋ単位でＣＰＵ資源の割当状況を確認しＣＰＵ資源がどのアプリにも割り当たっていない場合または前記アプリに割り当たっているがアプリがＣＰＵの使用を放棄している場合は時間的制約のないアプリの中で最も高優先度のアプリを実行することを特徴とする
請求項３〜請求項５いずれかに記載のＣＰＵ資源管理システム。
【請求項７】
ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、
各アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期またはイベント応答要求時間に基づく所定の選択基準によって前記各アプリにＣＰＵ資源を割り当てることを特徴とするＣＰＵ資源管理システム。
【請求項８】
前記ＣＰＵ資源のうち、周期内の動作時間帯があらかじめ定められている複数の制御アプリの動作時間帯を除いた残りの時間帯のＣＰＵ資源を分割し、少なくとも動作周期内のいずれかの時間帯で完了すればよい処理を行う複数のアプリに割り当てることを特徴とする
請求項７記載のＣＰＵ資源管理システム。
【請求項９】
前記各制御アプリと前記各アプリの周期の最小公倍数をＣＰＵ制御周期とし、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記各アプリに割り当てることを特徴とする
請求項８記載のＣＰＵ資源管理システム。
【請求項１０】
前記ＣＰＵ資源管理システムとして動作するためのプログラム、前記各制御アプリの動作周期およびＣＰＵ使用率を登録する制御アプリ登録テーブル、前記各アプリの動作周期および動作時間帯を登録するアプリ登録テーブル、前記各アプリのＣＰＵ資源の割当期間を登録するアプリ割当テーブルのうち、少なくとも前記アプリ登録テーブル、前記制御アプリ登録テーブル、前記アプリ割当テーブルを格納する記憶部と、
前記アプリ登録テーブル、前記制御アプリ登録テーブルに登録された各動作周期およびＣＰＵ使用率、動作時間帯に基づき、前記各制御アプリおよび前記制御アプリの前記動作周期の最小公倍数を算出して前記ＣＰＵ制御周期とし、前記ＣＰＵ制御周期を特定の時間単位で分割し、前記ＣＰＵ制御周期から前記各アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記時間単位ごとに前記各アプリに割り当てて、前記各アプリの識別子とそのＣＰＵ資源の割当期間を前記アプリ割当テーブルに登録し記憶する演算制御部とで構成されることを特徴とする
請求項８または請求項９記載のＣＰＵ資源管理システム。
【請求項１１】
前記演算制御部は、
前記記憶部にあらかじめ記憶され前記各アプリに対してＣＰＵ資源の割当設定を行うための基準となるアプリ割当選択基準に基づき、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記時間単位ごとに前記各アプリに割り当てることを特徴とする
請求項１０記載のＣＰＵ資源管理システム。
【請求項１２】
前記記憶部は、
各アプリおよび各制御アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期の短いアプリから順にＣＰＵ資源を割り当てるアプリ割当選択基準を記憶することを特徴とする
請求項１０または請求項１１記載のＣＰＵ資源管理システム。
【請求項１３】
前記演算制御部は、
前記情報割当テーブルの前記ＣＰＵ資源割当期間に基づいて、各アプリを実行することを特徴とする
請求項１０〜請求項１２いずれかに記載のＣＰＵ資源管理システム。
【請求項１４】
前記アプリは、
既存のアプリまたは新規追加のアプリの少なくともいずれかを含むことを特徴とする
請求項１〜請求項１３いずれかに記載のＣＰＵ資源管理システム。
【請求項１５】
ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、
前記ＣＰＵ資源のうち、周期内の動作時間帯があらかじめ定められている複数の制御アプリと、
少なくとも動作周期内のいずれかの時間帯で完了すればよい処理を行う複数のアプリと、
前記各制御アプリと前記各アプリとの周期の最小公倍数をＣＰＵ制御周期とし、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記各アプリに割り当てるＣＰＵ資源割当設定部と、
を備えることを特徴とするＣＰＵ資源管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ資源管理システムに関し、詳しくは、他のアプリケーション（以下、アプリという）の動作の影響を受けることなく時間的制約のあるアプリの処理実行を保障することに関するものである。
【背景技術】
【０００２】
従来から、ＣＰＵで複数のプログラムやアプリなどの処理を適切に実行するために、ＣＰＵ（Central Processing Unit）の資源を各アプリに割り当てるＣＰＵ資源管理が行われている。
【０００３】
従来のＣＰＵ資源管理システムに関連する先行技術文献には、次のようなものがある。
【０００４】
【特許文献１】特開２００３−１３１８９４号公報
【０００５】
ところで、従来からＣＰＵ資源管理にあたっては、複数のアプリに対して優先度を設定し最も優先度が高いアプリにＣＰＵを使用させる優先度制御と、複数のアプリそれぞれにＣＰＵ使用率の上限を設定しＣＰＵの各制御周期において各アプリに対し使用率分のＣＰＵ資源の利用を保障するＣＰＵ使用率制御が行われている。
【０００６】
図２０は従来のＣＰＵ資源管理システムの機能ブロック例図であり、（Ａ）は優先度制御を示し、（Ｂ）はＣＰＵ使用率制御を示している。
【０００７】
まず、（Ａ）において、ＣＰＵ１１はＯＳ（Operating System）１２を起動し、優先度制御部１３の制御により、各アプリ１４〜１６に予め設定されている優先度に基づいて各アプリ１４〜１６によるＣＰＵ１１の使用を管理する。
【０００８】
優先度制御部１３は、たとえばアプリ１４が優先度１、アプリ１５が優先度２、アプリ１６が優先度３と設定されているとすると、最も優先度の高いアプリ１６が優先的にＣＰＵを使用できるように制御する。
【０００９】
また、最も優先度の高いアプリ１６がたとえばｗａｉｔ状態でＣＰＵ１１の使用を放棄した場合は２番目に優先度の高いアプリ１５がＣＰＵ１１を使用できるように制御し、他の優先度の高いアプリ１５、１６がＣＰＵ１１を使用していない場合は最も優先度の低いアプリ１４がＣＰＵ１１を使用できるように制御する。
【００１０】
一方、（Ｂ）において、ＣＰＵ使用率制御部１７は、各アプリ１８〜２０に予め設定されているＣＰＵ使用率に基づき、ＣＰＵ資源を管理する制御単位周期であるＣＰＵ制御周期における各アプリ１８〜２０のＣＰＵ１１の使用を管理する。
【００１１】
たとえば各アプリのＣＰＵ使用率が、アプリ１８は４０％、アプリ１９は２０％、アプリ２０は２０％に設定されていて、ＣＰＵ制御周期が図２１のように１００ｍｓに設定されている場合には、各ＣＰＵ制御周期１００ｍｓにおいて、アプリ１８が４０ｍｓ、アプリ１９が２０ｍｓ、アプリ２０が２０ｍｓそれぞれＣＰＵ１１を使用できるように制御する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来の優先度制御によれば、最高優先度のアプリはＣＰＵ資源を無制限に使用できることになり、所定の時間関係で動作するという時間的制約から優先度が低いアプリは、最高優先度のアプリが無制限にＣＰＵ資源を使用していると時間的制約に沿った動作ができないという問題点があった。
【００１３】
たとえば、アップグレードなどによって優先度の高いアプリの動作が変更されてＣＰＵ使用量が増加すると、優先度の低いアプリが利用できるＣＰＵ資源が減少してしまい、アプリの時間的制約を守ることができない。
【００１４】
また従来のＣＰＵ使用率制御によれば、ＣＰＵ使用率制御部１７はＣＰＵ制御周期における各アプリのＣＰＵ使用率分の利用を保障するだけで、時間的制約を有するアプリが実行する時間制約のある処理を保障できないという問題点があった。
【００１５】
たとえば、一定周期ごとに決められた処理を行う定周期アプリの定周期処理における動作周期の長さがＣＰＵ制御周期よりも短い場合は、定周期処理に必要なＣＰＵ資源の利用を毎周期保障することができない。
【００１６】
また、イベント発生時に指定時間内に応答することが必要な応答時間制約アプリでは、指定時間内に確実に応答処理が完了するようにＣＰＵ資源を割り当てることを保障できない。
【００１７】
本発明は上述の問題点を解決するものであり、その目的は、時間的制約を有するアプリの処理が他のアプリの動作の影響を受けることなく行えることを保障できるＣＰＵ資源管理システムを実現することにある。
【課題を解決するための手段】
【００１８】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、
各アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期またはイベント応答要求時間の短いアプリから順にＣＰＵ資源を割り当てることを特徴とする。
【００１９】
請求項２記載の発明は、
請求項１記載のＣＰＵ資源管理システムにおいて、
前記各アプリの前記動作周期または前記イベント応答要求時間の１／２を前記ＣＰＵ資源の割当周期とし、ＣＰＵ制御周期ごとに、前記割当周期の短いアプリから順に前記各アプリの実行時間を管理するための最小時間単位で前記ＣＰＵ資源を割り当てることを特徴とする。
【００２０】
請求項３記載の発明は、
請求項２記載のＣＰＵ資源管理システムにおいて、
前記ＣＰＵ資源管理システムとして動作するためのプログラムや前記各アプリの前記割当周期、使用率を登録するアプリ要求資源テーブル、前記各アプリのＣＰＵ資源の割当期間を登録する割当テーブルのうち少なくとも前記要求資源テーブルと前記割当テーブルを格納する記憶部と、
前記アプリ要求資源テーブルに基づいて前記各アプリの前記割当周期の最小公倍数を算出して前記ＣＰＵ制御周期とし、前記ＣＰＵ制御周期ごとに前記割当周期の短いアプリから順に特定の時間単位でＣＰＵ資源を割り当てて、各アプリの識別子とそのＣＰＵ資源の割当期間を前記割当テーブルに登録し記憶する演算制御部とで構成されることを特徴とする。
【００２１】
請求項４記載の発明は、
請求項３記載のＣＰＵ資源管理システムにおいて、
前記演算制御部は、
前記アプリ要求資源テーブルに基づいて、割当周期の短いアプリから順にＣＰＵを割り当てるアプリを選択し、このアプリの割当周期で前記ＣＰＵ制御周期を区切り、最初の割当周期中の先頭の前記特定の時間単位で分割された期間から順にＣＰＵ資源の割当対象期間とし、この割当対象期間が他のアプリに割り当てられていない場合はＣＰＵ資源を割り当てて前記割当テーブルに前記ＣＰＵ資源割当期間を登録・記憶することを特徴とする。
【００２２】
請求項５記載の発明は、
請求項３または請求項４記載のＣＰＵ資源管理システムにおいて、
前記演算制御部は、
前記割当テーブルの前記ＣＰＵ資源割当期間に基づいて、各アプリを実行することを特徴とする。
【００２３】
請求項６記載の発明は、
請求項３〜請求項５いずれかに記載のＣＰＵ資源管理システムにおいて、
前記演算制御部は、
時間的制約のあるアプリに最高優先度を設定するとともに時間的制約のないアプリに最高優先度未満の優先度を設定し、前記ＣＰＵ制御周期のｔｉｃｋ単位でＣＰＵ資源の割当状況を確認しＣＰＵ資源がどのアプリにも割り当たっていない場合または前記アプリに割り当たっているがアプリがＣＰＵの使用を放棄している場合は時間的制約のないアプリの中で最も高優先度のアプリを実行することを特徴とする。
【００２４】
請求項７記載の発明は、
請求項３〜請求項５いずれかに記載のＣＰＵ資源管理システムにおいて、
ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、
各アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期またはイベント応答要求時間に基づく所定の選択基準によって前記各アプリにＣＰＵ資源を割り当てることを特徴とする。
【００２５】
請求項８記載の発明は、
請求項７記載のＣＰＵ資源管理システムにおいて、
前記ＣＰＵ資源のうち、周期内の動作時間帯があらかじめ定められている複数の制御アプリの動作時間帯を除いた残りの時間帯のＣＰＵ資源を分割し、少なくとも動作周期内のいずれかの時間帯で完了すればよい処理を行う複数のアプリに割り当てることを特徴とする。
【００２６】
請求項９記載の発明は、
請求項８記載のＣＰＵ資源管理システムにおいて、
前記各制御アプリと前記各アプリの周期の最小公倍数をＣＰＵ制御周期とし、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記各アプリに割り当てることを特徴とする。
【００２７】
請求項１０記載の発明は、
請求項８または請求項９記載のＣＰＵ資源管理システムにおいて、
前記ＣＰＵ資源管理システムとして動作するためのプログラム、前記各制御アプリの動作周期およびＣＰＵ使用率を登録する制御アプリ登録テーブル、前記各アプリの動作周期および動作時間帯を登録するアプリ登録テーブル、前記各アプリのＣＰＵ資源の割当期間を登録するアプリ割当テーブルのうち、少なくとも前記アプリ登録テーブル、前記制御アプリ登録テーブル、前記アプリ割当テーブルを格納する記憶部と、
前記アプリ登録テーブル、前記制御アプリ登録テーブルに登録された各動作周期およびＣＰＵ使用率、動作時間帯に基づき、前記各アプリおよび前記制御アプリの前記動作周期の最小公倍数を算出して前記ＣＰＵ制御周期とし、前記ＣＰＵ制御周期を特定の時間単位で分割し、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記時間単位ごとに前記各アプリに割り当てて、前記各アプリの識別子とそのＣＰＵ資源の割当期間を前記アプリ割当テーブルに登録し記憶する演算制御部とで構成されることを特徴とする。
【００２８】
請求項１１記載の発明は、
請求項１０記載のＣＰＵ資源管理システムにおいて、
前記演算制御部は、
前記記憶部にあらかじめ記憶され前記各アプリに対してＣＰＵ資源の割当設定を行うための基準となるアプリ割当選択基準に基づき、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記時間単位ごとに前記各アプリに割り当てることを特徴とする。
【００２９】
請求項１２記載の発明は、
請求項１０または請求項１１記載のＣＰＵ資源管理システムにおいて、
前記記憶部は、
各アプリおよび各制御アプリの動作周期またはＣＰＵ制御周期ごとに、前記動作周期の短いアプリから順にＣＰＵ資源を割り当てるアプリ割当選択基準を記憶することを特徴とする。
【００３０】
請求項１３記載の発明は、
請求項１０〜請求項１２いずれかに記載のＣＰＵ資源管理システムにおいて、
前記演算制御部は、
前記情報割当テーブルの前記ＣＰＵ資源割当期間に基づいて、各アプリを実行することを特徴とする。
【００３１】
請求項１４記載の発明は、
請求項１〜請求項１３いずれかに記載のＣＰＵ資源管理システムにおいて、
前記アプリは、
既存のアプリまたは新規追加のアプリの少なくともいずれかを含むことを特徴とする。
【００３２】
請求項１５記載の発明は、
ＣＰＵ資源を複数のアプリに分割して割り当てるＣＰＵ資源管理システムにおいて、
前記ＣＰＵ資源のうち、周期内の動作時間帯があらかじめ定められている複数の制御アプリと、
少なくとも動作周期内のいずれかの時間帯で完了すればよい処理を行う複数のアプリと、
前記各制御アプリと前記各アプリとの周期の最小公倍数をＣＰＵ制御周期とし、前記ＣＰＵ制御周期から前記各制御アプリの動作時間帯を除いた残りの時間帯の前記ＣＰＵ資源を前記各アプリに割り当てるＣＰＵ資源割当設定部と、
を備えることを特徴とする。
【発明の効果】
【００３３】
本発明によれば、時間的制約を有するアプリが、他のアプリの動作の影響を受けずに処理を実行することを保障できる。
【００３４】
また、本発明のＣＰＵ資源管理システムは、制御アプリとアプリがＣＰＵ資源の利用で競合した場合、制御アプリをアプリより優先的に動作させるようにＣＰＵ資源を割り当てることができる。
【発明を実施するための最良の形態】
【００３５】
図１は、本発明に係るＣＰＵ資源管理システムの一実施例を示すブロック図である。図１において、ＣＰＵ５００は、演算制御部として動作するものであり、図示しないＯＳを起動してプログラムを実行することによりＣＰＵ資源管理システム全体を制御し、ＣＰＵ使用率制御部５１０、ｔｉｃｋ通知部５２０、アプリ実行制御部５３０などを介してアプリ５４１〜５４３に対するＣＰＵ資源の割当を行う。なお、ＣＰＵ５００は、図示しない外部機器との間で通信を行う通信機能を有するものであってもよい。
【００３６】
ＣＰＵ使用率制御部５１０は、ＣＰＵ割当設定部５１１、割当テーブル作成部５１２、割当テーブル５１３、アプリ要求資源テーブル５１４、ＣＰＵ割当処理部５１５、要求受付部５１６などで構成され、時間的制約のあるアプリ５４１〜５４３が要求する割当周期あたりのＣＰＵ使用率に基づいて、ＣＰＵ資源を各アプリ５４１〜５４３に割り当てる。
【００３７】
ＣＰＵ割当設定部５１１は、分割されたそれぞれのＣＰＵ資源をアプリ５４１〜５４３に割当設定する。割当テーブル作成部５１２は、ＣＰＵ資源を分割し、この結果から割当テーブル５１３を作成する。
【００３８】
割当テーブル５１３は、各アプリ５４１〜５４３へのＣＰＵ資源の割当状況を表す割当情報を保持する。たとえば割当テーブル５１３が有する割当情報は、ＣＰＵ資源を使用する期間の情報である分割資源、それぞれの分割資源に対してその資源を割り当てるアプリの識別情報であるアプリ識別子などを含む。
【００３９】
アプリ要求資源テーブル５１４は、各アプリ５４１〜５４３による資源割当要求時の情報をアプリ毎に保持する。たとえばアプリ要求資源テーブル５１４が保持する情報には、アプリを識別するためのアプリ識別子、アプリにＣＰＵ資源を割り当てる周期である割当周期、割当周期当たりにＣＰＵを使用する割合であるＣＰＵ使用率などがある。
【００４０】
ＣＰＵ割当処理部５１５は、割当テーブル５１３の割当情報に基づいて、アプリ実行制御部５３０を介して各アプリ５４１〜５４３にＣＰＵ資源を割り当てる。要求受付部５１６は、アプリ実行制御部５３０から要求を受け付ける。
【００４１】
ｔｉｃｋ通知部５２０は、ｔｉｃｋ単位の周期でＣＰＵ割当処理部５１５にＣＰＵ資源の割当を指示する制御信号を通知する。なおｔｉｃｋ通知部５２０には、制御信号を通知するｔｉｃｋ単位時間があらかじめ設定されている。
【００４２】
ここで、ｔｉｃｋとは、アプリやプログラムなどが管理する最小単位の時間のことであり、たとえばタイマーなどの割込み間隔によって得られるものである。具体的に本発明に係るＣＰＵ資源管理システムでは、ｔｉｃｋ通知部５２０からの通知間隔を１ｔｉｃｋとし、各アプリ５４１〜５４３の実行時間を管理するための最小時間単位（たとえば１０ｍｓ）とする。
【００４３】
アプリ実行制御部５３０は、ＣＰＵ使用率制御部５１０に対してＣＰＵ資源の割当を要求する。ＣＰＵ使用率制御部５１０は、割当テーブル５１３の割当情報に基づいてアプリ５４１〜５４３の動作を制御する。アプリ５４１〜５４３は、時間的制約があるアプリであり、ＣＰＵ５００の資源割当に応じて各機能を提供する。
【００４４】
図２、図４、図６および図８はＣＰＵ資源の割当設定を行う動作を説明するフロー図、図３はイベント応答アプリの応答要求時間を割当周期に設定した場合におけるＣＰＵ資源の割当状況の説明図、図５はアプリ要求資源テーブルおよび割当情報テーブルの一例を示す説明図、図７はＣＰＵ資源の割当状況を説明する説明図である。
【００４５】
図２（Ａ）はＣＰＵの資源の割当設定における動作フロー図、図２（Ｂ）はＣＰＵ資源の割当を解除し再び割当設定する場合の動作フロー図、図２（Ｃ）は全アプリへの資源割当の動作フロー図である。
【００４６】
図２（Ａ）のステップＳ１０１において、アプリ実行制御部５３０はアプリ５４１〜５４３を実行するのにあたり、図１のデータの流れＡ１に示すように要求受付部５１６にＣＰＵ資源の割当要求を行う。なお、アプリ５４１〜５４３は、既に使用されているアプリまたは新規に追加するアプリの少なくともいずれか一つを含むものとする。
【００４７】
このとき、アプリ実行制御部５３０は、定周期アプリへのＣＰＵ資源割当を要求する定周期アプリ資源割当要求と応答時間制約アプリへのＣＰＵ資源割当を要求するイベント応答アプリ資源割当要求の２種類を行う。
【００４８】
要求受付部５１６に送信する定周期アプリ資源割当要求はアプリ識別子とtickの倍数であるアプリ周期とＣＰＵ使用率の情報を含み、イベント応答アプリ資源割当要求はアプリ識別子とtick×２の倍数であるイベント応答要求時間とＣＰＵ使用率の情報を含む。
【００４９】
ステップＳ１０２において、要求受付部５１６は、図１のデータの流れＡ２に示すようにアプリ要求資源テーブル５１４にアプリの要求情報を登録し記憶する。
【００５０】
たとえば要求受付部５１６は、アプリ要求資源テーブル５１４にアプリ実行制御部５３０からの要求が定周期アプリ資源割当要求の場合は受信した要求情報のうちアプリ周期を割当周期として登録し、イベント応答アプリ資源分割割当要求の場合は受信した要求情報のうちイベント応答要求時間の１／２の値を割当周期として登録する。また、ＣＰＵ使用率を指定値の２倍にしてアプリ要求資源テーブル５１４に登録する。
【００５１】
イベント応答要求時間の１／２の値とする理由は、応答要求時間を確実に保障するためである。たとえば割当周期に応答要求時間と等しい値を設定すると、図３（Ａ）のようにアプリ使用可能資源の割当状況によってはイベントの応答要求時間が要求された時間より長くなってしまう場合があり、要求した応答要求時間内に応答処理を完了できない。この場合、実際の応答時間は割当周期の２倍以下となる。このため応答要求時間の１／２を割当周期に設定すると、図３（Ｂ）のように確実に応答要求時間内の応答処理の完了を保障できる。なお、応答要求時間の１／２を割当周期に設定する場合には、ＣＰＵ使用率を指定値の２倍にして設定することにより、イベント応答処理が終了するまでの時間を保障できる。
【００５２】
ステップＳ１０３において、ＣＰＵ使用率制御部５１０は、全アプリ５４１〜５４３に対して資源の再割当設定を行う。このステップＳ１０３の動作について、図２（Ｃ）を用いて説明する。
【００５３】
図２（Ｃ）のステップＳ２０１において、要求受付部５１６は、図１のデータの流れＬ１に示すように、割当テーブル作成部５１２に割当テーブル作成を要求する。
【００５４】
ステップＳ２０２において、割当テーブル作成部５１２は、図１のデータの流れＬ２に示すようにアプリ要求資源テーブル５１４から、たとえば図５（Ａ）のような全アプリ５４１〜５４３の割当周期（それぞれ５０ｍｓ、１００ｍｓ、２００ｍｓ）を取得する。
【００５５】
ステップＳ２０３において、割当テーブル作成部５１２は、図１のデータの流れＬ３に示すように全アプリ５４１〜５４３の割当周期に基づき割当テーブル５１３を作成する。このステップＳ２０３における割当テーブル作成部５１２の動作について、図４を用いて説明する。
【００５６】
割当テーブル作成部５１２は、図４のステップＳ４０１において、全アプリ５４１〜５４３の割当周期の最小公倍数を算出し、この値をＣＰＵ制御周期とする。たとえば、各アプリ５４１〜５４３の割当周期が図５（Ａ）のアプリ要求資源テーブルのようにそれぞれ５０ｍｓ、１００ｍｓ、２００ｍｓの場合は、これら割当周期の最小公倍数である２００ｍｓがＣＰＵ制御周期となる。
【００５７】
このようにＣＰＵ制御周期を割当周期の最小公倍数とすることで、全アプリの割当周期で余りなく区切ることができる。このために、割当テーブル作成部５１２はＣＰＵ制御周期間で割当設定を行い、この結果を基に繰り返し資源を割り当てる。
【００５８】
ステップＳ４０２において、ＣＰＵ制御周期をｔｉｃｋ単位で分割する。たとえば、図５（Ｂ）のように分割する単位を１ｔｉｃｋ＝１０ｍｓとすると、分割資源は０ｍｓ〜１０ｍｓ、１０ｍｓ〜２０ｍｓ、２０ｍｓ〜３０ｍｓのようにＣＰＵ制御周期（２００ｍｓ）が１０ｍｓごとに分割される。なおＣＰＵ制御周期の分割単位は、特にｔｉｃｋ単位に限定するものではなく、特定の時間単位で分割するものであってもよい。
【００５９】
ステップＳ４０３において、分割結果に基づきたとえば図５（Ｂ）のような割当テーブル５１３を作成する。割当テーブル５１３には分割資源、アプリ識別子フィールドが作成され、分割資源として０ｍｓ〜１０ｍｓ、１０ｍｓ〜２０ｍｓ、・・・、１９０ｍｓ〜２００ｍｓがそれぞれ作成される。そして、図２のステップＳ２０４に移行する。なおアプリ識別子は、割当テーブル作成直後は空欄であり、ＣＰＵ割当設定部５１１により後の図２のステップＳ２０６にて登録される。なお、割当テーブル作成部５１２は、割当テーブル５１３を作成する（更新する）際に既存の割当テーブル情報を保存してもよい。
【００６０】
図２のステップＳ２０４において、要求受付部５１６は、図１のデータの流れＬ４に示すように全アプリ５４１〜５４３へのＣＰＵ資源の割当設定をＣＰＵ割当設定部５１１に要求する。
【００６１】
ステップＳ２０５において、ＣＰＵ割当設定部５１１は、図１のデータの流れＬ５に示すようにアプリ要求資源テーブル５１４から全アプリ５４１〜５４３の割当周期とＣＰＵ使用率を取得する。
【００６２】
ステップＳ２０６において、ＣＰＵ割当設定部５１１は、図１のデータの流れＬ６に示すように各アプリ５４１〜５４３にＣＰＵ資源を割当設定し割当テーブル５１３に登録する。このステップＳ２０６におけるＣＰＵ割当設定部５１１の動作について、図６を用いて説明する。
【００６３】
ＣＰＵ割当設定部５１１は、図６のステップＳ５０１において、割当テーブル５１３に登録されている各アプリ５４１〜５４３へのＣＰＵ資源の割当状況を表す割当情報を取得する。
【００６４】
ステップＳ５０２において、割当設定が行われていないアプリの中で、最も割当周期の短いアプリを選択する。たとえばアプリ５４１〜５４３は割当設定が行われていないとする場合、図５（Ａ）に示すようにアプリ５４１〜５４３の中で最も割当周期の短いアプリ５４１（割当周期５０ｍｓ）を選択する。
【００６５】
ステップＳ５０３において、ステップＳ５０２で選択したアプリの割当周期でＣＰＵ制御周期を区切る。たとえば図７のように選択したアプリの割当周期（たとえばアプリ５４１の周期５０ｍｓ）で、ＣＰＵ制御周期（たとえば２００ｍｓ）を０ｍｓ〜５０ｍｓ、５０ｍｓ〜１００ｍｓ、１００ｍｓ〜１５０ｍｓ、１５０ｍｓ〜２００ｍｓに区切る。
【００６６】
ステップＳ５０４において、各割当周期でどのアプリにも割当設定していない資源量がアプリの要求に対して十分か否か判定する。十分であると判定する場合はステップＳ５０５に移行する。十分でないと判定する場合はＣＰＵの資源の割当設定は失敗したことになり、割当テーブル５１３を更新しない。このとき、割当テーブル５１３は割当設定を行う前の状態に戻る。
【００６７】
ステップＳ５０５において、最初の割当周期（たとえば図７の０ｍｓ〜５０ｍｓ）中の先頭の分割資源（たとえば０ｍｓ〜１０ｍｓ）を割当対象資源として選択する。
【００６８】
ステップＳ５０６において、ステップＳ５０５にて選択された割当対象資源（たとえば０ｍｓ〜１０ｍｓ）が他のアプリに設定済みでないか否かを判定する。設定済みではないと判定する場合はステップＳ５０７に移行する。設定済みであると判定する場合はステップＳ５１１に移行する。
【００６９】
ステップＳ５０７において、割当対象資源をステップＳ５０１にて選択されたアプリに設定して、割当テーブル５１３に登録し記憶する。たとえば図７のように、割当対象資源（たとえば０ｍｓ〜１０ｍｓ）をアプリ５４１に設定して割当テーブル５１３に登録する。
【００７０】
ステップＳ５０８において、現在の割当周期内でアプリの要求分の資源を確保したか否か判定する。たとえば現在の割当周期内（たとえば図７の「０ｍｓ〜５０ｍｓ」）で、アプリ５４１の要求分（２０ｍｓ：図５のアプリ５４１の割当周期５０ｍｓおよびＣＰＵ使用率４０％から算出）の資源を確保したか判定する。確保したと判定する場合はステップＳ５０９に移行する。確保しないと判定する場合はステップＳ５１１に移行する。
【００７１】
ステップＳ５０９において、最後の割当周期まで割当設定を完了したか否か判定する。最後まで割当設定したと判定する場合はステップＳ５１０に移行する。最後まで割当設定していないと判定する場合はステップＳ５１２に移行する。
【００７２】
ステップＳ５１０において、全てのアプリ５４１〜５４３への割当設定が完了したか否か判定する。全ての割当設定が完了したと判定する場合はＣＰＵ資源の割当設定の処理を終える。全ての割当設定が完了していないと判定する場合はステップＳ５０１に戻る。
【００７３】
ステップＳ５１１において、次の分割資源を割当対象資源としてステップＳ５０６に戻る。たとえば次の分割資源１０ｍｓ〜２０ｍｓを割当対象資源とする。
【００７４】
ステップＳ５１２において、次の割当周期の先頭の分割資源を割当対象資源としてステップＳ５０６に戻る。たとえば図７のように、次の割当周期「５０ｍｓ〜１００ｍｓ」の先頭の分割資源（たとえば５０ｍｓ〜６０ｍｓ）を割当対象資源とする。
【００７５】
このように、ＣＰＵ使用率制御部５１０は、他のアプリの動作の影響を受けずに時間的制約のあるアプリの処理を保障することができる。
【００７６】
ＣＰＵ使用率制御部５１０は、たとえば図５（Ａ）に示すアプリ要求資源テーブル例のように、各アプリ５４１〜５４３の割当周期（ｍｓ）およびＣＰＵ使用率（％）が、アプリ５４１：５０ｍｓ、４０％、アプリ５４２：１００ｍｓ、２０％、アプリ５４３：２００ｍｓ、１５％の場合は、図５（Ｂ）のように分割資源（ｍｓ）０〜１０と１０〜２０にアプリ５４１、分割資源（ｍｓ）２０〜３０と３０〜４０にアプリ５４２、分割資源（ｍｓ）４０〜５０にアプリ５４３、分割資源（ｍｓ）５０〜６０と６０〜７０にアプリ５４１を割り当てるように割当テーブル５１３に登録する。
【００７７】
図８はＣＰＵ割当処理部５１５が割当テーブル５１３の割当情報に基づいてアプリにＣＰＵ資源を割り当てる動作を説明するフロー図である。ステップＳ６０１においてＣＰＵ割当処理部５１５は、図１のデータの流れＥ１に示すようにＣＰＵ割当設定部５１１がＣＰＵ制御周期の資源を割当設定した結果である割当情報を取得する。
【００７８】
ステップＳ６０２において、ｔｉｃｋ通知部５２０は、図１のデータの流れＥ２に示すように、ｔｉｃｋ粒度の単位で分割したＣＰＵ資源の分割単位周期でＣＰＵ割当処理部５１５にＣＰＵ資源の割当を指示する制御信号を通知する。
【００７９】
ステップＳ６０３において、ＣＰＵ割当処理部５１５は、ｔｉｃｋ通知部５２０から制御信号を受信して実行中のアプリが存在するか否かを確認し、実行中のアプリが存在する場合は図１のデータの流れＥ３に示すようにアプリ実行制御部５３０に対してアプリの停止を要求する。
【００８０】
ステップＳ６０４において、ＣＰＵ割当処理部５１５は、割当テーブル５１３から取得した割当情報に基づいて、現時点でＣＰＵ資源がいずれかのアプリに設定されている場合は、図１のデータの流れＥ４に示すようにアプリ実行制御部５３０に対してアプリの実行を要求する。
【００８１】
ステップＳ６０５において、ＣＰＵ割当処理部５１５は、割当テーブル５１３に記憶されているアプリ５４１〜５４３の動作スケジュールが最後まで実行したか否か判定する。実行したと判定する場合はステップＳ６０１に戻る。実行していないと判定する場合はステップＳ６０２に戻る。
【００８２】
一方、アプリ実行制御部５３０がアプリの実行を停止する場合は、図２（Ｂ）のように各アプリに割り当てられている資源の割当解除要求を行う。図２（Ｂ）のステップＳ３０１において、アプリ実行制御部５３０は、図１のデータの流れＤ１に示すように要求受付部５１６にＣＰＵ資源の割当解除要求を行う。
【００８３】
ステップＳ３０２において、要求受付部５１６は、図１のデータの流れＤ２に示すようにアプリ要求資源テーブル５１４からＣＰＵ資源の割当を解除するアプリの情報を削除させる。
【００８４】
そして、各アプリにＣＰＵの資源の割当設定を再び行う場合には、図２（Ａ）のステップＳ１０１〜Ｓ１０３の動作を行う。
【００８５】
この結果、ＣＰＵ使用率制御部５１０は、他のアプリの動作の影響を受けずに時間的制約のあるアプリの処理を保障することができる。
【００８６】
アプリは割り当てられた資源を自由に使用できるため、アプリ内のプロセスやスレッドへのＣＰＵ資源割当手法に優先度制御やタイムシェアリング制御など、アプリ毎に固有の手法を採用することができる。
【００８７】
ＣＰＵ資源の割当の設定は事前に行っておき、アプリ実行時はこの結果に従って実際にＣＰＵ資源の割当を行うだけであるため、アプリ実行時のＣＰＵ使用率制御によるＣＰＵ資源のオーバーヘッドは非常に少ないものとなる。
【００８８】
なお、上記実施例では、どのアプリにも使用されない空きＣＰＵ資源が発生することがある。本発明のＣＰＵ使用率制御の仕組みと優先度制御の仕組みを組み合わせて、この空き資源を有効活用するものであってもよい。なお空き資源には、どのアプリにも割り当てられていないＣＰＵ資源と、アプリに割り当てられているがアプリが使用していないＣＰＵ資源の２種類がある。
【００８９】
図９はアプリの残りのＣＰＵ資源を活用するＣＰＵ資源管理システムの機能ブロック図である。図９において、アプリ５４１〜５４３は時間的制約があるアプリとし、アプリ５４４〜５４５は時間的制約のないアプリとする。優先度制御部５５０は、アプリとＣＰＵ使用率制御部５１０に対して優先度を設定し、最も高優先度のものにＣＰＵ資源を優先的に使用させ、優先度の低いものに対してはより高優先度のものが動作中でない場合に限りＣＰＵ資源を使用させる。
【００９０】
なお、ＣＰＵ５００、ＣＰＵ使用率制御装置５１０、ｔｉｃｋ通知部５２０、アプリ実行制御部５３０、アプリ５４１〜５４３は図１と同等なのでここでの説明は省略する。
【００９１】
図１０は図９のＣＰＵ資源管理システム５０の動作フロー図である。図１０のステップＳ７０１において、優先度制御部５５０は、図９のデータの流れＤ１に示すように、ＣＰＵ使用率制御部５１０とその管理対象である時間的制約のあるアプリ５４１〜５４３に最高優先度を設定する。
【００９２】
ステップＳ７０２において、優先度制御部５５０は図９のデータの流れＤ２に示すように時間的制約のないアプリ５４４〜５４５に最高優先度未満の優先度を設定する。
【００９３】
ステップＳ７０３において、ｔｉｃｋ通知部５２０は図９のデータの流れＤ３に示すように、ｔｉｃｋ粒度の単位で分割したＣＰＵ資源の分割単位周期で優先度制御部５５０に制御信号を通知する。
【００９４】
ステップＳ７０４において、優先度制御部５５０はｔｉｃｋ通知部５２０からの制御信号に基づき、図９のデータの流れＤ４に示すようにＣＰＵ使用率制御部５１０にＣＰＵを使用するＣＰＵ使用権を与える。
【００９５】
なお、ＣＰＵ使用率制御部５１０がＣＰＵ使用権を与えるタイミングは、ｔｉｃｋ通知部５２０から制御信号を受信したとき、ＣＰＵ使用権を持つアプリがｗａｉｔ状態などになりＣＰＵ使用権を手放すとき、現在ＣＰＵ使用権を持つアプリよりも高優先度のアプリが動作待ち状態になったときのいずれかであってもよい。
【００９６】
ステップＳ７０５において、ＣＰＵ使用率制御部５１０はＣＰＵの資源を割り当てるアプリを選択する。
【００９７】
ステップＳ７０６において、ＣＰＵ使用率制御部５１０はＣＰＵ資源がどれかのアプリに割り当てられているか否かを判定する。言い換えれば、ＣＰＵ資源に空き資源があるか否かを判定する。資源がアプリに割り当てられていると判定する場合はステップＳ７０７に移行し、資源がどのアプリにも割り当たっていないと判定する場合はステップＳ７０９に移行する。
【００９８】
ステップＳ７０７において、ＣＰＵ使用率制御部５１０は図９のデータの流れＤ５に示すように、アプリ実行制御部５３０にアプリの実行を要求する。
【００９９】
ステップＳ７０８において、優先度制御部５５０はアプリが自らＣＰＵの使用権を手放したか否かを判定する。ＣＰＵの使用権を手放したと判定する場合はステップＳ７０９に移行し、ＣＰＵの使用権を手放していないと判定する場合はステップＳ７０３に戻る。
【０１００】
ステップＳ７０９において、優先度制御部５５０は図９のデータの流れ「Ｄ６」に示すように時間的制約のないアプリ５４４〜５４５の中で最も高優先度のアプリの実行要求をアプリ実行制御部５３０に行い、ステップＳ７０３に戻る。
【０１０１】
このように、時間的制約のないアプリをＣＰＵ使用率制御の空き資源を利用して動作させることにより未使用のＣＰＵ資源が減少し、効率的にＣＰＵ５００を使用できる。
【０１０２】
また、ＣＰＵ使用率管理対象である時間的制約のあるアプリ５４１〜５４３は時間的制約のないアプリ５４４〜５４５の動作の影響を受けないので、割り当てられたＣＰＵ使用率分の資源を利用してアプリの時間的制約を保障できる。
【０１０３】
また、上記実施例に示したＣＰＵ資源管理システムは、動作周期内のどこかで完了すればよいという時間的制約のある処理を行うアプリについてのみ上述のような一連の処理を行ってＣＰＵ資源を割り当てるだけではなく、特定の開始時間から終了時間の間で完了することを保障するような時間的制約のある処理を行うアプリとの競合を考慮してＣＰＵ資源の割当を行うものであってもよい。
【０１０４】
具体的には、本発明のＣＰＵ資源管理システムは、たとえばインダストリアルオートメーションにおけるプロセス制御システムなどにおいて、コントローラが保持する情報の加工や外部への配信などを行うアプリと、コントローラに接続されたアクチュエータまたはセンサの動作を制御する制御アプリとのＣＰＵ資源の競合を考慮して、制御アプリをアプリより優先的に動作させるようにＣＰＵ資源を割り当てるものでもよい。
【０１０５】
ここで、制御アプリは、あらかじめ設定されたタイミングで動作し、たとえば周期内であらかじめ定められた開始時間から終了時間の間で完了することを保障するという時間的制約のある処理（断続的な処理も含む）（以下、ハードリアルタイム処理という）を行う。なお、制御アプリのプログラムは固定的であり、動的に変更されることはない。
【０１０６】
また、アプリは、周期内のどこかで完了すればよいという時間的制約のある処理（以下、ソフトリアルタイム処理という）を行う。なお、アプリのプログラムは適宜動的に変更されるものでもよい。なお、ここでいうアプリは、上述の実施例で説明してきたアプリと同意のものである。
【０１０７】
図１１は、ＣＰＵ資源管理システムのその他の実施例を示す説明図であり、図１と共通する部分については図中の記載を省略する。具体的にはアプリ実行部、ＣＰＵ割当処理部、ｔｉｃｋ通知部についての記載を省略している。また図１と図１１との差異は、制御アプリ、制御アプリ登録部、制御アプリ登録テーブルを設けたことである。
【０１０８】
図１１において、ハードウェア６０は、特に図示しないが、主にＯＳやＣＰＵ資源管理システムとして動作させるためのプログラム、複数の制御アプリ６２ａ〜ｃ、アプリ６３ａ〜ｃおよびこれらプログラムなどの実行時に使用されるデータを記憶する記憶部（たとえばＲＡＭやＲＯＭ、ハードディスクなど）と、図示しないＯＳを起動してプログラムを実行することによりＣＰＵ資源管理システム全体を制御するＣＰＵなどの演算制御部を有する。
【０１０９】
演算制御部は、記憶部に格納されたプログラムを読み出し実行することにより、ＣＰＵ資源割当設定部６１を制御して制御アプリ６２ａ〜ｃ、アプリ６３ａ〜ｃに対してＣＰＵ資源の割当を行う。
【０１１０】
このとき記憶部は、演算制御部によって実行されるプログラムやアプリをプログラム格納エリアに展開し、入力されたデータや、プログラムやアプリの実行時に生じる処理結果などのデータをワークエリアに一時的に記憶する。なお、演算制御部が記憶部に記憶されたプログラムを読み込んで展開してＣＰＵ資源管理システムを制御する動作については図１と同じであるため以下省略する。
【０１１１】
ＣＰＵ資源割当設定部６１は、制御アプリ登録部６１ａおよびアプリ要求受付部６１ｂ、割当テーブル作成部６１ｆ、ＣＰＵ割当設定部６１ｇを有する。制御アプリ登録部６１ａは、制御アプリ６２ａ〜ｃが使用するＣＰＵ資源の登録を受け付け、制御アプリ６２ａ〜ｃのスケジューリング周期と動作時間帯を制御アプリ登録テーブル６１ｄに設定する。
【０１１２】
アプリ要求受付部６１ｂは、アプリ６３ａ〜ｃからの割当設定要求を受け付けてアプリ登録テーブル６１ｃに設定する。アプリ登録テーブル６１ｃは、アプリ６３ａ〜６３ｃからの資源割当要求時のアプリを識別するための情報をアプリ毎に保持する。
【０１１３】
たとえばアプリ登録テーブル６１ｃが保持する情報には、アプリを識別するためのアプリ識別子、アプリにＣＰＵ資源を割り当てる周期である動作周期、定周期処理のために必要な動作周期あたりのＣＰＵ使用率の情報ＣＰＵ使用率などがある。
【０１１４】
制御アプリ登録テーブル６１ｄは、制御アプリ６２ａ〜ｃの動作時間帯の情報を保持する。たとえば制御アプリ登録テーブル６１ｄが保持する情報には、個々の制御アプリの動作周期の最小公倍数時間であるスケジューリング周期、スケジューリング周期内で制御アプリ６２ａ〜ｃがＣＰＵを使用して処理を実行する時間帯の情報である動作時間帯などがある。
【０１１５】
割当テーブル６１ｅは、アプリ６３ａ〜ｃへのＣＰＵ資源の割当設定結果を保持する。たとえば割当テーブル６１ｅが保持する情報には、ＣＰＵ資源を分割した時間帯の情報である分割資源、それぞれの分割資源が割り当てられるアプリ識別子などがある。
【０１１６】
割当テーブル作成部６１ｆは、ＣＰＵ資源を分割してＣＰＵ資源を分割した結果に基づきアプリ割当テーブル６１ｃを作成する。
【０１１７】
ＣＰＵ割当設定部６１ｇは、割当テーブル６１ｅの各分割資源をアプリ６３ａ〜ｃに割当設定する。
【０１１８】
アプリの資源割当を行うＣＰＵ資源管理システムの動作について説明する。図１２は各制御アプリの動作時間帯の説明図、図１３、図１５および図１６はＣＰＵ資源の割当設定を行う動作を説明するフロー図、図１４は各種テーブルに記憶される情報の一例であり、図１３（Ａ）は制御アプリの動作情報が登録されるフロー図、図１３（Ｂ）はアプリのＣＰＵ資源割当が行われるフロー図である。
【０１１９】
制御アプリ６２ａ〜ｃの動作時間帯は、主にスケジューリング手法によって事前に定められる。制御アプリ６２ａ、ｂは、たとえば図１２のようにそれぞれ別の周期で動作するように定められる。このため、全制御アプリ（制御アプリ６２ａ＋制御アプリ６２ｂ）について各アプリの周期の最小公倍数の時間内での動作時間帯があらかじめ把握できる。
【０１２０】
図１３（Ａ）のステップＳ８０１において、図示しないアプリ実行制御部は制御アプリ６２ａ〜ｃの実行にあたり、図１１のデータの流れＤＦ１に示すように制御アプリ登録部６１ａに制御アプリの動作情報の登録要求を行う。いいかえれば制御アプリ登録部６１ａは、図示しないアプリ実行制御部から制御アプリの動作情報の登録要求を受ける。また制御アプリ登録部６１ａに送信される制御アプリの動作情報の登録要求信号にはアプリ識別子と制御アプリのスケジューリング周期と動作時間帯の情報が含まれる。
【０１２１】
ステップＳ８０２において、制御アプリ登録部６１ａは、データの流れＤＦ２に示すように制御アプリ登録テーブル６１ｄに制御アプリの動作情報を登録し記憶する。図１４（Ａ）は制御アプリ登録テーブルに記憶される情報の一例であって、スケジューリング周期（たとえば３００ｍｓ）と動作時間帯（たとえば、０〜４０、５０〜６０、１００〜１２０、１５０〜１６０、１７０〜１８０、２００〜２２０、２５０〜２６０（ｍｓ））を含む情報が記憶される。
【０１２２】
図１３（Ｂ）のステップＳ９０１において、図示しないアプリ実行制御部はアプリ６３ａ〜ｃの実行にあたり、図１１のデータの流れＤＦ３に示すようにアプリ要求受付部６１ｂにＣＰＵ資源の割当要求を行う。いいかえれば、アプリ要求受付部６１ｂは図示しないアプリ実行制御部からアプリの動作情報の登録要求を受ける。
【０１２３】
アプリ登録部６１ｂに送信されるアプリの動作情報の登録要求信号には、アプリ識別子とアプリの動作周期とＣＰＵ使用率などの各アプリの動作情報が含まれる。
【０１２４】
ステップＳ９０２において、アプリ要求受付部６１ｂは、図１１のデータの流れＤＦ４に示すように、受け付けたアプリの動作情報をアプリ登録テーブル６１ｃに登録し記憶する。
【０１２５】
図１４（Ｂ）は制御アプリ登録テーブルに記憶される情報の一例であり、アプリ識別子（たとえば、ＩｎｆｏＡｐ１、ＩｎｆｏＡｐ２）と動作周期（たとえば１５０ｍｓ、１００ｍｓ）とＣＰＵ使用率（たとえば、２０％、３０％）を含む情報が記憶される。
【０１２６】
ステップＳ９０３において、アプリ要求受付部６１ｂは、図１１のデータの流れＤＦ５に示すように、割当テーブル作成部６１ｆに新たな割当テーブル６１ｅの作成を要求する。
【０１２７】
ステップＳ９０４において、割当テーブル作成部６１ｆは、図１１のデータの流れＤＦ８に示すように、資源を分割して情報割当テーブル６１ｅを作成する。
【０１２８】
図１５は、割当テーブル作成部６１ｆが資源を分割して割当テーブル６１ｅを作成する動作の説明図である。図１５のステップＳ１００１において、制御アプリ登録テーブル６１ｄからスケジューリング周期と動作時間帯を取得する。
【０１２９】
ステップＳ１００２において、アプリ登録テーブル６１ｃからアプリ６３ａ〜ｃの動作周期を取得する。ステップＳ１００３において、取得したアプリ６３ａ〜ｃの動作周期に基づき、制御アプリ６２ａ〜ｃのスケジューリング周期とアプリ６３ａ〜ｃの動作周期の最小公倍数を算出し、この値をＣＰＵ制御周期とする。
【０１３０】
割当テーブル作成部６１ｆがたとえば図１４（Ａ）の制御アプリ登録テーブルと図１４（Ｂ）のアプリ登録テーブルに基づいて資源分割を行う場合のＣＰＵ制御周期は、制御アプリ６２ａ〜ｃのスケジューリング周期とアプリ６３ａ〜ｃの動作周期の最小公倍数（３００ｍｓ）となる。
【０１３１】
ステップＳ１００４において、ＣＰＵ制御周期を任意の分割単位で分割するのにあたり、分割する単位を機器のｔｉｃｋ単位(たとえば１ｔｉｃｋ＝１０ｍｓ)とする。なおＣＰＵ制御周期の分割単位は、特にｔｉｃｋ単位に限定するものではなく、特定の時間単位で分割するものであってもよい。また、この特定の時間単位はあらかじめＣＰＵ資源割当設定部６１中に設定されているものであっても、変更可能なものであってもよい。
【０１３２】
ステップＳ１００５において、分割した時間帯から制御アプリ６２ａ〜ｃの動作時間帯を削除する。たとえば図１４（Ｃ）のように、制御アプリがＣＰＵ制御周期間に動作する時間帯を除いて割当テーブル６１ｅの分割資源を設定する。
【０１３３】
ステップＳ１００６において、ＣＰＵ制御周期（たとえば３００ｍｓ）から制御アプリの動作時間帯が削除された残りの時間帯を割当テーブル６１ｅの分割資源に設定する。
【０１３４】
そして割当テーブル作成部６１ｆは、分割結果に基づき、たとえば図１４（Ｃ）のような割当テーブル６１ｅを作成する。割当テーブル６１ｅには、たとえば、分割資源、アプリ識別子フィールドが作成され、分割資源として４０ｍｓ〜５０ｍｓ、６０ｍｓ〜７０ｍｓ、・・・、２９０ｍｓ〜３００ｍｓがそれぞれ作成される。なお、アプリ識別子は、割当テーブル６１ｅの作成直後は空欄であり、ＣＰＵ割当設定部６１ｇにより後の図１３のステップＳ９０７にて登録される。そして、割当テーブル作成部６１ｆは、ステップＳ１００６の処理後、図１３のステップＳ９０５に移行する。
【０１３５】
ステップＳ９０５において、割当テーブル作成部６１ｆは、図１１のデータの流れＤＦ９に示すように、ＣＰＵ割当設定部６１ｇにアプリ６３ａ〜ｃの割当設定を要求する。
【０１３６】
ステップＳ９０６において、ＣＰＵ割当設定部６１ｇは、図１１のデータの流れＤＦ１１に示すように、アプリ６３ａ〜ｃへ割当設定を行い、割当テーブル６１ｅに登録する。図１４（Ｃ）はアプリ割当テーブルに記憶される情報の一例であり、分割資源とアプリ識別子を含む情報が記憶される。たとえば、ＩｎｆｏＡｐ１には、分割資源４０〜５０ｍｓ、６０〜７０ｍｓと７０〜８０ｍｓの動作時間帯が割り当てられる。
【０１３７】
つまりＣＰＵ資源割当設定部６１は、制御アプリ６２ａ〜ｃの未使用ＣＰＵ資源を分割し、アプリ６３ａ〜ｃに対して動作周期毎に必要なＣＰＵ資源量を割り当てる。
【０１３８】
ここでステップＳ９０６におけるＣＰＵ割当設定部６１ｇの動作について、図１６を用いて説明する。図１６は、ＣＰＵ割当設定部６１ｇがアプリ６３ａ〜ｃに資源の割当設定・登録する動作説明図であり、図１６のステップＳ１１０１において、ＣＰＵ割当設定部６１ｇはアプリ登録テーブル６１ｅからアプリ６３ａ〜ｃの動作周期とＣＰＵ使用率の情報を取得する。
【０１３９】
ステップＳ１１０２において、ＣＰＵ割当設定部６１ｇは、割当テーブル６１ｅから分割資源の情報を取得する。ステップＳ１１０３において、ＣＰＵ割当設定部６１ｇは、取得した分割資源の情報に基づき、先頭の分割資源を割当対象資源とする。
【０１４０】
ステップＳ１１０４において、ＣＰＵ割当設定部６１ｇは、割当対象資源を割り当てるアプリを「アプリ割当選択基準」に従って選択し、割当テーブル６１ｅに登録する。
【０１４１】
ここでアプリ割当選択基準とは、複数のアプリに対して効率的に割当設定を行うことを目的とした、任意に決定できるアプリの割当選択基準である。具体的には、アプリ割当選択基準として以下のような基準１、２などが考えられる。
【０１４２】
基準１−１．分割資源が割当られる各アプリの動作周期において、必要量の資源の割当が完了していないアプリを選択し、ＣＰＵ資源を割り当てる。
基準１−２．割当対象の分割資源の設定時間帯から、各アプリの動作周期の終わりまでの期間が最も短いアプリを選択し、ＣＰＵ資源を割り当てる。
基準１−３．上記２つの選択基準を満たすアプリが複数存在する場合は、最も先に追加したアプリを選択しＣＰＵ資源を割り当てる。
【０１４３】
図１７はアプリ割当選択基準の説明に使用するアプリの設定例である。図１７において、たとえば１２０〜１３０ｍｓが割当対象の場合には、ＩｎｆｏＡｐ１とＩｎｆｏＡｐ２は動作周期内で指定したＣＰＵ使用率分の割当設定が完了していないため、選択基準（基準２−１）に合致する。
【０１４４】
また、たとえば１２０〜１３０ｍｓが割当対象の場合には、ＩｎｆｏＡｐ２よりＩｎｆｏＡｐ１の方が動作周期の終わりまでの期間が短いため、ＩｎｆｏＡｐ１が選択基準（基準２−２）に合致する。
【０１４５】
ステップＳ１１０５において、ＣＰＵ割当設定部６１ｇは、最後の分割資源まで割当設定が完了したか否か判定する。割当設定が最後の分割資源まで完了したと判定されたとき、ステップＳ１１０６に移行する。
【０１４６】
ＣＰＵ割当設定部６１ｇは、ステップＳ１１０５において割当設定が最後の分割資源まで完了していないと判定されたとき、ステップＳ１１０７に移行して次の分割資源を割当対象資源とし、ステップＳ１１０４に戻る。
【０１４７】
ステップＳ１１０６において、ＣＰＵ割当設定部６１ｇは全てのアプリが要求するＣＰＵ使用率を割り当てることができたか否か判定する。全ての割当設定が完了したと判定する場合には、ＣＰＵ割当設定部６１ｇはＣＰＵ資源の割当設定の処理を終える。
【０１４８】
ＣＰＵ割当設定部６１ｇは、全ての割当設定が完了していないと判定する場合は全ての割当設定が完了せずにアプリへの割当設定が失敗したと判断し、これまでの一連の処理で作成中のアプリ割当テーブルを削除する。
【０１４９】
このように、本発明のＣＰＵ資源管理システムのＣＰＵ資源割当設定部６１は、制御アプリとアプリが混在して動作する場合であっても、アプリの処理に必要なＣＰＵ資源を割り当てることができる。
【０１５０】
また、制御アプリ動作中に制御アプリの処理に影響を与えることなく、アプリの追加・削除を行うことができる。
【０１５１】
なお、本発明に係るＣＰＵ資源割当設定部６１は、アプリへの割当基準を任意に決定することができるため、たとえば分割資源毎に動作周期の終わりが近いアプリを優先して割り当てる方法を用いることで、ＣＰＵ資源を効率よく利用できる。
【０１５２】
また、上述のＣＰＵ資源割当設定部６１は、制御アプリの動作時間帯を事前に把握できることを前提としているが、制御アプリが次の条件を満たす場合には、動作周期毎のＣＰＵ使用率のみを把握することによりＣＰＵ資源を割り当てるものであってもよい。
条件１：全ての制御アプリの動作周期が一致する。
条件２：定周期処理が各周期の先頭で実行待ち状態となり、ＣＰＵ資源が割り当てられ次第、処理が開始される。
【０１５３】
この場合には、ＣＰＵ資源割当設定部６１は、各制御アプリのスケジューリング周期とＣＰＵ使用率の情報を保持する制御アプリ登録テーブルを有する。図１８はＣＰＵ資源割当設定部６１が動作周期毎のＣＰＵ使用率のみによりＣＰＵ資源を割り当てる動作の説明図、図１９は制御アプリ登録テーブルに記憶される情報の他の例である。
【０１５４】
制御アプリ６２ａ〜ｃは、たとえば図１８のように動作周期（たとえば１００ｍｓ）が一致し（条件１）、制御アプリ６２ａが制御アプリ６２ｂ、制御アプリ６２ｃの各処理が各周期の先頭で実行待ち状態となり、ＣＰＵ資源が割り当てられ次第処理が開始される（条件２）ことにより、上述の条件１、２を満たす。
【０１５５】
これらの条件を満たすと、ＣＰＵ資源割当設定部６１の割当テーブル作成部６１ｆは、制御アプリのスケジューリング周期毎に周期の開始時点からＣＰＵ使用率分の時間（たとえば、図１９では５０ｍｓ（スケジューリング周期（１００ｍｓ）のＣＰＵ使用率分（５０％）））までを除いた時間帯を、ＣＰＵ制御周期内のアプリへ割当可能な資源として各アプリに対して上述した一連の資源割当処理を行う。
【０１５６】
これにより、ＣＰＵ資源割当設定部６１は、制御アプリの動作時間帯を把握する必要がなくなり、代わりに比較的容易に把握できるＣＰＵ使用率のみを用いるため、比較的容易にＣＰＵ資源を割り当てることができる。
【０１５７】
このため本発明のＣＰＵ資源管理システムは、制御アプリとアプリがＣＰＵ資源の利用で競合した場合、制御アプリをアプリより優先的に動作させるようにＣＰＵ資源を割り当てることができる。
【０１５８】
また、本発明のＣＰＵ資源管理システムは、時間的制約を有するアプリが他のアプリの動作の影響を受けずに処理を実行することを保障できる。
【０１５９】
以上説明したように、本発明のＣＰＵ資源管理システムは、他のアプリの動作の影響を受けずに時間的制約のあるアプリの処理を保障することができ、制御アプリとアプリとのＣＰＵ資源の競合を考慮して制御アプリをアプリより優先的に動作させるようにＣＰＵ資源を割り当てることができる。
【図面の簡単な説明】
【０１６０】
【図１】本発明に係るＣＰＵ資源管理システムの一実施例を示す説明図である。
【図２】ＣＰＵ資源の分割を行う動作を説明する動作フロー図である。
【図３】イベント応答アプリの応答要求時間を割当周期に設定した場合におけるＣＰＵ資源の割り当て状況の説明図である。
【図４】ＣＰＵ資源の割当設定を行う動作を説明する動作フロー図である。
【図５】アプリ要求資源テーブルおよび割当情報テーブルの一例を示す説明図である。
【図６】ＣＰＵ資源の割当設定を行う動作を説明する動作フロー図である。
【図７】ＣＰＵ資源の割り当て状況を説明する説明図である。
【図８】ＣＰＵ資源の割当設定を行う動作を説明する動作フロー図である。
【図９】残りのＣＰＵ資源を活用するＣＰＵ資源管理システムの機能ブロック図である。
【図１０】図９のＣＰＵ資源管理システムの動作フロー図である。
【図１１】ＣＰＵ資源管理システムのその他の実施例を示す説明図である。
【図１２】各制御アプリの動作時間帯の説明図である。
【図１３】ＣＰＵ資源の割当設定を行う動作を説明するフロー図である。
【図１４】各種テーブルに記憶される情報の一例である。
【図１５】ＣＰＵ資源の割当設定を行う動作を説明するフロー図である。
【図１６】ＣＰＵ資源の割当設定を行う動作を説明するフロー図である。
【図１７】アプリ割当選択基準の説明に使用するアプリの設定例である。
【図１８】ＣＰＵ使用率によりＣＰＵ資源を割り当てる動作の説明図である。
【図１９】制御アプリ登録テーブルに記憶される情報の他の例である。
【図２０】従来のＣＰＵ資源管理システムの機能ブロック例図である。
【図２１】ＣＰＵの使用状況を説明する説明図である。
【符号の説明】
【０１６１】
５００  ＣＰＵ
５４１、５４２、５４３、５４４、５４５  アプリ
５１０  ＣＰＵ使用率制御部
５１１  ＣＰＵ割当設定部
５１２  割当テーブル作成部
５１３  割当テーブル
５１４  アプリ要求資源テーブル
５１５  ＣＰＵ割当処理部
５１６  要求受付部
５２０  ｔｉｃｋ通知部
５３０  アプリ実行制御部
５５０  優先度制御部
６０  ハードウェア
６１  ＣＰＵ資源割当設定部
６１ａ  制御アプリ登録部
６１ｂ  アプリ要求受付部
６１ｃ  アプリ登録テーブル
６１ｄ  制御アプリ登録テーブル
６１ｅ  割当テーブル
６１ｆ  割当テーブル作成部
６１ｇ  ＣＰＵ割当設定部
６２ａ〜ｃ  制御アプリ
６３ａ〜ｃ  アプリ
７０  ｔｉｃｋ通知部
【図１】
2009146379.tif 000003
【図２】
2009146379.tif 000004
【図３】
2009146379.tif 000005
【図４】
2009146379.tif 000006
【図５】
2009146379.tif 000007
【図６】
2009146379.tif 000008
【図７】
2009146379.tif 000009
【図８】
2009146379.tif 000010
【図９】
2009146379.tif 000011
【図１０】
2009146379.tif 000012
【図１１】
2009146379.tif 000013
【図１２】
2009146379.tif 000014
【図１３】
2009146379.tif 000015
【図１４】
2009146379.tif 000016
【図１５】
2009146379.tif 000017
【図１６】
2009146379.tif 000018
【図１７】
2009146379.tif 000019
【図１８】
2009146379.tif 000020
【図１９】
2009146379.tif 000021
【図２０】
2009146379.tif 000022
【図２１】
2009146379.tif 000023