(57)【要約】      （修正有）【課題】非周期プロセスとの干渉による周期性の乱れを抑えることができるプロセススケジューリング装置の提供。【解決手段】複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置であって，プロセス初期配置部と，各ＣＰＵ用のスケジュール管理部と，各ＣＰＵ用のプロセス動作計測部と，各ＣＰＵ用の周期プロセス検出部と，プロセス配置変更部とを備え，プロセス初期配置部は，複数のプロセスを１又は複数のＣＰＵに初期配置し，スケジュール管理部は，担当するＣＰＵに初期配置されたプロセスを繰り返し実行し，プロセス動作計測部の前期プロセスの計時データから，前記プロセスが周期プロセスであるか否かを判断し，周期プロセスであると判断したプロセスを周期プロセス専用のＣＰＵに配置変更を行う。【選択図】図２
2007328441.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置であって，
プロセス初期配置部と，各ＣＰＵ用のスケジュール管理部と，各ＣＰＵ用のプロセス動作計測部と，各ＣＰＵ用の周期プロセス検出部と，プロセス配置変更部とを備え，
プロセス初期配置部は，複数のプロセスを１又は複数のＣＰＵに初期配置し，
スケジュール管理部は，担当するＣＰＵに初期配置されたプロセスを繰り返し実行し，プロセス動作計測部は，前記スケジュール管理部が前記プロセスを実行する度にその計時データを記録し，周期プロセス検出部は，プロセス動作計測部が記録した計時データから前記プロセスが周期プロセスであるか否かを判断し，
プロセス配置変更部は，周期プロセス検出部が周期プロセスであると判断したプロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行うプロセススケジューリング装置。
【請求項２】
周期プロセスグループ検出部をさらに備え，
周期プロセスグループ検出部は，複数の周期プロセスのうち，同一周期のものをグループ化し，
プロセス配置変更部は，グループ単位でプロセスの配置変更を行う請求項１に記載の装置。
【請求項３】
プロセス配置変更部は，優先順位の高いグループから順にグループ専用のＣＰＵを割り当て，グループ専用のＣＰＵが割り当てられたグループに所属する周期プロセスが，そのグループ専用のＣＰＵで実行されるようにプロセスの配置変更を行う請求項２に記載の装置。
【請求項４】
プロセス配置変更部は，プロセスの配置変更後に各ＣＰＵで実行されるプロセスの総実行時間が実質的に均一になるようにプロセスの配置変更を行う請求項１に記載の装置。
【請求項５】
周期プロセス検出部は，プロセス動作計測部が記録した計時データのうち基準内のもののみを用いて前記プロセスが周期プロセスであるか否かを判断する請求項１に記載の装置。
【請求項６】
プロセス配置変更部は，プロセス配置変更の結果を保存し，
プロセス初期配置部は，次回以降に，この結果を参照して，プロセス初期配置を行う請求項１に記載の装置。
【請求項７】
コンピュータを，
複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置であって，
プロセス初期配置部と，各ＣＰＵ用のスケジュール管理部と，各ＣＰＵ用のプロセス動作計測部と，各ＣＰＵ用の周期プロセス検出部と，プロセス配置変更部を備え，
プロセス初期配置部は，複数のプロセスを１又は複数のＣＰＵに初期配置し，
スケジュール管理部は，担当するＣＰＵに初期配置されたプロセスを繰り返し実行し，プロセス動作計測部は，前記スケジュール管理部が前記プロセスを実行する度にその計時データを記録し，周期プロセス検出部は，プロセス動作計測部が記録した計時データから前記プロセスが周期プロセスであるか否かを判断し，
プロセス配置変更部は，周期プロセス検出部が周期プロセスであると判断したプロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行うプロセススケジューリング装置，
として機能させるプロセススケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置，及びコンピュータをこのようなプロセススケジューリング装置として機能させるプロセススケジューリングプログラムに関する。
【背景技術】
【０００２】
近年，複数のＣＰＵを用いて複数のプロセスを実行するコンピュータシステムが採用されてきている（例えば，特許文献１を参照）。
このようなコンピュータシステムで実行されるプロセスには，周期プロセスと非周期プロセスとがある。周期プロセスは，例えば，車両に搭載されたセンサーの情報を定期的に取得し，解析する処理を行うプロセスであり，非周期プロセスは，例えば，ボタン操作に対する処理を行うプロセスである。
非周期プロセスは，実行されるタイミングが決まっていないので，周期プロセスが周期的に実行されるタイミングの直前に，非周期プロセスが実行されると，周期プロセスの周期性が乱されることがある。
【特許文献１】特開平７−１１４５１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
周期プロセスの中には周期性を確保することが重要なものもあり，その場合，非周期プロセスとの干渉による周期性の乱れが問題となる場合ある。
【０００４】
本発明はこのような事情に鑑みてなされたものであり，非周期プロセスとの干渉による周期性の乱れを抑えることができるプロセススケジューリング装置を提供するものである。
【課題を解決するための手段及び発明の効果】
【０００５】
本発明によれば，複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置であって，プロセス初期配置部と，各ＣＰＵ用のスケジュール管理部と，各ＣＰＵ用のプロセス動作計測部と，各ＣＰＵ用の周期プロセス検出部と，プロセス配置変更部とを備え，プロセス初期配置部は，複数のプロセスを１又は複数のＣＰＵに初期配置し，スケジュール管理部は，担当するＣＰＵに初期配置されたプロセスを繰り返し実行し，プロセス動作計測部は，前記スケジュール管理部が前記プロセスを実行する度にその計時データを記録し，周期プロセス検出部は，プロセス動作計測部が記録した計時データから前記プロセスが周期プロセスであるか否かを判断し，プロセス配置変更部は，周期プロセス検出部が周期プロセスであると判断したプロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行うプロセススケジューリング装置が提供される。
【０００６】
本発明では，周期プロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行うので，非周期プロセスの影響によって周期プロセスの周期性が阻害されるのを防ぐことができる。また，本発明では，プロセスを実際に実行させた結果に基づいて周期プロセスの検出を行うので，予め，どのプロセスが周期プロセスであるかを指定しなくても，確実に周期プロセスを検出することができる。
【発明を実施するための最良の形態】
【０００７】
本発明の一実施形態のプロセススケジューリング装置は，複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置であって，プロセス初期配置部と，各ＣＰＵ用のスケジュール管理部と，各ＣＰＵ用のプロセス動作計測部と，各ＣＰＵ用の周期プロセス検出部と，プロセス配置変更部とを備え，プロセス初期配置部は，複数のプロセスを１又は複数のＣＰＵに初期配置し，スケジュール管理部は，担当するＣＰＵに初期配置されたプロセスを繰り返し実行し，プロセス動作計測部は，前記スケジュール管理部が前記プロセスを実行する度にその計時データを記録し，周期プロセス検出部は，プロセス動作計測部が記録した計時データから前記プロセスが周期プロセスであるか否かを判断し，プロセス配置変更部は，周期プロセス検出部が周期プロセスであると判断したプロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行う。
【０００８】
好ましくは，周期プロセスグループ検出部をさらに備え，周期プロセスグループ検出部は，複数の周期プロセスのうち，同一周期のものをグループ化し，プロセス配置変更部は，グループ単位でプロセスの配置変更を行う。
この場合，同一周期の周期プロセスが必ず同じＣＰＵで実行されることになる。同一周期の周期プロセスは，互いに干渉し合うことなく順序よく実行されるので，周期プロセスの周期性を阻害することなく，より多くの周期プロセスを同一ＣＰＵで実行することができる。また，プロセスの実行順序を固定することによって，プロセスの選択にかかるスイッチングの処理時間を取り除くことができ，その結果，スループットを向上させることができる。
【０００９】
好ましくは，プロセス配置変更部は，優先順位の高いグループから順にグループ専用のＣＰＵを割り当て，グループ専用のＣＰＵが割り当てられたグループに所属する周期プロセスが，そのグループ専用のＣＰＵで実行されるようにプロセスの配置変更を行う。
この場合，特定のグループ専用のＣＰＵでは，同一周期のプロセスのみが実行されることになり，各周期プロセスの周期性をより確実に確保することができる。
【００１０】
好ましくは，プロセス配置変更部は，プロセスの配置変更後に各ＣＰＵで実行されるプロセスの総実行時間が実質的に均一になるようにプロセスの配置変更を行う。
この場合，ＣＰＵ間での負荷のばらつきが小さくなり，プロセスを効率的に実行することができる。
【００１１】
好ましくは，周期プロセス検出部は，プロセス動作計測部が記録した計時データのうち基準内のもののみを用いて前記プロセスが周期プロセスであるか否かを判断する。
プロセス動作計測部が記録した計時データには，他プロセスの干渉等によって発生する異常なデータが含まれていることがあり，この場合，このデータのために本来は周期プロセスであると判断されるべきプロセスが周期プロセスであると判断されない場合がある。本実施形態では，プロセス動作計測部が記録した計時データのうち基準内のもののみを用いることによって，より確実に周期プロセスの検出を行うことができる。
【００１２】
好ましくは，プロセス配置変更部は，プロセス配置変更の結果を保存し，プロセス初期配置部は，次回以降に，この結果を参照して，プロセス初期配置を行う。
この場合，プロセス初期配置部は，より適切に，プロセスの初期配置を行うことが可能となる。
【００１３】
ところで，本発明は，コンピュータを，複数のＣＰＵを用いて複数のプロセスを実行する際のスケジューリングを行うプロセススケジューリング装置であって，プロセス初期配置部と，各ＣＰＵ用のスケジュール管理部と，各ＣＰＵ用のプロセス動作計測部と，各ＣＰＵ用の周期プロセス検出部と，プロセス配置変更部を備え，プロセス初期配置部は，複数のプロセスを１又は複数のＣＰＵに初期配置し，スケジュール管理部は，担当するＣＰＵに初期配置されたプロセスを繰り返し実行し，プロセス動作計測部は，前記スケジュール管理部が前記プロセスを実行する度にその計時データを記録し，周期プロセス検出部は，プロセス動作計測部が記録した計時データから前記プロセスが周期プロセスであるか否かを判断し，プロセス配置変更部は，周期プロセス検出部が周期プロセスであると判断したプロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行うプロセススケジューリング装置，として機能させるプロセススケジューリングプログラムも提供する。
このようなプログラムをコンピュータにインストールすることによって，そのコンピュータを本発明のプロセススケジューリング装置として機能させることができる。このプログラムは，記録媒体に記録された状態で提供されてもよく，ネットワークを介してサーバーからダウンロードする形態で提供されてもよい。このプログラムは，一例では，本明細書で説明されるプロセススケジューリング方式でのプロセススケジューリング機能を提供するオペレーティングシステムプログラムである。
上記プロセススケジューリング装置についての説明は，このプロセススケジューリングプログラムについても当てはまる。
【００１４】
以下，本発明の一実施形態を図面を用いて説明する。図面や以下の記述中で示す構成は，例示であって，本発明の範囲は，図面や以下の記述中で示すものに限定されない。
【００１５】
１．ハードウエア構成
本実施形態のプロセススケジューリング装置（別の表現では，本実施形態で説明されるプロセススケジューリング方式でのプロセススケジューリング機能を有するコンピュータシステム）のハードウエア構成について説明する。図１は，本実施形態のプロセススケジューリング装置のハードウエア構成を示すブロック図である。
【００１６】
図１に示すように，本実施形態のプロセススケジューリング装置１は，第１ＣＰＵ３ａ及び第２ＣＰＵ３ｂからなるＣＰＵ群３と，主記憶部５と，補助記憶部６と，時計デバイス７を備える。
【００１７】
ＣＰＵ群３の各ＣＰＵ（第１ＣＰＵ３ａ，第２ＣＰＵ３ｂ）には，一般的なＣＰＵを用いることができる。本実施形態では，説明の便宜上，ＣＰＵ群３のＣＰＵ数は，２つにしているが，ＣＰＵの数は，３つ以上であってもよい。
【００１８】
主記憶部５には，例えば，ＲＡＭであり，ＣＰＵ群３が，補助記憶部６に記憶されているプログラムに基づいて種々の処理を行う際の記憶領域として用いられる。なお，主記憶部がＣＰＵ毎に設けられる構成であってもよい。
【００１９】
補助記憶部６は，例えば，ハードディスクやＲＯＭであり，本実施形態のプロセススケジューリング装置を実現するためのプロセススケジューリングプログラムや，本実施形態のプロセススケジューリング装置で動作する種々のプロセスを発生させるプログラム等を格納している。
【００２０】
時計デバイス７は，現在時刻を保持し，要求に応じて現在時刻を提供する機能を有する。「現在時刻」は，絶対時刻（通常の時計が示す時刻）であってもよく，相対時刻（リセットされてからの経過時間を示す時刻）であってもよい。
【００２１】
２．機能ブロック構成
プロセススケジューリング装置１は，機能面からは，図２に示すような構成を有している。図２は，プロセススケジューリング装置１の機能ブロック構成を示すブロック図である。
【００２２】
図２に示すように，プロセススケジューリング装置１は，機能面からは，プロセス初期配置部１１と，第１及び第２ＣＰＵ用のタイマ管理部２１及び３１と，第１及び第２ＣＰＵ用のスケジュール管理部２３及び３３と，第１及び第２ＣＰＵ用のプロセス動作計測部２５及び３５と，第１及び第２ＣＰＵ用の周期プロセス検出部２７及び３７と，第１及び第２ＣＰＵ用のイベント管理部２９及び３９と，周期プロセスグループ検出部４１と，プロセス配置変更部４３とを有する。
【００２３】
以下，各構成について詳細に説明する。
【００２４】
２−１．プロセス初期配置部
プロセス初期配置部１１は，プロセススケジューリング装置１で実行される複数のプロセスを１又は複数のＣＰＵに初期配置する機能を有する。初期配置の方法は，特に限定されない。
【００２５】
プロセス初期配置部１１は，一例では，プログラム起動リスト及びプロセス起動待機リストを利用してプロセスの初期配置を行うために種々の処理を行う。これらの処理の具体的な内容は，後述する。
また，プロセス配置変更部４３がプロセス配置変更の結果を保存しているときは，プロセス初期配置部１１は，この結果を参照して，プロセス初期配置を行ってもよい。
【００２６】
２−２．タイマ管理部
タイマ管理部は，ＣＰＵの数だけ設けられる。各ＣＰＵ用のタイマ管理部は，設定時間が経過したときに種々の処理を行う機能を有している。
【００２７】
各ＣＰＵ用のタイマ管理部は，一例では，起動プロセスリストと，タイマ待機プロセスリストと，計測期間終了時刻設定領域において設定された時間が経過したときに種々の処理を行う。これらの処理の具体的な内容は，後述する。
なお，本実施形態では，ＣＰＵ数が２つなので，第１及び第２ＣＰＵ用のタイマ管理部２１，３１が設けられている。
【００２８】
２−３．スケジュール管理部
スケジュール管理部は，ＣＰＵの数だけ設けられる。各ＣＰＵ用のスケジュール管理部は，担当するＣＰＵに配置された複数のプロセスを切り替えながら次々に実行する機能を有する。プロセスを切り替えながら次々に実行するときの具体的な処理は，特に限定されない。
【００２９】
各ＣＰＵ用のスケジュール管理部は，一例では，実行可能プロセスキューと，待機プロセスキューと，実行保存領域とを利用してプロセスを繰り返し実行するための種々の処理を行う。これらの処理の具体的な内容は，後述する。
なお，本実施形態では，ＣＰＵ数が２つなので，第１及び第２ＣＰＵ用のスケジュール管理部２３及び３３が設けられている。
【００３０】
２−４．プロセス動作計測部
プロセス動作計測部は，ＣＰＵの数だけ設けられる。各ＣＰＵ用のプロセス動作計測部は，担当するＣＰＵ用のスケジュール管理部がプロセスを実行する度にその計時データ（例：開始時刻）を記録する機能を有する。プロセス動作計測部がプロセス実行の計時データを記録するときの具体的な処理方法や，記録の形式は特に限定されない。
また，各ＣＰＵ用のプロセス動作計測部は，好ましくは，計時データとして，プロセス実行の開始時刻に加えて，プロセス実行の終了時刻又はプロセスの実行時間も記録する。この場合，周期プロセス検出部は，プロセス実行の開始時刻間隔のずれ幅及び実行時間のずれ幅に基づいて周期プロセスであるか否かの判断を行うことができ，精度向上に寄与する。
【００３１】
各ＣＰＵ用のプロセス動作計測部は，一例では，プロセス動作計測記録リストとプロセス集計情報保持リストにプロセス実行の開始時刻，終了時刻，総実行時間（各回の実行時間の合計）及び実行回数を記録するために種々の処理を行う。これらの処理の具体的な内容は，後述する。
なお，本実施形態では，ＣＰＵ数が２つなので，第１及び第２ＣＰＵ用のプロセス動作計測部２５及び３５が設けられている。
【００３２】
２−５．周期プロセス検出部
周期プロセス検出部は，ＣＰＵの数だけ設けられる。各ＣＰＵ用の周期プロセス検出部は，担当するＣＰＵ用のプロセス動作計測部が記録した計時データから，判断対象のプロセスが周期プロセスであるか否かを判断する機能を有する。周期プロセス検出部が判断を行うときの具体的な処理方法は，特に限定されない。一例では，周期プロセス検出部は，繰り返し実行されるプロセスの開始時刻間隔の平均値からのズレが基準内である場合に，そのプロセスが周期プロセスであると判断する。また，より精密な判断方法では，周期プロセス検出部は，繰り返し実行されるプロセスの実行時間の平均値からのズレが基準内であるか否かも判断し，開始時刻間隔の平均値からのズレと，実行時間の平均値からのズレの両方がそれぞれの基準内である場合に，そのプロセスが周期プロセスであると判断する。
各ＣＰＵ用の周期プロセス検出部は，好ましくは，プロセス動作計測部が記録した計時データのうち基準内（例：平均値からのズレの絶対値が１０％以内）のもののみを用いて前記プロセスが周期プロセスであるか否かを判断する。この場合，非周期プロセスとの干渉等の影響を小さくすることができ，判断の精度が向上する。
【００３３】
各ＣＰＵ用の周期プロセス検出部は，一例では，プロセス動作計測記録リストとプロセス集計情報保持リストを利用して判断対象のプロセスが周期プロセスであるか否かを判断し，その結果に基づき周期プロセスリストを作成するために種々の処理を行う。これらの処理の具体的な内容は，後述する。
なお，本実施形態では，ＣＰＵ数が２つなので，第１及び第２ＣＰＵ用の周期プロセス検出部２７及び３７が設けられている。
【００３４】
２−６．イベント管理部
イベント管理部は，ＣＰＵの数だけ設けられる。各ＣＰＵ用のイベント管理部は，外部からの刺激があったとき（例：センサーが音声を検知したとき，スイッチが押下されたとき）などに，種々の処理を行う機能を有している。
【００３５】
イベント管理部は，一例では，外部からの刺激があったときにスケジュール管理部にプロセスの再開処理を依頼する処理を行う。この処理の具体的な内容は，後述する。
なお，本実施形態では，ＣＰＵ数が２つなので，第１及び第２ＣＰＵ用のイベント管理部２９及び３９が設けられている。
【００３６】
２−７．周期プロセスグループ検出部
周期プロセスグループ検出部４１は，複数の周期プロセスのうち，実質的に同一周期のものをグループ化する機能を有する。グループ化の具体的な方法は，特に限定されない。
【００３７】
周期プロセスグループ検出部４１は，一例では，各ＣＰＵ用の周期プロセス検出部が作成した周期プロセスリストを結合させて周期プロセス結合リストを作成し，このリストを利用して周期プロセスのグループ化を行い，その結果に基づき周期プロセスグループリストを作成するために種々の処理を行う。これらの処理の具体的な内容は，後述する。
【００３８】
２−８．プロセス配置変更部
プロセス配置変更部４３は，各ＣＰＵ用の周期プロセス検出部が周期プロセスであると判断したプロセスが周期プロセス専用のＣＰＵで実行されるようにプロセスの配置変更を行う機能を有する。プロセスの配置変更の具体的な方法は，特に限定されない。
プロセス配置変更部４３は，好ましくは，グループ単位でプロセスの配置変更を行う。また，プロセス配置変更部４３は，好ましくは，優先順位の高いグループから順にグループ専用のＣＰＵを割り当て，グループ専用のＣＰＵが割り当てられたグループに所属する周期プロセスが，そのグループ専用のＣＰＵで実行されるようにプロセスの配置変更を行う。また，プロセス配置変更部は，好ましくは，プロセスの配置変更後に各ＣＰＵで実行されるプロセスの総実行時間が実質的に均一になるようにプロセスの配置変更を行う。また，プロセス配置変更部４３は，好ましくは，プロセス配置変更の結果を保存する。
【００３９】
プロセス配置変更部４３は，一例では，周期プロセスグループ検出部４１から周期プロセスグループリストを取得し，このリスト中の優先順位の高いグループに所属するプロセスが周期プロセス専用のＣＰＵで実行されるように配置変更を行い，その結果に基づいてプロセス配置リストを作成するために種々の処理を行う。これらの処理の具体的な内容は，後述する。
【００４０】
３．プロセススケジューリング処理の説明
以下，本実施形態のプロセススケジューリング装置１によるプロセススケジューリング処理について説明する。
【００４１】
まず，プロセススケジューリング処理の詳細な内容の説明に入る前に，図２Ａ及び図２Ｂを用いて，プロセススケジューリング処理の概要について説明する。図２Ａは，プロセス配置変更処理の前後のプロセス配置を示す概念図であり，図２Ｂは，プロセススケジューリング処理の全体の流れを示すフローチャートである。
【００４２】
図２Ａのプロセス配置変更処理前のプロセス配置を参照すると，第１ＣＰＵで実行されるプロセス，第２ＣＰＵで実行されるプロセスの何れにも，下線部が引かれたプロセスと引かれていないプロセスとが含まれていることが分かる。下線部が引かれたプロセスは，周期プロセスを表し，下線部が引かれていないプロセスは，非周期プロセスを表している。従って，プロセス配置変更処理前には，第１ＣＰＵ及び第２ＣＰＵの何れにおいても，周期プロセスと非周期プロセスの両方が実行される。この場合に，周期プロセスの周期性が非周期プロセスとの干渉によって乱されることがあるという問題がある点については，上述した通りである。
【００４３】
このような問題を解決するために，本実施形態のプロセススケジューリング処理では，図２Ａのプロセス配置変更処理後のプロセス配置のように，一方のＣＰＵ（第１ＣＰＵ）を周期プロセス専用のＣＰＵとし，周期プロセスが周期プロセス専用のＣＰＵで実行されるようにプロセス配置変更処理を行う。これによって，周期プロセスの周期性が非周期プロセスとの干渉によって乱されることがあるという問題が解決される。
【００４４】
次に，図２Ｂのフローチャートを用いて，本実施形態のプロセススケジューリング処理の全体の流れを説明する。
【００４５】
まず，プロセス初期配置部１１，スケジュール管理部２３等のプロセススケジューリング処理に関係する具体的な処理を行う各部を全て起動する（ステップＳ１）。
【００４６】
次に，プロセスの初期配置に関係する処理を行う（ステップＳ２）。この処理は，主に，プロセス初期配置部１１と第１ＣＰＵ用のタイマ管理部２１によって行われる。
【００４７】
次に，周期プロセスの検出に用いる計時データの取得に関係する処理を行う（ステップＳ３）。この処理は，主に，第１及び第２ＣＰＵ用のスケジュール管理部２３及び３３，第１及び第２ＣＰＵ用のタイマ管理部２１及び３１，第１及び第２ＣＰＵ用のイベント管理部２９及び３９によってプロセスが繰り返し実行され，その度に第１及び第２ＣＰＵ用のプロセス動作計測部２５及び３５がその計時データを記録することによって行われる。
【００４８】
次に，周期プロセスの検出に関係する処理を行う（ステップＳ４）。この処理は，主に，第１及び第２ＣＰＵ用の周期プロセス検出部２７及び３７によって行われる。
【００４９】
次に，プロセスの配置変更に関係する処理を行う（ステップＳ５）。この処理は，主に，周期プロセスグループ検出部４１と，プロセス配置変更部４３とによって行われる。
【００５０】
最後に，プロセス配置変更処理後のＣＰＵでのプロセスの実行に関係する処理を行う（ステップＳ４）。この処理は，主に，第１及び第２ＣＰＵ用のスケジュール管理部２３及び３３，第１及び第２ＣＰＵ用のタイマ管理部２１及び３１，第１及び第２ＣＰＵ用のイベント管理部２９及び３９によって行われる。
以下，各工程について，詳細に説明する。
【００５１】
３−１．プロセス初期配置部，スケジュール管理部等の各部の起動に関係する処理（ステップＳ１）
まず，プロセス初期配置部，スケジュール管理部等の各部の起動に関係する処理について説明する。
３−１−１．起動処理の説明
まず，プロセススケジューリング装置１の電源がＯＮにされると，第１ＣＰＵ３ａ及び第２ＣＰＵ３ｂは，補助記憶部６からプロセススケジューリングプログラムを主記憶部５に読み出し，プロセス初期配置部１１と，第１及び第２ＣＰＵ用のタイマ管理部２１及び３１と，第１及び第２ＣＰＵ用のスケジュール管理部２３及び３３と，第１及び第２ＣＰＵ用のプロセス動作計測部２５及び３５と，第１及び第２ＣＰＵ用の周期プロセス検出部２７及び３７と，第１及び第２ＣＰＵ用のイベント管理部２９及び３９と，周期プロセスグループ検出部４１と，プロセス配置変更部４３とを起動する。
【００５２】
第１ＣＰＵ用のタイマ管理部２１と，第２ＣＰＵ用のタイマ管理部３１は，対象とするＣＰＵが異なるが，動作は同じである。スケジュール管理部２３及び３３，プロセス動作計測部２５及び３５，周期プロセス検出部２７及び３７についても同様である。従って，以下，基本的に，第１ＣＰＵ用の，タイマ管理部２１と，スケジュール管理部２３と，プロセス動作計測部２５と，周期プロセス検出部２７を例にとって説明を進める。
【００５３】
３−１−２．プロセス初期配置部１１以外の各部の動作の簡単な説明
プロセス初期配置部１１以外の各部は，起動された後，種々の判断処理を繰り返し行い，判断処理の結果がＹになったときに種々の処理を行う。
【００５４】
以下，図３〜図５，図１９，図２２及び図２３のフローチャートを用いて，各部の判断処理について簡単に説明する。各フローチャート中の処理の詳細な内容については，後述する。
【００５５】
図３に示すように，タイマ管理部２１は，ステップＳＡ１〜ステップＳＡ６において，処理依頼の有無や処理開始条件成立の有無について判断を繰り返し行い，何れかのステップでの判断結果がＹになれば，ステップＳＡ７〜ステップＳＡ１２のうちの対応する処理を行う。
【００５６】
図４に示すように，スケジュール管理部２３は，ステップＳＢ１〜ステップＳＢ４において，処理依頼の有無について判断を繰り返し行い，何れかのステップでの判断結果がＹになれば，ステップＳＢ５〜ステップＳＢ８のうちの対応する処理を行う。
【００５７】
図５に示すように，プロセス動作計測部２５は，ステップＳＣ１〜ステップＳＣ３において，処理依頼の有無について判断を繰り返し行い，何れかのステップでの判断結果がＹになれば，ステップＳＣ４〜ステップＳＣ６のうちの対応する処理を行う。
【００５８】
図１９に示すように，周期プロセス検出部２７は，ステップＳＳ１において処理依頼の有無ついての判断を繰り返し行い，判断結果がＹになれば，ステップＳＳ２以降の処理を行う。
【００５９】
図２２に示すように，周期プロセスグループ検出部４１は，ステップＳＶ１において処理依頼の有無についての判断を繰り返し行い，判断結果がＹになれば，ステップＳＶ２以降の処理を行う。
【００６０】
図２３に示すように，プロセス配置変更部４３は，ステップＳＷ１において処理依頼の有無ついての判断を繰り返し行い，判断結果がＹになれば，ステップＳＷ２以降の処理を行う。
【００６１】
なお、図３〜図５、図１９、図２２及び図２３の繰り返し処理は、例えばタイマ割り込みを利用して定期的に繰り返される(例えば１ｍｓごとに繰り返す)ように構成してもよい。
【００６２】
３−２．プロセスの初期配置に関係する処理（ステップＳ２）
次に，図６のフローチャートを用いて，プロセスの初期配置に関係する処理について説明する。
【００６３】
３−２−１．プロセス準備処理の説明
プロセス初期配置部１１は，起動されるとすぐに，プロセス準備処理を行う（ステップＳＤ１）。
【００６４】
ここで，図７のフローチャートを用いて，ステップＳＤ１のプロセス準備処理について詳細に説明する。
【００６５】
まず，プロセス初期配置部１１は，補助記憶部６から表１に示すプログラム起動リストを主記憶部５に読み出し，このリストの１行を読み取り（図７のステップＳＥ１），この行のプログラムについてプロセスを生成し，このプロセスに対してプロセスＩＤを付与し，このプロセスのために主記憶部５に必要な領域を確保する（ステップＳＥ２）。確保した領域の主記憶部５での配置を示す情報を「主記憶部配置情報」と呼ぶ。表１の場合，まず，「プログラム名ａ」についてのプロセスが生成される。
【表１】
2007328441.tif 000003
【００６６】
次に，プロセス初期配置部１１は，表２に示すように，プロセスＩＤ，プログラム名及び主記憶部配置情報を，ＣＰＵレジスタ情報とステータス情報の初期値と共にプロセス起動待機リストに登録する（ステップＳＥ３）。プロセス起動待機リストでは，プロセスＩＤ，プログラム名，主記憶部配置情報，ＣＰＵレジスタ情報及びステータス情報が互いに対応付けられて登録されており，この対応付けられた情報をまとめて「プロセスコンテキスト」と呼ぶ。
【表２】
2007328441.tif 000004
【００６７】
次に，プロセス初期配置部１１は，タイマ管理部２１に，起動プロセスリストにプロセスＩＤと起動時刻を登録することを依頼する（ステップＳＥ４）。タイマ管理部２１は，プロセス初期配置部１１からの依頼を受領すると（図３のステップＳＡ１のＹ），表３に示すように，プロセス初期配置部１１から受領したプロセスＩＤと起動時刻を，起動プロセスリストに登録する（ステップＳＡ７）。
【表３】
2007328441.tif 000005
【００６８】
次に，プロセス初期配置部１１は，補助記憶部６からプログラムを主記憶部５に読み込む（ステップＳＥ５）。
【００６９】
次に，プロセス初期配置部１１は，プログラム起動リストに未処理行が残っているか否かを確認し（ステップＳＥ６），未処理行がある場合（ステップＳＥ６のＹ）には，ステップＳＥ１に戻り，次の行を読み込み，ステップＳＥ２〜ステップＳＥ６の処理を繰り返す。未処理行がない場合（ステップＳＥ６のＮ）には，プロセス準備処理を終了する。
【００７０】
ここまでの処理によって，プログラム起動リストの全ての行のプログラムについて生成されたプロセスが，プロセス起動待機リスト及び起動プロセスリストに登録され，表４及び表５のようなリストが得られる。
【表４】
2007328441.tif 000006
【００７１】
【表５】
2007328441.tif 000007
【００７２】
３−２−２．タイマ管理部へ初期化処理を依頼する処理の説明
次に，図６のフローチャートに戻り，プロセス初期配置部１１は，タイマ管理部２１に，初期化処理を依頼する（ステップＳＤ２）。タイマ管理部２１は，プロセス初期配置部１１からの依頼を受領すると（図３のステップＳＡ２のＹ），初期化処理を行う（ステップＳＡ８）。
【００７３】
ここで，図８のフローチャートを用いて，ステップＳＡ８の初期化処理について説明する。
【００７４】
まず，タイマ管理部２１は，表６に示すように，計測期間終了時刻を設定する（ステップＳＦ１）。計測期間終了時刻とは，周期プロセスの検出に用いる計時データの取得のためにプロセスを繰り返し起動させる期間を終了させる時刻である。
【表６】
2007328441.tif 000008
【００７５】
次に，タイマ管理部２１は，時計デバイス７の時刻を０にリセットし，タイマの稼動を開始させ（ステップＳＦ２），初期化処理を完了する。
【００７６】
３−２−３．プロセス初期配置処理の説明
次に，図６のフローチャートに戻り，プロセス初期配置部１１は，タイマ管理部２１に初期化処理を依頼した後，タイマ管理部２１からプロセス初期配置処理依頼を受領するまでは待機する（ステップＳＤ３のＮ）。
【００７７】
図３のフローチャートにおいて，タイマ管理部２１は，時計デバイス７の時刻が，起動プロセスリストの何れかの起動時刻に到達したかどうかの確認を繰り返し（ステップＳＡ３のＮ），到達した場合（ステップＳＡ３のＹ）には，到達した起動時刻に対応するプロセスＩＤを取得して，プロセス初期配置部１１に，このプロセスＩＤを通知してプロセス初期配置処理を依頼する（ステップＳＡ９）。プロセス初期配置処理の依頼は，時計デバイス７の時刻が起動プロセスリストの何れかの起動時刻に到達する度に行われる。
【００７８】
図６のフローチャートにおいて，プロセス初期配置部１１は，タイマ管理部２１からプロセスＩＤと共にプロセス初期配置処理の依頼を受領すると（ステップＳＤ３のＹ），プロセス初期配置処理を行う（ステップＳＤ４）。
【００７９】
ここで，図９のフローチャートを用いて，ステップＳＤ４のプロセス初期配置処理について説明する。
【００８０】
まず，プロセス初期配置部１１は，第１ＣＰＵ３ａの稼働率取得処理を行う（ステップＳＨ１）。
【００８１】
ここで，図１０のフローチャートを用いて，第１ＣＰＵ３ａの稼働率取得処理について説明する。
【００８２】
まず，プロセス初期配置部１１は，第１ＣＰＵ用のプロセス動作計測部２５に，ＣＰＵ稼働率の通知処理を依頼する（ステップＳＩ１）。
【００８３】
プロセス動作計測部２５は，この依頼を受領すると（図５のステップＳＣ１），ＣＰＵ稼働率通知処理を行う（ステップＳＣ４）。ＣＰＵ稼働率通知処理では，プロセス動作計測部２５は，まず，時計デバイス７から現在時刻を取得する（ステップＳＪ１）。次に，プロセス動作計測部２５は，第１ＣＰＵ用のプロセス動作計測記録リストから例えば過去１０ｍｓにおける実行時間を取得し（ステップＳＪ２），この実行時間を１０ｍｓで割って稼働率を算出し（ステップＳＪ３），この稼働率をプロセス初期配置部１１に通知する（ステップＳＪ４）。なお，現在時刻が１０ｍｓに到達していない場合（例えば，現在時刻が８ｍｓの場合）は，現在時刻までの実行時間から稼働率を算出する。
プロセス動作計測記録リストとは，ＣＰＵがプロセスを実行する度にプロセス動作計測部２５が，表７Ａに示すように，実行されたプロセスのプロセスＩＤ，開始時刻及び終了時刻を対応付けて記録することによって作成されるものである。プロセス動作計測記録リスト作成のための具体的な処理の内容は，後述する。
１つ目のプロセスについてのプロセス初期配置処理が行われる際には，プロセス動作計測記録リストには，まだ何も記録されていない。表７Ａでは，例えば現在時刻が８ｍｓである場合，すでに２つのプロセスが第１ＣＰＵで実行され，それぞれについての開始時刻及び終了時刻が記録された後の状態を示す。
【表７Ａ】
2007328441.tif 000009
【００８４】
プロセス初期配置部１１は，プロセス動作計測部２５から第１ＣＰＵ３ａの稼働率を受領し（ステップＳＩ２），稼働率取得処理を完了する。
【００８５】
次に，図９のフローチャートに戻り，プロセス初期配置部１１は，第２ＣＰＵ３ｂの稼働率取得処理を行う（ステップＳＨ２）。第２ＣＰＵ３ｂの稼働率取得処理は，基本的に，ステップＳＨ１と同様の方法で行われる。但し，図１０のステップＳＩ１では，プロセス初期配置部１１は，第２ＣＰＵ用のプロセス動作計測部３５にＣＰＵ稼働率の通知処理を依頼し，第２ＣＰＵ用のプロセス動作計測部３５は，第２ＣＰＵ用のプロセス動作計測記録リストから稼働率を算出し，この稼働率をプロセス初期配置部１１に通知する。
ここで，第２ＣＰＵ用のプロセス動作計測記録リストの一例を表７Ｂに示す。表７Ｂでは，すでに２つのプロセスが第２ＣＰＵで実行され，それぞれについての開始時刻及び終了時刻が記録された後の状態を示す。
【表７Ｂ】
2007328441.tif 000010
【００８６】
次に，プロセス初期配置部１１は，第１ＣＰＵ３ａの稼働率と第２ＣＰＵ３ｂの稼働率を比較し（ステップＳＨ３），第１ＣＰＵ３ａの方が稼働率が大きくない場合（ステップＳＨ３のＮ）には，タイマ管理部２１から受領したプロセスＩＤをキーにしてプロセス起動待機リストからプロセスコンテキストを取得し，このプロセスコンテキストを第１ＣＰＵ用の実行可能プロセスキューに移動し（ステップＳＨ４），第１ＣＰＵ用のスケジュール管理部２３にプロセスＩＤを指定してプロセス実行処理を依頼する（ステップＳＨ５）。一方，第１ＣＰＵ３ａの方が稼働率が大きい場合（ステップＳＨ３のＹ）には，タイマ管理部２１から受領したプロセスＩＤをキーにしてプロセス起動待機リストからプロセスコンテキストを取得し，このプロセスコンテキストを第２ＣＰＵ用の実行可能プロセスキューに移動し（ステップＳＨ６），第２ＣＰＵ用のスケジュール管理部３３にプロセスＩＤを指定してプロセス実行処理を依頼する（ステップＳＨ７）。
表７Ａ及び表７Ｂの例で，現在時刻が１２ｍｓである場合，２ｍｓから１２ｍｓまでの過去１０ｍｓ間における第１ＣＰＵ３ａの稼動率は，２ｍｓ／１０ｍｓ＝２０％であり，第２ＣＰＵ３ｂの稼動率は，５ｍｓ／１０ｍｓ＝５０％であるので，初期配置対象のプロセス（例：プロセスＩＤ＝１００５のプロセス）は，表８に示すような第１ＣＰＵ用の実行可能プロセスキューに初期配置される。
【表８】
2007328441.tif 000011
【００８７】
なお，本実施形態では，ＣＰＵの過去の稼働率に基づいてプロセスを初期配置しているが，プロセスの初期配置方法は，特に限定されない。例えば，プロセスＩＤが奇数であるプロセスを第１ＣＰＵに配置し，プロセスＩＤが偶数であるプロセスを第２ＣＰＵに配置するといった方法で初期配置を行ってもよい。
【００８８】
３−３．周期プロセスの検出に用いる計時データの取得に関係する処理（ステップＳ３）
次に，周期プロセスの検出に用いる計時データの取得に関係する処理について説明する。
３−３−１．プロセス実行処理の説明
第１ＣＰＵ用のスケジュール管理部２３と第２ＣＰＵ用のスケジュール管理部３３の動作は同じなので，以下，第１ＣＰＵ用のスケジュール管理部２３の動作を例にとって説明を進める。
【００８９】
図４のフローチャートにおいて，スケジュール管理部２３は，プロセス初期配置部１１からプロセスＩＤの指定と共にプロセス実行処理依頼を受領すると（ステップＳＢ１のＹ），プロセス実行処理を行う（ステップＳＢ５）。
【００９０】
ここで，図１１のフローチャートを用いて，ステップＳＢ５のプロセス実行処理について説明する。
【００９１】
まず，スケジュール管理部２３は，指定されたプロセスＩＤのプロセスコンテキストが実行可能プロセスキューに存在しているかどうかを確認し（ステップＳＫ１），存在していない場合（ステップＳＫ１のＮ）には，何もせずにプロセス実行処理を終了する。存在している場合（ステップＳＫ１のＹ）には，このプロセスＩＤのプロセスコンテキストを，表９に示すような実行保存領域に移動させる（ステップＳＫ２）。
【表９】
2007328441.tif 000012
【００９２】
次に，スケジュール管理部２３は，プロセス動作計測部２５にプロセスＩＤを指定してプロセスの開始時刻の記録処理を依頼する（ステップＳＫ３）。プロセス動作計測部２５は，プロセスＩＤの指定と共にプロセス開始時刻の記録処理の依頼を受領すると（図５のステップＳＣ２のＹ），プロセス開始時刻の記録処理を行う（ステップＳＣ５）。
【００９３】
ここで，図１２のフローチャートを用いて，ステップＳＣ５のプロセス開始時刻の記録処理について説明する。
【００９４】
まず，プロセス動作計測部２５は，時計デバイス７から現在時刻を取得する（ステップＳＬ１）。この時刻が，プロセスの開始時刻となる。
【００９５】
次に，プロセス動作計測部２５は，表１０に示すように，プロセス動作計測記録リストにプロセスＩＤと開始時刻を対応付けて記録する（ステップＳＬ２）。終了時刻の項は，例えば，０クリア（つまり，０ｍｓを記録）する。プロセスＩＤと開始時刻を記録する行は，主記憶部５に記憶されたインデックス番号を参照して特定することができる。例えば，インデックス番号が２の場合，番号が２の行に記録する。
【表１０】
2007328441.tif 000013
【００９６】
次に，プロセス動作計測部２５は，指定されたプロセスＩＤがプロセス集計情報保持リストに存在しているか否かを確認し（ステップＳＬ３），存在している場合（ステップＳＬ３のＹ）には，何もせずにプロセス開始時刻の記録処理を終了する。一方，存在していない場合（ステップＳＬ３のＮ）には，プロセス集計情報保持リストにプロセスＩＤと起動時刻（ステップＳＬ１で取得した時刻）を対応付けて記録し（ステップＳＬ４），プロセス開始時刻の記録処理を終了する。
【表１１】
2007328441.tif 000014
【００９７】
次に，図１１のフローチャートに戻り，スケジュール管理部２３は，プロセスコンテキストの主記憶部配置情報の内容に従って，実行するプロセス用に主記憶部の使用領域を設定する（図１１のステップＳＫ４）。例えば主記憶部の読み書き可否の領域の状態をそのプロセス用の設定に変更する。
【００９８】
次に，スケジュール管理部２３は，プロセスコンテキストのＣＰＵレジスタ情報を第１ＣＰＵのレジスタに書き込む（ステップＳＫ５）。
【００９９】
次に，スケジュール管理部２３は，プロセスの実行を開始する（ステップＳＫ６）。
【０１００】
３−３−２．プロセスの動作の説明
ここで，図１３のフローチャートを用いて，プロセスの動作の一例について説明する。ここでは，プロセスが，タイマ周期稼動型のプログラムからなる場合を例にとって説明する。
【０１０１】
スケジュール管理部２３がプロセスの実行を開始すると，このプロセス（以下，「実行中プロセス」と呼ぶ）は，まず，この実行が１回目の実行であるか否かを確認する（ステップＳＭ１）。
【０１０２】
１回目の実行である場合（ステップＳＭ１のＹ）には，実行中プロセスは，タイマ管理部２１にタイマ待機プロセスリストへの登録処理を依頼し（ステップＳＭ２），ステップＳＭ３に進む。タイマ管理部２１は，この依頼を受領すると（図３のステップＳＡ４のＹ）実行中プロセスからの指定に基づいて，表１２に示すように，プロセスＩＤ，待ち時間，及び周期性の有無を対応付けてタイマ待機プロセスリストへ登録する（ステップＳＡ１０）。「周期性」は，待ち時間が繰り返し設定されるか否かを示す項目であり，「周期性あり」の場合，待ち時間（例：４０ｍｓ）が経過し，プロセス再開処理の依頼（詳しくは後述する。）が行われた後，再度，同じ待ち時間（例：４０ｍｓ）が設定される。「周期性なし」の場合，待ち時間が経過し，プロセス再開処理の依頼が行われた後，再度，待ち時間が設定されず、タイマ待機プロセスリストからその行が削除される。
【表１２】
2007328441.tif 000015
【０１０３】
１回目の実行でない場合（ステップＳＭ１のＮ）は，そのままステップＳＭ３に進む。
【０１０４】
図１３のステップＳＭ３では，実行中プロセスは，メイン処理を行う。メイン処理の内容は，プロセス毎に異なる。メイン処理は，周期プロセスの場合は，例えば，（１）車両に搭載されたセンサーの情報を定期的に取得し，解析する処理，（２）ＧＰＳアンテナのデータを定期的に取得し位置情報を取得する処理，（３）カメラ画像の認識処理などである。メイン処理は，非周期プロセスの場合は，（１）ドライバーによるカーナビのタッチパネルの操作に対する処理，（２）運転時のブレーキ操作に対する処理，（３）ボタン操作に対する処理，（４）音声入力の認識処理などである。
【０１０５】
次に，実行中プロセスは，スケジュール管理部２３にプロセス待機処理を依頼する（ステップＳＭ４）。
【０１０６】
３−３−３．プロセス待機処理の説明
スケジュール管理部２３は，プロセス待機処理の依頼を受領すると（図４のステップＳＢ２のＹ），プロセス待機処理を行う（ステップＳＢ６）。
【０１０７】
ここで，図１４のフローチャートを用いて，ステップＳＢ６のプロセス待機処理について説明する。
【０１０８】
まず，スケジュール管理部２３は，ＣＰＵのレジスタの値を実行保存領域のプロセスコンテキストのＣＰＵレジスタ情報として記録する（ステップＳＮ１）。
【０１０９】
次に，スケジュール管理部２３は，プロセス動作計測部２５にプロセスＩＤを指定してプロセスの終了時刻の記録処理を依頼する（ステップＳＮ２）。プロセス動作計測部２５は，プロセスＩＤの指定と共にプロセス終了時刻の記録処理依頼を受領すると（図５のステップＳＣ３のＹ），プロセス終了時刻の記録処理を行う（ステップＳＣ６）。
【０１１０】
ここで，図１５のフローチャートを用いて，ステップＳＣ６のプロセス終了時刻の記録処理について説明する。
【０１１１】
まず，プロセス動作計測部２５は，時計デバイス７から現在時刻を取得する（ステップＳＯ１）。この時刻が，プロセスの終了時刻となる。
【０１１２】
次に，プロセス動作計測部２５は，プロセス動作計測記録リストに終了時刻を記録する（ステップＳＯ２）。終了時刻を記録する行は，インデックス番号を参照して特定することができる。
【０１１３】
次に，プロセス動作計測部２５は，終了時刻を記録した行の，終了時刻と開始時刻の間の時間，すなわち実行時間を算出する（ステップＳＯ３）。
【０１１４】
次に，プロセス動作計測部２５は，算出した実行時間を，プロセス集計情報保持リスト中の総実行時間に加算する（ステップＳＯ４）。
【０１１５】
次に，プロセス動作計測部２５は，プロセス集計情報保持リスト中の実行回数に１を加算する（ステップＳＯ５）。
【０１１６】
最後に，プロセス動作計測部２５は，インデックス番号の値に１を加算し（ステップＳＯ６），プロセス終了時刻の記録処理を終了する。
【０１１７】
次に，図１４のフローチャートに戻り，スケジュール管理部２３は，実行保存領域のプロセスコンテキストを，表１３に示すような待機プロセスキューに移動し（ステップＳＮ３），プロセス待機処理を終了する。
【表１３】
2007328441.tif 000016
【０１１８】
３−３−４．プロセス再開処理の説明
待機中のプロセスは，スケジュール管理部２３がプロセス再開処理を行うまでは待機を継続する。
【０１１９】
図４のフローチャートにおいて，スケジュール管理部２３は，タイマ管理部２１からプロセス再開処理依頼を受領するまで待機する（ステップＳＢ３のＮ）。
【０１２０】
図３のフローチャートにおいて，タイマ管理部２１は，タイマ待機プロセスリストの待ち時間が経過しているか否かの確認を繰り返し（ステップＳＡ５のＮ），リスト中の何れかの待ち時間が経過したときは（ステップＳＡ５のＹ），スケジュール管理部２３にプロセスＩＤを指定してプロセス再開処理を依頼する（ステップＳＡ１１）。スケジュール管理部２３は，プロセスＩＤの指定と共にプロセス再開処理の依頼を受領すると（図４のステップＳＢ３のＹ），プロセス再開処理を行う（ステップＳＢ７）。
【０１２１】
ここで，図１６のフローチャートを用いて，ステップＳＢ７のプロセス再開処理について説明する。
【０１２２】
まず，スケジュール管理部２３は，指定のプロセスＩＤのプロセスコンテキストを待機プロセスキューから実行可能プロセスキューに移動させる（ステップＳＰ１）。
【０１２３】
次に，スケジュール管理部２３は，実行保存領域に他のプロセスコンテキストが存在するか否かを確認し（ステップＳＰ２），他のプロセスコンテキストが存在する場合（ステップＳＰ２のＹ）には，存在しなくなるまで待機する。存在しない場合（ステップＳＰ２のＮ）には，プロセス実行処理を行う（ステップＳＰ３）。プロセス実行処理の内容は，図１１のフローチャートを用いて既に説明した通りである。
【０１２４】
この後は，上述したプロセス待機処理及びプロセス再開処理等が繰り返されることによって，プロセスが繰り返し実行される。
【０１２５】
ここでは，プロセスがタイマ周期稼動型のプログラムから生成される場合を例にとっているので，タイマ管理部２１からプロセス再開処理依頼によって，スケジュール管理部２３がプロセス再開処理を行っているが，プロセスが非周期プロセスである場合は，外部からの刺激があったとき（例：センサーが音声を検知したとき，スイッチが押下されたとき）などに，イベント管理部２９がプロセス再開処理を依頼し，スケジュール管理部２３がその依頼に従ってプロセス再開処理を行う。また，実行中のプロセスが，別のプロセスの実行を再開させるために，イベント管理２９に起動イベントとして別のプロセスの起動を依頼し、イベント管理２９はスケジュール管理部２３にプロセス再開処理を依頼する場合もある。
【０１２６】
プロセスは，図８のステップＳＦ１においてタイマ管理部２１が設定した計測期間終了時刻に達するまで繰り返し実行され，その度にプロセス集計情報保持リスト及びプロセス動作計測記録リストが更新される。
【０１２７】
計測期間終了時刻に達した時点では，第１ＣＰＵ用のプロセス集計情報保持リスト及び第１ＣＰＵ用のプロセス動作計測記録リストは，一例では，表１４及び表１５のようになる。
また，計測期間終了時刻に達するまでに，第２ＣＰＵ用のプロセス集計情報保持リスト及び第２ＣＰＵ用のプロセス動作計測記録リストも，ここまでに説明した方法で，同様に作成される。
【表１４】
2007328441.tif 000017
【０１２８】
【表１５】
2007328441.tif 000018
【０１２９】
また，計測期間終了時刻に達した時点では，第１ＣＰＵ用のタイマ待機プロセスリストは，一例では，表１６のようになっている。計測期間終了時刻に達するまでに，第２ＣＰＵ用のプロセス動作計測記録リストも，ここまでに説明した方法で，同様に作成されている。
【表１６】
2007328441.tif 000019
【０１３０】
３−３−５．計測期間終了割込み処理の説明
図３のフローチャートにおいて，タイマ管理部２１は，時計デバイス７の時刻が，起動プロセスリストの何れかの起動時刻に到達したかどうかの確認を繰り返し（ステップＳＡ６），到達した場合（ステップＳＡ６のＹ）には，計測期間終了割込み処理を行う（ステップＳＡ１２）。
【０１３１】
ここで，図１７のフローチャートを用いて，ステップＳＡ１２の計測期間終了割込み処理について説明する。
【０１３２】
まず，タイマ管理部２１は，実行保存領域にプロセスコンテキストが存在しているか否かを確認する（ステップＳＱ１）。存在している場合（ステップＳＱ１のＹ）には，スケジュール管理部２３にプロセス中断処理を依頼する（ステップＳＱ２）。スケジュール管理部２３は，プロセス中断処理の依頼を受領すると（図４のステップＳＢ４のＹ），プロセス中断処理を行う（ステップＳＢ８）。存在していない場合（ステップＳＱ１のＮ）には，ステップＳＱ３に進む。
【０１３３】
ここで，図１８のフローチャートを用いて，ステップＳＢ８のプロセス中断処理について説明する。
【０１３４】
まず，スケジュール管理部２３は，ＣＰＵのレジスタの値を実行保存領域のプロセスコンテキストのＣＰＵレジスタ情報として記録する（ステップＳＲ１）。
【０１３５】
次に，スケジュール管理部２３は，実行保存領域のプロセスコンテキストを，実行可能プロセスキューに移動させ（ステップＳＲ２），プロセス中断処理を完了する。
【０１３６】
次に，図１７のフローチャートに戻り，タイマ管理部２１は，周期プロセス検出部２７に周期プロセス検出処理を依頼する（ステップＳＱ３）。
【０１３７】
３−４．周期プロセスの検出に関係する処理（ステップＳ４）
次に，図１９のフローチャートを用いて，周期プロセスの検出に関係する処理について説明する。
【０１３８】
周期プロセス検出部２７は，周期プロセス検出処理の依頼を受領するまで待機し（ステップＳＳ１のＮ），周期プロセス検出処理の依頼を受領すると（ステップＳＳ１のＹ），周期プロセス検出処理を開始する。
【０１３９】
周期プロセス検出処理では，まず，周期プロセス検出部２７は，プロセス動作計測部２５から表１４及び表１５に示すようなプロセス集計情報保持リスト及びプロセス動作計測記録リストを取得する（ステップＳＳ２）。
【０１４０】
次に，周期プロセス検出部２７は，プロセス集計情報保持リストの一行を読み取り（ステップＳＳ３），読み取った行のプロセスについて，周期性判断処理を行う（ステップＳＳ４）。
【０１４１】
ここで，図２０のフローチャートを用いて，ステップＳＳ４の周期性判断処理について説明する。
【０１４２】
まず，周期プロセス検出部２７は，ステップＳＳ３で読み取った行に含まれるプロセスＩＤをキーにして，プロセス動作計測記録リストを最後から検索して，キーにしたプロセスＩＤが最後に現れる行の開始時刻を取得する（ステップＳＴ１）。
【０１４３】
次に，周期プロセス検出部２７は，以下の式から平均開始時刻間隔を算出する（ステップＳＴ２）。起動時刻及び実行回数は，ステップＳＳ３で読み取った行に含まれているものを用いる。
平均開始時刻間隔＝（最後に現れる行の開始時刻−起動時刻）／（実行回数−１）
但し，キーにしたプロセスＩＤが最後に現れる行に終了時刻が設定されていない場合（ステップＳＬ２にて終了時刻が０クリアされていることで判断可能）は，最後の処理が中断されたことを意味するので，実行回数から１を引く必要はない。
【０１４４】
次に，周期プロセス検出部２７は，ステップＳＳ３で読み取った行に含まれるプロセスＩＤをキーにして，プロセス動作計測記録リストを最初から検索して，キーにしたプロセスＩＤが現れる全ての行の開始時刻を取得し（Ｎ＋１個取得できたとする），以下の式を用いて，１〜Ｎ番目の開始時刻間隔を算出し，さらに１〜Ｎ番目のずれ幅を算出する（ステップＳＴ３）。
Ｋ番目の開始時刻間隔＝（Ｋ＋１）番目に現れる行の開始時刻−Ｋ番目に現れる行の開始時刻
Ｋ番目のずれ幅（％）＝｜（Ｋ番目の開始時刻間隔−平均開始時刻間隔）／平均開始時刻間隔｜×１００
（但し，Ｋ＝１〜Ｎである。）
【０１４５】
次に，周期プロセス検出部２７は，以下の式を用いて，ずれ幅の平均を算出する（ステップＳＴ４）。
ずれ幅の平均（％）＝[Σ（Ｋ番目のずれ幅）]／Ｎ
（但し，Ｋ＝１〜Ｎである。）
【０１４６】
次に，周期プロセス検出部２７は，ずれ幅のデータに異常データが含まれているか否かを判断する（ステップＳＴ５）。具体的には，周期プロセス検出部２７は，｛（Ｋ番目のずれ幅−ずれ幅の平均）／ずれ幅の平均｝を算出し，算出された値の絶対値が所定基準内（例：１０％以内）であるか否かを確認し，所定基準内でないものを異常データであると判断する。
【０１４７】
異常データが含まれている場合（ステップＳＴ５のＹ）には，そのデータを除去し（ステップＳＴ６），再度，ずれ幅の平均を求める。異常データが含まれていない場合（ステップＳＴ５のＮ）は，次のステップに進む。
【０１４８】
次に，ずれ幅の平均が所定基準以内（例：３％以内）であるか否かを確認し（ステップＳＴ７），所定基準以内である場合（ステップＳＴ７のＹ）には，表１７に示すように，プロセスＩＤ，周期及び総実行時間とを対応付けて周期プロセスリストに登録し（ステップＳＴ８），周期性判断処理を終了する。周期としては，ステップＳＴ２で算出した平均開始時刻間隔の値を登録する。総実行時間は，ステップＳＳ３で読み取った行に含まれるものを用いる。一方，ずれ幅の平均が所定基準以内でない場合（ステップＳＴ７のＮ）には，何もせずに周期性判断処理を終了する。
【表１７】
2007328441.tif 000020
【０１４９】
次に，図１９のフローチャートに戻り，周期プロセス検出部２７は，判断対象のプロセスに周期性があるか否かを判断する（ステップＳＳ５）。具体的には，周期プロセス検出部は，判断対象のプロセスのプロセスＩＤをキーにして周期プロセスリストを検索して，キーにしたプロセスＩＤが周期プロセスリストに存在しているか否かに基づいて判断する。存在していれば周期性があると判断し，存在していなければ，周期性がないと判断する。
周期性がないと判断した場合（ステップＳＳ５のＮ）は，ステップＳＳ７に進む。周期性があると判断した場合（ステップＳＳ５のＹ）は，次は，実行時間定量性判断処理を行う（ステップＳＳ６）。
【０１５０】
ここで，図２１のフローチャートを用いて，ステップＳＳ６の実行時間定量性判断処理について説明する。
【０１５１】
まず，周期プロセス検出部２７は，以下の式から平均実行時間を算出する（ステップＳＵ１）。総実行時間及び実行回数は，ステップＳＳ３で読み取った行に含まれているものを用いる。
平均実行時間＝総実行時間／実行回数
【０１５２】
次に，周期プロセス検出部２７は，ステップＳＳ３で読み取った行に含まれるプロセスＩＤをキーにして，プロセス動作計測記録リストを最初から検索して，キーにしたプロセスＩＤが現れる全ての行の開始時刻及び終了時刻を取得し（Ｎ＋１個取得できたとする），以下の式を用いて，１〜Ｎ＋１番目の実行時間を算出し，さらに１〜Ｎ＋１番目のずれ幅を算出する（ステップＳＵ２）。
Ｋ番目の実行時間＝Ｋ番目に現れる行の終了時刻−Ｋ番目に現れる行の開始時刻
Ｋ番目のずれ幅（％）＝｜（Ｋ番目の実行時間−平均実行時間）／平均実行時間｜×１００
（但し，Ｋ＝１〜Ｎ＋１である。）
【０１５３】
次に，周期プロセス検出部２７は，以下の式を用いて，ずれ幅の平均を算出する（ステップＳＵ３）
ずれ幅の平均（％）＝[Σ（Ｋ番目のずれ幅）]／（Ｎ＋１）
（但し，Ｋ＝１〜Ｎ＋１である。）
【０１５４】
次に，周期プロセス検出部２７は，ずれ幅のデータに異常データが含まれているか否かを判断する（ステップＳＵ４）。具体的には，周期プロセス検出部２７は，｛（Ｋ番目のずれ幅−ずれ幅の平均）／ずれ幅の平均｝を算出し，算出された値の絶対値が所定基準内（例：１０％以内）であるか否かを確認し，所定基準内でないものを異常データであると判断する。
【０１５５】
異常データが含まれている場合（ステップＳＵ４のＹ）には，そのデータを除去し（ステップＳＵ５），再度，ずれ幅の平均を求める。異常データが含まれていない場合（ステップＳＵ４のＮ）は，次のステップに進む。
【０１５６】
次に，ずれ幅の平均が所定基準以内（例：１０％以内）であるか否かを確認し（ステップＳＵ６），所定基準以内である場合（ステップＳＵ６のＹ）には，何もせずに実行時間定量性判断処理を終了する。一方，所定基準以内でない場合（ステップＳＵ６のＮ）には，判断対象のプロセスが周期プロセスではないと判断し，周期プロセスリストから対応するプロセスＩＤ，周期及び総実行時間を削除し（ステップＳＵ７），実行時間定量性判断処理を終了する。
【０１５７】
次に，図１９のフローチャートに戻り，周期プロセス検出部２７は，プロセス集計情報保持リストに未処理行が残っているか否かを確認し（ステップＳＳ７），未処理行が残っている場合（ステップＳＳ７のＹ），ステップＳＳ３に戻り，処理を継続する。
【０１５８】
プロセス集計情報保持リストに未処理行が残っていない場合（ステップＳＳ７のＮ）には，周期プロセス検出部２７は，全てのプロセスについて周期プロセス検出処理が終了したとみなし，周期プロセスグループ検出部４１に周期プロセスグループ検出処理を依頼する（ステップＳＳ８）。
【０１５９】
以上の工程によって，プロセス集計情報保持リストにある全てのプロセスについて，周期プロセスであるか否かが判断され，周期プロセスであると判断されたものについては，そのプロセスＩＤ，周期及び総実行時間が周期プロセスリストに記録される。
ここでは，周期性及び実行時間定量性の両方の基準を満たしたものが周期プロセスであると判断したが，実行時間定量性については判断せずに周期性の基準を満たしたものが周期プロセスであると判断してもよい。
【０１６０】
最終的に得られる周囲プロセスリストの一例を表１８に示す。表１８では，プロセスＩＤが１０１０の行（最終行）に注目したい。このプロセスＩＤは，表１６のタイマ待機プロセスリストには登録されていない。それにも関わらず，周期性を有しており，その周期は，プロセスＩＤが１００５のプロセスと同じになっている。このことから，プロセスＩＤが１０１０のプロセスは，タイマ周期稼動型ではなく，プロセスＩＤが１００５のプロセスによって、起動イベントが発生し、実行されるものであると考えられる。そして，プロセスＩＤが１００５のプロセスがタイマ周期稼動型なので，結果的にプロセスＩＤが１０１０のプロセスも周期プロセスになったのであると考えられる。このように，本実施形態では，実際にプロセスを繰り返し実行してプロセス動作計測リスト及びプロセス集計情報保持リストを作成し，これらのリストの内容に基づいて周期性の判断を行うので，タイマ待機プロセスリストの内容からは発見できない周期プロセスであっても，本実施形態によれば，確実に発見することができる。
【表１８】
2007328441.tif 000021
【０１６１】
３−５．プロセスの配置変更に関係する処理（ステップＳ５）
次に，プロセスの配置変更に関係する処理について説明する。
３−５−１．周期プロセスグループ検出部の動作の説明
図２２のフローチャートを用いて，プロセスの配置変更に関係する周期プロセスグループ検出部４１の動作について説明する。
【０１６２】
周期プロセスグループ検出部４１は，周期プロセス検出部２７から周期プロセスグループ検出処理の依頼（図１９のステップＳＳ８）を受領するまで待機し（ステップＳＶ１のＮ），周期プロセスグループ検出処理の依頼を受領すると（ステップＳＶ１のＹ），周期プロセスグループ検出処理を開始する。
【０１６３】
周期プロセスグループ検出処理では，まず，周期プロセスグループ検出部４１は，第１及び第２ＣＰＵ用の周期プロセス検出部２７，３７からそれぞれの周期プロセスリストを取得し，これらの２つのリストを表１９に示すように結合して周期プロセス結合リストを作成する（ステップＳＶ２）。表１９のうち，最初の５行は，第１ＣＰＵ用の周期プロセスリストの内容であり，その次の３行は，第２ＣＰＵ用の周期プロセスリストの内容である。
【表１９】
2007328441.tif 000022
【０１６４】
次に，周期プロセスグループ検出部４１は，表２０に示すように，周期をキーにして降順又は昇順に周期プロセス結合リストをソートする（ステップＳＶ３）。表２０では，昇順にソートしたものを示す。
【表２０】
2007328441.tif 000023
【０１６５】
次に，周期プロセスグループ検出部４１は，表２１に示すように，ソート後の周期プロセス結合リストから周期が実質的に等しいプロセスをグループ化し，グループ番号，所属する全てのプロセスのプロセスＩＤ，グループ総実行時間（所属する全てのプロセスの総実行時間の合計）及び所属プロセス数を対応付けて周期プロセスグループリストに登録する（ステップＳＶ４）。
【０１６６】
グループ化は，具体的には，例えば，ソート後の周期プロセス結合リストの隣接する行の周期を，周期が短い方から順に比較し，周期の差が所定基準内（例えば，周期の差が５％以内）であるか否かを確認し，所定基準内である場合には実質的に同周期であるとみなすことによって行う。３つ以上のプロセスの周期の差が所定基準内であるか否かは，例えば，判断対象の複数のプロセスのうちの特定の１つのプロセスの周期との差が所定基準内であるか否かに基づいて判断する。
【表２１】
2007328441.tif 000024
【０１６７】
次に，周期プロセスグループ検出部４１は，プロセス配置変更部４３にプロセス配置変更処理を依頼する（ステップＳＶ５）。
【０１６８】
３−５−２．プロセス配置変更部の動作の説明
図２３及び２４のフローチャートを用いて，プロセスの配置変更に関係するプロセス配置変更部４３の動作について説明する。
【０１６９】
プロセス配置変更部４３は，プロセス配置変更処理の依頼を受領するまで待機し（ステップＳＷ１のＮ），プロセス配置変更処理の依頼を受領すると（ステップＳＷ１のＹ），プロセス配置変更処理を開始する。
【０１７０】
プロセス配置変更処理では，まず，プロセス配置変更部４３は，周期プロセスグループ検出部４１から周期プロセスグループリストを取得する（ステップＳＷ２）。
【０１７１】
次に，プロセス配置変更部４３は，プロセス配置変更処理の際の優先順位の高い順にグループが並ぶように周期プロセスグループリストをソートする（ステップＳＷ３）。一例では，プロセス配置変更部４３は，表２２に示すように，所属プロセス数を第１キー，グループ総実行時間を第２キーにして降順に周期プロセスグループリストをソートする。このソートによって，優先順位の順にグループが並べられ，後のプロセス配置変更処理では，優先順位の高いグループに属するプロセスから順に配置変更される。表２２では，番号０のグループの優先順位が最も高く，番号４のグループの優先順位が最も低い。ソートの方法やキーは，ここで示した方法に限定されない。
【表２２】
2007328441.tif 000025
【０１７２】
次に，プロセス配置変更部４３は，全プロセスの総実行時間を取得する（ステップＳＷ４）。全プロセスの総実行時間は，各ＣＰＵ用のプロセス動作計測部からプロセス集計情報保持リストを取得し，そのリスト中の全てのプロセスの総実行時間を合計することによって取得することができる。
【０１７３】
次に，プロセス配置変更部４３は，優先順位の高いグループから順に，グループ総実行時間を足し合わせる（ステップＳＷ５）。
【０１７４】
次に，プロセス配置変更部４３は，ステップＳＷ５で得られた合計時間が，基準を超えたかどうかを判断する（ステップＳＷ６）。ここでの基準とは，例えば，ステップＳＷ４で得られた全プロセスの総実行時間に対する割合であり，例えば，全プロセスの総実行時間の半分を基準とする。基準を超えていない場合（ステップＳＷ６のＮ），ステップＳＷ５に戻り，次の優先順位のグループの総実行時間をさらに足し合わせる。これらのステップは，合計時間が基準を超えるまで繰り返される。
【０１７５】
ステップＳＷ５で得られた合計時間が基準を超えた場合（ステップＳＷ６のＹ），プロセス配置変更部４３は，表２３に示すように，周期プロセスグループリストの配置ＣＰＵ番号の項に各グループを配置すべきＣＰＵの番号を記録する（ステップＳＷ７）。一例では，ステップＳＷ５でグループ総実行時間の足し合わせが行われたグループ（比較的優先順位が高いグループ）の配置ＣＰＵ番号を１にし，足し合わせが行われなかったグループ（比較的優先順位が高いグループ）の配置ＣＰＵ番号を２にする。表２３では，番号が０と１のグループのグループ総実行時間を足し合わせたところで，合計時間が，全プロセスの総実行時間を超えた場合の例を示す。
【表２３】
2007328441.tif 000026
【０１７６】
配置ＣＰＵ番号は，プロセスが実行されるＣＰＵの番号である。従って，周期プロセスのうち比較的優先順位が高いグループに所属するプロセスが第１ＣＰＵ３ａで実行される。また，周期プロセスであっても比較的優先順位が低いグループに所属するプロセスは第２ＣＰＵ３ｂで実行される。なお，非周期プロセスも第２ＣＰＵ３ｂで実行される。
【０１７７】
さらに，ＣＰＵの数が十分にある場合（例: 周期プロセスグループ数＋１（非周期プロセス実行用）よりもＣＰＵ数が多い場合）は，各プロセスグループの配置ＣＰＵ番号を異なるものにする。これによって，周期が互いに異なる周期プロセスグループに属するプロセスを，互いに異なるＣＰＵで実行させることができ，周期プロセスの周期性をさらに確実に確保することができる。
【０１７８】
また，ＣＰＵの数が十分にない場合は，優先順位の高い周期プロセスグループから順に専用のＣＰＵを割り当ててもよい。例えば，ＣＰＵが３つ（第１〜第３ＣＰＵ）で，周期プロセスグループが４つの場合，最も優先順位が高いプロセスグループに属するプロセスのみを第１ＣＰＵで実行させ，次に優先順位が高いプロセスグループに属するプロセスのみを第２ＣＰＵで実行させ，残りのプロセスを第３ＣＰＵで実行させるようにしてもよい。
【０１７９】
次に，プロセス配置変更部４３は，表２４〜表２７に示すように，周期プロセスグループリストの配置ＣＰＵ番号に従って，各ＣＰＵ用のスケジュール管理部の実行可能プロセスキューと待機プロセスキューのプロセスコンテキストを再配置する（ステップＳＷ８）。この再配置は，例えば，プロセス配置変更部４３が，第１ＣＰＵ用のスケジュール管理部２３から実行可能プロセスキューと待機プロセスキューを取得し，これらのキューから第２ＣＰＵ３ｂで実行されるべきプロセスのプロセスコンテキストを取得し，このプロセスコンテキストを第２ＣＰＵ用のスケジュール管理部３３の実行可能プロセスキューと待機プロセスキューに移動させ，逆に，第２ＣＰＵ用のスケジュール管理部３３から実行可能プロセスキューと待機プロセスキューを取得し，これらのキューから第１ＣＰＵ３ａで実行されるべきプロセスのプロセスコンテキストを取得し，このプロセスコンテキストを第１ＣＰＵ用のスケジュール管理部２３の実行可能プロセスキューと待機プロセスキューに移動させることによって行うことができる。プロセスを実行すべきＣＰＵの番号は，プロセスコンテキスト中のプロセスＩＤをキーにして周期プロセスグループリストから配置ＣＰＵ番号を取得することによって調べることができる。
【０１８０】
表２４〜表２７を参照すると，表２３の周期プロセスグループリストにおいて，配置ＣＰＵ番号が１のグループ（グループ０及び１）に所属するプロセス（プロセスＩＤ＝１００２，１００３，１００９，１００５，１０１０）が第１ＣＰＵ用の実行可能プロセスキュー又は待機プロセスキューに移動し，それ以外のプロセスが，第２ＣＰＵ用の実行可能プロセスキュー又は待機プロセスキューに移動していることが分かる。
【表２４】
2007328441.tif 000027
【０１８１】
【表２５】
2007328441.tif 000028
【０１８２】
【表２６】
2007328441.tif 000029
【０１８３】
【表２７】
2007328441.tif 000030
【０１８４】
次に，プロセス配置変更部４３は，表２８及び表２９に示すように，周期プロセスグループリストの配置ＣＰＵ番号に従って，各ＣＰＵ用のタイマ管理部のタイマ待機プロセスリスト中のタイマ待機プロセスを再配置する（ステップＳＷ９）。この再配置は，例えば，プロセス配置変更部４３が，第１ＣＰＵ用のタイマ管理部２１からタイマ待機プロセスリストを取得し，このリストから第２ＣＰＵ３ｂで実行されるべきプロセスについてのデータを取得し，そのデータを第２ＣＰＵ用のタイマ管理部３１のタイマ待機プロセスリストに移動させ，逆に，第２ＣＰＵ用のタイマ管理部３１からタイマ待機プロセスリストを取得し，このリストから第１ＣＰＵ３ａで実行されるべきプロセスについてのデータを取得し，そのデータを第１ＣＰＵ用のタイマ管理部２１のタイマ待機プロセスリストに移動させることによって行うことができる。プロセスを実行するＣＰＵの番号は，タイマ待機プロセスリストから読み出したデータ中のプロセスＩＤをキーにして周期プロセスグループリストから配置ＣＰＵ番号を取得することによって調べることができる。
表２８及び表２９を参照すると，周期プロセスグループリストにおいて，配置ＣＰＵ番号が１のグループ（グループ０及び１）に所属するプロセス（プロセスＩＤ＝１００２，１００３，１００５，１００９）が第１ＣＰＵのタイマ待機プロセスリストに移動し，それ以外のプロセスが，第２ＣＰＵのタイマ待機プロセスリストに移動していることが分かる。
【表２８】
2007328441.tif 000031
【０１８５】
【表２９】
2007328441.tif 000032
【０１８６】
ここまでの工程により，プロセス配置変更処理が完了する。
【０１８７】
次に，プロセス配置変更部４３は，表３０に示すように，各プロセスについて，プロセスＩＤと配置ＣＰＵ番号とを対応付けてプロセス配置リストに記録する（ステップＳＷ１０）。次回起動時には，プロセス初期配置部１１は，プロセス配置変更部４３からプロセス配置リストを取得し，このリストの内容を参照して，プロセスの初期配置を行うことができる。
【表３０】
2007328441.tif 000033
【０１８８】
３−６．配置変更後のＣＰＵでのプロセスの実行に関係する処理
次に，配置変更後のＣＰＵでのプロセスの実行に関係する処理について説明する。
プロセス配置変更部４３は，第１及び第２ＣＰＵ用のスケジュール管理部２３，３３にプロセス実行処理を依頼する（ステップＳＷ１１）。ＣＰＵの数が３つ以上の場合には，全てのＣＰＵ用のスケジュール管理部にプロセス実行処理を依頼する。
【０１８９】
スケジュール管理部は，プロセス実行処理の依頼を受領すると（図４のステップＳＢ１），プロセス実行処理を行う（ステップＳＢ５）。これ以降は，上述した方法で，スケジュール管理部が，プロセス待機処理（ステップＳＢ６）及びプロセス再開処理（ステップＳＢ７）を繰り返すことによって，各種プロセスを繰り返し実行する。
【０１９０】
以上の実施形態で示した種々の特徴は，互いに組み合わせることができる。１つの実施形態中に複数の特徴が含まれている場合，そのうちの１又は複数個の特徴を適宜抜き出して，単独で又は組み合わせて，本発明に採用することができる。
【図面の簡単な説明】
【０１９１】
【図１】本発明の一実施形態のプロセススケジューリング装置のハードウエア構成を示すブロック図である。
【図２】本発明の一実施形態のプロセススケジューリング装置の機能ブロック構成を示すブロック図である。
【図２Ａ】本発明の一実施形態のプロセススケジューリング装置によるプロセススケジューリング処理の前後のプロセス配置を示す概念図である。
【図２Ｂ】本発明の一実施形態のプロセススケジューリング装置によるプロセススケジューリング処理の全体の流れを示すフローチャートである。
【図３】本発明の一実施形態のプロセススケジューリング装置のタイマ管理部の動作の流れを示すフローチャートである。
【図４】本発明の一実施形態のプロセススケジューリング装置のスケジュール管理部の動作の流れを示すフローチャートである。
【図５】本発明の一実施形態のプロセススケジューリング装置のプロセス動作計測部の動作の流れを示すフローチャートである。
【図６】本発明の一実施形態のプロセススケジューリング装置のプロセス初期配置部の動作の流れを示すフローチャートである。
【図７】図６のフローチャート中のプロセス準備処理の流れを示すフローチャートである。
【図８】図３のフローチャート中の初期化処理の流れを示すフローチャートである。
【図９】図６のフローチャート中のプロセス初期配置処理の流れを示すフローチャートである。
【図１０】図９のフローチャート中のＣＰＵ稼働率取得処理と，図５のフローチャート中のＣＰＵ稼働率通知処理の流れを示すフローチャートである。
【図１１】図４のフローチャート中のプロセス実行処理の流れを示すフローチャートである。
【図１２】図５のフローチャート中のプロセス開始時刻の記録処理の流れを示すフローチャートである。
【図１３】本発明の一実施形態のプロセススケジューリング装置で実行されるプロセスの動作の一例の流れを示すフローチャートである。
【図１４】図４のフローチャート中のプロセス待機処理の流れを示すフローチャートである。
【図１５】図５のフローチャート中のプロセス終了時刻の記録処理の流れを示すフローチャートである。
【図１６】図４のフローチャート中のプロセス再開処理の流れを示すフローチャートである。
【図１７】図３のフローチャート中の初期化処理の流れを示すフローチャートである。
【図１８】図４のフローチャート中のプロセス中断処理の流れを示すフローチャートである。
【図１９】本発明の一実施形態のプロセススケジューリング装置の周期プロセス検出部の動作の流れを示すフローチャートである。
【図２０】図１９のフローチャート中の周期性判断処理の流れを示すフローチャートである。
【図２１】図１９のフローチャート中の実行時間定量性判断処理の流れを示すフローチャートである。
【図２２】本発明の一実施形態のプロセススケジューリング装置の周期プロセスグループ検出部の動作の流れを示すフローチャートである。
【図２３】本発明の一実施形態のプロセススケジューリング装置のプロセス配置変更部の動作の流れを示すフローチャートである。
【図２４】本発明の一実施形態のプロセススケジューリング装置のプロセス配置変更部の動作の流れを示すフローチャートである。
【符号の説明】
【０１９２】
１：プロセススケジューリング装置  ３：ＣＰＵ群  ３ａ：第１ＣＰＵ  ３ｂ：第２ＣＰＵ  ５：主記憶部  ６：補助記憶部  ７：時計デバイス  １１：プロセス初期配置部  ２１：第１ＣＰＵ用のタイマ管理部  ２３：第１ＣＰＵ用のスケジュール管理部  ２５：第１ＣＰＵ用のプロセス動作計測部  ２７：第１ＣＰＵ用の周期プロセス検出部  ２９：第１ＣＰＵ用のイベント管理部  ３１：第２ＣＰＵ用のタイマ管理部  ３３：第２ＣＰＵ用のスケジュール管理部  ３５：第２ＣＰＵ用のプロセス動作計測部  ３７：第２ＣＰＵ用の周期プロセス検出部  ３９：第２ＣＰＵ用のイベント管理部  ４１：周期プロセスグループ検出部  ４３：プロセス配置変更部
【図１】
2007328441.tif 000034
【図２】
2007328441.tif 000035
【図２Ａ】
2007328441.tif 000036
【図２Ｂ】
2007328441.tif 000037
【図３】
2007328441.tif 000038
【図４】
2007328441.tif 000039
【図５】
2007328441.tif 000040
【図６】
2007328441.tif 000041
【図７】
2007328441.tif 000042
【図８】
2007328441.tif 000043
【図９】
2007328441.tif 000044
【図１０】
2007328441.tif 000045
【図１１】
2007328441.tif 000046
【図１２】
2007328441.tif 000047
【図１３】
2007328441.tif 000048
【図１４】
2007328441.tif 000049
【図１５】
2007328441.tif 000050
【図１６】
2007328441.tif 000051
【図１７】
2007328441.tif 000052
【図１８】
2007328441.tif 000053
【図１９】
2007328441.tif 000054
【図２０】
2007328441.tif 000055
【図２１】
2007328441.tif 000056
【図２２】
2007328441.tif 000057
【図２３】
2007328441.tif 000058
【図２４】
2007328441.tif 000059