(57)【要約】【課題】処理効率を向上させること。【解決手段】優先度が設定された複数のタスクを実行する実行手段と、前記複数のタスクの起床時刻を予想する起床時刻予想手段と、前記複数のタスクの起床制御を行う起床制御手段であって、起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記起床時刻予想手段が予想した起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床よりも後に延期する起床制御手段と、を備える情報処理装置。【選択図】図１
2013167945.tif 000002
【特許請求の範囲】
【請求項１】
優先度が設定された複数のタスクを実行する実行手段と、
前記複数のタスクの起床時刻を予想する起床時刻予想手段と、
前記複数のタスクの起床制御を行う起床制御手段であって、起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記起床時刻予想手段が予想した起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床よりも後に延期する起床制御手段と、
を備える情報処理装置。
【請求項２】
請求項１記載の情報処理装置であって、
前記起床時刻予想手段は、前記複数のタスクの過去の起床時刻の履歴に基づいて、前記複数のタスクの次回の起床時刻を予想する手段である、
を備える情報処理装置。
【請求項３】
請求項１又は２記載の情報処理装置であって、
前記起床予想時間帯は、前記起床時刻予想手段が予想した起床時刻の所定時間前から所定時間後までの時間帯である、
情報処理装置。
【請求項４】
請求項１ないし３のいずれか１項記載の情報処理装置であって、
前記起床予想時間帯は、前記起床時刻予想手段が起床時刻を予想したタスクの優先度が高いほど長く設定される、
情報処理装置。
【請求項５】
請求項１ないし４のいずれか１項記載の情報処理装置であって、
タスク毎に起床周期の種類を記憶した記憶手段を備え、
前記起床時刻予想手段は、前記記憶手段に格納された起床周期の種類に応じた手法で前記複数のタスクの次回の起床時刻を予想する手段である、
情報処理装置。
【請求項６】
請求項５項記載の情報処理装置であって、
前記記憶手段に記憶された起床周期の種類は、一定周期で起床する一定周期、変動する周期で周期的に起床する変動周期、非周期に分類されている、
情報処理装置。
【請求項７】
請求項６項記載の情報処理装置であって、
前記起床制御手段は、前記複数のタスクの起床待ち時間を計測し、該計測した起床待ち時間が規定時間を超えるタスクについては、前記起床時刻予想手段の予想結果に拘わらず起床させる手段である、
情報処理装置。
【請求項８】
優先度が設定された複数のタスクを実行する実行手段を有する情報処理装置のタスク起床制御方法であって、
前記情報処理装置が、
前記複数のタスクの過去の起床時刻の履歴に基づいて、前記複数のタスクの次回の起床時刻を予想し、
起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記予想する処理において予想された起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床以降に延期することを特徴とする、
タスク起動制御方法。
【請求項９】
優先度が設定された複数のタスクを実行する実行手段を有する情報処理装置のタスク起床制御プログラムであって、
前記情報処理装置に、
前記複数のタスクの過去の起床時刻の履歴に基づいて、前記複数のタスクの次回の起床時刻を予想させ、
起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記予想する処理において予想された起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床以降に延期させることを特徴とする、
タスク起動制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを実行する情報処理装置、及びそのタスク起床制御方法、並びにタスク起動制御プログラムに関する。
【背景技術】
【０００２】
従来、複数のタスクを実行する情報処理装置が知られている。タスクとは、ある程度の機能的まとまりを有する命令群であり、プロセスと称されることもある。
【０００３】
特許文献１には、複数のタスクを同時に並行して実行するマルチタスクプロセッサであって、プログラムを格納する命令メモリと、命令メモリに格納されたプログラムに記述された命令を読み出してデコードし、タスクとして実行する複数の命令処理部と、複数のタスクの各々に与えられる実行順序を示す優先度にもとづいて、複数の命令処理部の各々のためにタスクを選択し、選択されたタスクを複数の命令処理部に割り当てるスケジューラとを備えるマルチタスクプロセッサについて記載されている。このマルチタスクプロセッサでは、低優先度のタスクを実行しているときに高優先度のタスクが起動（起床）された場合、低優先度のタスクを中断して実行待ちとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３２８８２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の装置では、タスクの切替（Dispatch）が頻発し、処理効率が低下する場合がある。
【０００６】
本発明は、一側面によれば、処理効率を向上させることが可能な情報処理装置、及びそのタスク起床制御方法、並びにタスク起動制御プログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様は、
優先度が設定された複数のタスクを実行する実行手段と、
前記複数のタスクの起床時刻を予想する起床時刻予想手段と、
前記複数のタスクの起床制御を行う起床制御手段であって、起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記起床時刻予想手段が予想した起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床よりも後に延期する起床制御手段と、
を備える情報処理装置である。
【０００８】
本発明の第１の態様によれば、複数のタスクの起床時刻を予想し、起床しようとするタスクの起床時刻が、起床しようとするタスクよりも優先度が高いタスクについて予想された起床時刻を含む起床予想時間帯に該当する場合に、起床しようとするタスクの起床を、優先度が高いタスクの起床よりも後に延期するため、処理効率を向上させることができる。
【０００９】
本発明の第１の態様において、
前記起床時刻予想手段は、前記複数のタスクの過去の起床時刻の履歴に基づいて、前記複数のタスクの次回の起床時刻を予想する手段であるものとしてもよい。
【００１０】
本発明の第１の態様において、
前記起床予想時間帯は、前記起床時刻予想手段が予想した起床時刻の所定時間前から所定時間後までの時間帯であるものとしてもよい。
【００１１】
本発明の第１の態様において、
前記起床予想時間帯は、前記起床時刻予想手段が起床時刻を予想したタスクの優先度が高いほど長く設定されるものとしてもよい。
【００１２】
本発明の第１の態様において、
タスク毎に起床周期の種類を記憶した記憶手段を備え、
前記起床時刻予想手段は、前記記憶手段に格納された起床周期の種類に応じた手法で前記複数のタスクの次回の起床時刻を予想する手段であるものとしてもよい。
【００１３】
本発明の第１の態様において、
前記記憶手段に記憶された起床周期の種類は、例えば、一定周期で起床する一定周期、変動する周期で周期的に起床する変動周期、非周期に分類されている。
【００１４】
本発明の第１の態様において、
前記起床制御手段は、前記複数のタスクの起床待ち時間を計測し、該計測した起床待ち時間が規定時間を超えるタスクについては、前記起床時刻予想手段の予想結果に拘わらず起床させる手段であるものとしてもよい。
【００１５】
本発明の第２の態様は、
優先度が設定された複数のタスクを実行する実行手段を有する情報処理装置のタスク起床制御方法であって、
前記情報処理装置が、
前記複数のタスクの過去の起床時刻の履歴に基づいて、前記複数のタスクの次回の起床時刻を予想し、
起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記予想する処理において予想された起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床以降に延期することを特徴とする、
タスク起動制御方法である。
【００１６】
本発明の第２の態様によれば、複数のタスクの過去の起床時刻の履歴に基づいて、複数のタスクの次回の起床時刻を予想し、起床しようとするタスクの起床時刻が、起床しようとするタスクよりも優先度が高いタスクについて予想された起床時刻を含む起床予想時間帯に該当する場合に、起床しようとするタスクの起床を、優先度が高いタスクの起床よりも後に延期するため、処理効率を向上させることができる。
【００１７】
本発明の第３の態様は、
優先度が設定された複数のタスクを実行する実行手段を有する情報処理装置のタスク起床制御プログラムであって、
前記情報処理装置に、
前記複数のタスクの過去の起床時刻の履歴に基づいて、前記複数のタスクの次回の起床時刻を予想させ、
起床しようとするタスクの起床時刻が、該起床しようとするタスクよりも優先度が高いタスクについて前記予想する処理において予想された起床時刻を含む起床予想時間帯に該当する場合に、該起床しようとするタスクの起床を、前記優先度が高いタスクの起床以降に延期させることを特徴とする、
タスク起動制御プログラムである。
【００１８】
本発明の第３の態様によれば、複数のタスクの過去の起床時刻の履歴に基づいて、複数のタスクの次回の起床時刻を予想し、起床しようとするタスクの起床時刻が、起床しようとするタスクよりも優先度が高いタスクについて予想された起床時刻を含む起床予想時間帯に該当する場合に、起床しようとするタスクの起床を、優先度が高いタスクの起床よりも後に延期するため、処理効率を向上させることができる。
【発明の効果】
【００１９】
本発明は、一側面によれば、処理効率を向上させることが可能な情報処理装置、及びそのタスク起床制御方法、並びにタスク起動制御プログラムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施例に係る情報処理装置１のシステム構成例である。
【図２】タスク起床情報３５として格納されるデータの一例である。
【図３】タスク起床制御部３３及びメイン管理部３１によって実行される処理の流れを示すフローチャートである。
【図４】ある時点におけるタスク起床情報３５の一部と、これに基づいてタスクＣが起床待ち状態とされる様子を示す図である。
【図５】タスクＣの待ちフラグに「１」が書き込まれた様子を示す図である。
【図６】図４（Ｂ）に示す状態の後、タスクＣが起床される様子を示す図である。
【図７】起床時刻予想部３２により実行される処理の流れを示すフローチャートである。
【図８】図４（Ａ）に示す状態から、Ｓ２０２における上書き処理が行われる様子を示す図である。
【図９】タスクの周期種類が一定周期であるタスクＣについて、次回イベント発生予想時刻が決定され、更新される様子を示す図である。
【図１０】タスクの周期種類が変動周期であるタスクＢについて、次回イベント発生予想時刻が決定され、更新される様子を示す図である。
【図１１】タイムアウト制御部３４及びメイン管理部３１により実行される処理の流れを示すフローチャートである。
【図１２】図５に示す状態からタスクＣの待ちフラグに「０」が書き込まれた様子を示す図である。
【図１３】参考手法により実行される処理の流れと、本実施例の情報処理装置１による処理の流れを比較したシーケンス図である。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２２】
以下、図面を参照し、本発明の一実施例に係る情報処理装置、タスク起床制御方法、及びタスク起動制御プログラムについて説明する。
【００２３】
［構成］
図１は、本発明の一実施例に係る情報処理装置１のシステム構成例である。情報処理装置１は、主要な構成として、プログラムメモリ１０と、データメモリ１２と、ＰＥ（マスタコア）２０＃１と、ＰＥ（ＩＯプロセッサ）２０＃２と、ＩＮＴＣ（割り込みコントローラ）２２と、タイマ２４と、マイクロＣＰＵ３０と、を備える。
【００２４】
プログラムメモリ１０は、例えばＲＯＭ（Read  Only  Memory）やフラッシュＲＯＭ、ＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）等であり、各ＰＥにより実行される命令がタスク単位で格納されている。プログラムメモリ１０は、命令バス１０Ａを介して各ＰＥに接続されている。
【００２５】
タスクとは、ある程度の機能的まとまりを有する命令群である。タスクは、ＰＥ２０＃１によって実行される。本実施例において実行されるタスクには、例えば、１（最も低い）〜７（最も高い）、の７段階で優先度が設定されており、ある優先度のタスクがＰＥ２０＃１により実行されているときに、それよりも優先度の高いタスクが起床する場合、ＰＥ＃２は、優先度が低い方のタスクの実行を停止して優先度の高いタスクを実行するようにＰＥ２０＃１を制御する。係る制御は、例えばＰＥ２０＃２に常駐するハンドラによって行われる。
【００２６】
データメモリ１２は、例えばＲＡＭ（Random  Access  Memory）であり、各ＰＥの演算結果等が格納される。データメモリ１２は、データバス１２Ａを介して各ＰＥに接続されている。
【００２７】
各ＰＥ（Processor  Element）は、プログラムカウンタ、命令フェッチユニット、命令バッファ、命令デコーダ、演算器、ＬＳＵ（Load  Store  Unit）、内部レジスタ等を備えるマイクロコンピュータである。各ＰＥは、それぞれのプログラムカウンタが示すプログラムメモリ１０のアドレスに格納された命令をフェッチしてデコード（解読）し、四則演算等を行う。四則演算の結果は、内部レジスタに格納する他、必要に応じてデータメモリ１２に出力して記憶させる。データメモリ１２に格納された命令は、各ＰＥによって参照可能となっており、各ＰＥは、情報を共有しつつ独自の処理を行うことができる。
【００２８】
ＩＮＴＣ２２には、情報処理装置１が処理を行う対象となるセンサ出力値が入力される。本実施例の情報処理装置１は、例えば車両に搭載されたエンジン制御装置として用いられる。この場合、センサ出力値には、３０ＣＡ（Crank  Angle）すなわちクランク角が３０度変化する毎に出力されるパルス信号、１０ＣＡすなわちクランク角が１０度変化する毎に出力されるパルス信号が含まれ、ＰＥ２０＃１は、これに基づいてエンジンの回転数を演算する処理等を行う。ＩＮＴＣ２２は、このような外部信号が入力されると、割り込み信号をマイクロＣＰＵ３０に出力する。
【００２９】
タイマ２４は、時刻をマイクロＣＰＵ３０に出力し、マイクロＣＰＵ３０が定周期タスクを起床させる際のトリガとする。
【００３０】
マイクロＣＰＵ（Central  Processing  Unit）３０は、各ＰＥと同様のハードウエア構成を有するマイクロコンピュータであり、その内部機能（機能部）として、メイン管理部３１と、起床時刻予想部３２と、タスク起床制御部３３と、タイムアウト制御部３４と、を備える。また、マイクロＣＰＵ３０は、専用メモリ等に（データメモリ１２の特定領域を使用してもよい）、タスク起床情報３５を保持している。これらの機能部は、例えばマイクロＣＰＵ３０の専用プログラムメモリ（又はプログラムメモリ１０）に格納されたプログラムをマイクロＣＰＵ３０が実行することによって機能する。なお、マイクロＣＰＵ３０の実行するプログラムは、製品の出荷時に予め格納されていてもよいし、ネットワークを介してダウンロードされてもよいし、可搬型メモリから専用プログラムメモリ等にインストールされてもよい。
【００３１】
まず、各機能部の機能について簡単に説明し、その後で図面を用いて詳細に説明する。メイン管理部３１は、タスク起床情報３５に基づきタスクの起床スケジュールを認識し、タスクの起床スケジュールに応じてタスクの起床を実際に行うようにＰＥ２０＃２に指示する。また、メイン管理部３１は、上記のように入力される割り込み信号や時刻の情報に基づき他の機能部に処理を実行させ、各機能部の処理結果及び決定に基づいてタスクの起床指示を修正する。
【００３２】
起床時刻予想部３２は、タスクの過去の起床時刻の履歴に基づいて、タスクの次回の起床時刻を予想する。
【００３３】
タスク起床制御部３３は、ＰＥ２０＃２が起床しようとするタスクの起床時刻が、それよりも優先度が高いタスクについて起床時刻予想部３２が予想した起床時刻を含む時間帯に該当する場合には、起床しようとするタスクの起床を、上記優先度が高いタスクの起床と同時又はそれよりも後に延期する決定を行う。ここで、起床時刻を含む時間帯とは、例えば起床時刻予想部３２が予想した起床時刻の所定時間前から所定時間後までの時間帯であり、この「所定時間」は、例えば優先度が高いほど長く設定される。
【００３４】
タイムアウト制御部３４は、タスクの起床待ち時間を計測し、計測した起床待ち時間が規定時間を超えるタスクについては、起床時刻予想部３２の予想結果に拘わらず起床させるように制御する。
【００３５】
なお、上記説明した処理の流れに代えて、ＰＥ２０＃２がタスクの起床スケジュールを認識して起床処理を行う主体となってもよい。この場合、ＰＥ２０＃２からマイクロＣＰＵ３０に起床可否について問い合わせを行う。また、ＰＥ２０＃２とマイクロＣＰＵ３０は統合され、単一の物理プロセッサであっても構わない。更に、ＰＥ２０＃１、ＰＥ２０＃２、マイクロＣＰＵ３０が全て統合されても構わない。
【００３６】
図２は、タスク起床情報３５として格納されるデータの一例である。タスク起床情報３５には、タスク毎に（図中Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇと表記した）、優先度、モード、周期種類、周期間隔、時間幅、最大待ち時間、前々々回イベント発生時刻、前々回イベント発生時刻、前回イベント発生時刻、次回イベント発生予想時刻、待ちフラグが格納される。
【００３７】
タスク起床情報３５として格納されるデータのうち、優先度、モード、周期種類、周期間隔、時間幅、最大待ち時間からなるデータセット３５Ａは、情報処理装置１のＲＯＭ等に予め格納されている値が、マイクロＣＰＵ３０の専用メモリ又はデータメモリ１２にロードされて用いられる固定データである。
【００３８】
一方、タスク起床情報３５として格納されるデータのうち、前々々回イベント発生時刻、前々回イベント発生時刻、前回イベント発生時刻、次回イベント発生予想、待ちフラグからなるデータセット３５Ｂは、マイクロＣＰＵ３０の各機能部によって更新されるデータである。
【００３９】
以下、タスク起床情報３５として格納されるデータのそれぞれについて説明する。
・タスクの優先度については前述したため説明を省略する。
・タスクのモードとは、タスク起床制御部３３がタスクの起床延期を行うか否かを示すデータであり、図２の例では、最も優先度の高いタスクＡのみがモード「０」すなわちタスクの起床延期が行われないタスクに指定され、他のタスクはモード「１」すなわちタスクの起床延期が行われるタスクに指定されている。
・タスクの周期種類は、例えば、タイマ２４の出力によって一定間隔で起床される「一定周期」、なめらかに変動する間隔をもって周期的に起床される「変動周期」、起床タイミングが予想できない「非周期」に分類される。変動周期のタスクとしては、例えば前述した３０ＣＡや１０ＣＡに基づいてエンジンの回転数を演算する処理が該当する。エンジンの回転数は、離散的な変動ではなくなめらかな変動をするため、３０ＣＡや１０ＣＡが入力される周期もなめらかに変動する間隔をもつからである。
・タスクの周期間隔は、「一定周期」のタスクが起床する間隔であり、実時間［ｓｅｃ］やクロック数等で表現される。
・タスクの時間幅は、前述したタスク起床制御部３３の処理における時間帯を規定する「所定時間」に該当する値である。
・タスクの最大待ち時間は、タイムアウト制御部３４の処理における「規定時間」に該当する値である。
・前々々回イベント発生時刻、前々回イベント発生時刻、前回イベント発生時刻は、各タスクが起床するためのイベントが発生した時刻であり、例えば起床時刻予想部３２やメイン管理部３１によって書き込まれる。
・次回イベント発生予想時刻は、起床時刻予想部３２による処理結果であり、起床時刻予想部３２によって書き込まれる。
・待ちフラグは、タスクが待ち状態であるか否かを示すフラグデータである。
【００４０】
［タスク起床制御］
以下、タスク起床制御部３３及びメイン管理部３１によって実行されるタスク起床制御について説明する。図３は、タスク起床制御部３３及びメイン管理部３１によって実行される処理の流れを示すフローチャートである。本フローチャートは、例えば所定周期で繰り返し実行される。
【００４１】
まず、タスク起床制御部３３は、タスクの起床イベントが発生するまで待機する（Ｓ１００）。
【００４２】
タスクの起床イベントが発生すると、タスク起床制御部３３は、起床イベントが発生したタスクよりも優先度の高いタスクの次回イベント発生予想時刻及び時間幅を参照し、起床イベントが発生した時刻が、起床イベントが発生したタスクよりも優先度の高いタスクについての｛次回イベント発生予想時刻±時間幅｝の時間帯に該当するか否かを判定する（Ｓ１０２）。
【００４３】
起床イベントが発生した時刻が、起床イベントが発生したタスクよりも優先度の高いタスクについての｛次回イベント発生予想時刻±時間幅｝の時間帯に該当しない場合、タスク起床制御部３３及びメイン管理部３１は、起床イベントが発生したタスク、及び待ちフラグが「１」に設定されているタスクを起床させる起床指示信号をＰＥ２０＃２に送信する（Ｓ１０４）。この結果、ＰＥ２０＃２のハンドラが、同時に受信した起床指示信号に含まれるタスクのうち優先度がより高いタスクを起床させ、優先度がより高いタスクの終了と共に優先度がより低いタスクを起床させる。
【００４４】
次に、タスク起床制御部３３は、起床指示信号を送信したタスクの待ちフラグに「０」を書き込み（Ｓ１０６）、本フローチャートの１ルーチンが終了される。
【００４５】
一方、起床イベントが発生した時刻が、起床イベントが発生したタスクよりも優先度の高いタスクについての｛次回イベント発生予想時刻±時間幅｝の時間帯に該当する場合、タスク起床制御部３３は、起床イベントが発生したタスクの待ちフラグに「１」を書き込み（Ｓ１０８）、本フローチャートの１ルーチンが終了される。
【００４６】
図４は、ある時点におけるタスク起床情報３５（図４（Ａ））の一部と、これに基づいてタスクＣが起床待ち状態とされる様子（図４（Ｂ））を示す図である。図４（Ｂ）において時刻「２４０１０」にタスクＣの起床イベントが発生すると、タスク起床制御部３３は、タスクＣよりも優先度の高いタスクＡ、Ｂの次回イベント発生予想時刻及び時間幅を参照し、時刻「２４０１０」が次回イベント発生予想時刻±時間幅の時間帯に該当するか否かを判定する。図４の例では、時刻「２４０１０」がタスクＢの次回イベント発生予想時刻±時間幅の時間帯に該当するため、タスクＣは待ち状態とされる。
【００４７】
タスクＣが待ち状態とされると、タスクＣの待ちフラグに「１」が書き込まれる。図５は、タスクＣの待ちフラグに「１」が書き込まれた様子を示す図である。
【００４８】
図６は、図４（Ｂ）に示す状態の後、タスクＣが起床される様子を示す図である。図６（Ａ）は、タスクＢの起床に伴ってタスクＣが起床される様子を示し、図６（Ｂ）は、タスクＣの最大待ち時間が経過することによってタスクＣが起床される様子を示す。
【００４９】
図６（Ａ）に示すように、例えば時刻「２４０４０」においてタスクＢの起床イベントが発生すると、タスク起床制御部３３及びメイン管理部３１は、タスクＢとタスクＣを起床させる起床指示信号をＰＥ２０＃２に送信する。ＰＥ２０＃２のハンドラは、同時に受信した起床指示信号に含まれるタスクのうち優先度がより高いタスクＢを起床させ、優先度がより高いタスクＢの終了と共に優先度がより低いタスクＣを起床させる。この結果、タスクＣの起床は、タスクＢの起床よりも後に延期されることになる。なお、まずタスクＢの起床指示信号を送信し、その後にタスクＣの起床指示信号を送信してもよいが、同時に送信することによって、送信回数を一回で済ませることができる。
【００５０】
一方、図６（Ｂ）に示すように、タスクＢが起床しないままタスクＣの起床イベント発生時刻からタスクＣの最大待ち時間が経過すると、タイムアウト制御部３４及びメイン管理部３１は、タスクＣを起床させる起床指示信号をＰＥ２０＃２に送信する。
【００５１】
［起床時刻予想処理］
以下、起床時刻予想部３２により実行される起床時刻予想処理について説明する。図７は、起床時刻予想部３２により実行される処理の流れを示すフローチャートである。本フローチャートは、例えば所定周期で繰り返し実行される。
【００５２】
まず、起床時刻予想部３２は、タスクの起床イベントが発生するまで待機する（Ｓ２００）。
【００５３】
タスクの起床イベントが発生すると、起床時刻予想部３２は、起床イベントが発生したタスクのタスク起床情報３５における前々回イベント発生時刻、前回イベント発生時刻、及び今回起床イベントが発生した時刻を、それぞれタスク起床情報３５における前々々回イベント発生時刻、前々回イベント発生時刻、前回イベント発生時刻に繰り下げて上書きする（Ｓ２０２）。図８は、図４（Ａ）に示す状態から、Ｓ２０２における上書き処理が行われる様子を示す図である。
【００５４】
次に、起床時刻予想部３２は、次回イベント発生予想時刻を更新する（Ｓ２０４）。次回イベント発生予想時刻は、タスクの周期種類が一定周期である場合と、変動周期である場合で異なる手法により決定される。
【００５５】
図９は、タスクの周期種類が一定周期であるタスクＣについて、次回イベント発生予想時刻が決定され、更新される様子を示す図である。タスクの周期種類が一定周期であるタスクについての次回イベント発生予想時刻は、例えば次式（１）により決定される。図９に示す例では、次回イベント発生予想時刻は、（１６０００＋２００１０＋２４０１０）／３＋（４０００）×２＝２８００７となる。次回イベント発生予想時刻、単に（前回イベント発生時刻）＋（周期間隔）として決定されてもよい。
【００５６】
（次回イベント発生予想時刻）＝（前々々回イベント発生時刻＋前々回イベント発生時刻＋前回イベント発生時刻）／３＋（周期間隔）×２  …（１）
【００５７】
図１０は、タスクの周期種類が変動周期であるタスクＢについて、次回イベント発生予想時刻が決定され、更新される様子を示す図である。タスクの周期種類が変動周期であるタスクについての次回イベント発生予想時刻は、例えば次式（２）により決定される。図１０に示す例では、次回イベント発生予想時刻は、２００１０＋（２４０４０−２００１０）／２×３＝２６０５５となる。
【００５８】
（次回イベント発生予想時刻）＝（前々々回イベント発生時刻）＋（前回イベント発生時刻−前々々回イベント発生時刻）×（３／２）…（２）
【００５９】
このように、次回イベント発生予想時刻を、タスクの周期種類が一定周期である場合と、変動周期である場合で異なる手法により決定することによって、タスクの周期種類が変動周期であるタスクについても次回イベント発生予想時刻を適切に決定することができる。
【００６０】
［タイムアウト制御］
以下、タイムアウト制御部３４により実行されるタイムアウト制御について説明する。図１１は、タイムアウト制御部３４及びメイン管理部３１により実行される処理の流れを示すフローチャートである。本フローチャートは、例えば所定周期で繰り返し実行される。
【００６１】
まず、タイムアウト制御部３４は、待ちフラグが「１」に設定されている各タスクについて、タスク起床イベント発生時刻（タスク起床情報３５においては「前回イベント発生時刻」から最大待ち時間が経過したか否かを判定する（Ｓ３００）。タスク起床イベント発生時刻から最大待ち時間が経過したタスクが存在しない場合、本フローチャートの１ルーチンが終了される。
【００６２】
タスク起床イベント発生時刻から最大待ち時間が経過したタスクが存在する場合、タイムアウト制御部３４及びメイン管理部３１は、タスク起床イベント発生時刻から最大待ち時間が経過したタスクを起床させる起床指示信号をＰＥ２０＃２に送信する（Ｓ３０２）。この結果、ＰＥ２０＃２のハンドラがタスクを起床させる制御を行い、ＰＥ２０＃１がタスクの実行を開始する。
【００６３】
次に、タイムアウト制御部３４は、起床指示信号を送信したタスクの待ちフラグに「０」を書き込み（Ｓ３０４）、本フローチャートの１ルーチンが終了される。図１２は、図５に示す状態からタスクＣの待ちフラグに「０」が書き込まれた様子を示す図である。図５に示す状態に対し、タイムアウト制御部３４は、タスクＣの起床イベント発生時刻「２４０１０」から最大待ち時間７０が経過した「２４０８０」をタイムアウト時刻に設定し、時刻「２４０８１」になるとタスクＣを起床させるための処理を行う。
【００６４】
［参考手法との比較］
上記説明した各機能部の処理によって、情報処理装置１は、処理効率を向上させることができる。
【００６５】
図１３は、参考手法により実行される処理の流れと、本実施例の情報処理装置１による処理の流れを比較したシーケンス図である。図１３（Ａ）は、起床時刻予想処理を行わない参考手法による処理の流れを示し、図１３（Ｂ）は本実施例の情報処理装置１による処理の流れを示している。
【００６６】
図１３（Ａ）に示すように、参考手法では、例えば優先度が「低」のタスクの実行中に優先度が「中」のタスクの起床イベントが発生し、短時間のうちに優先度が「高」のタスクの起床イベントが発生した場合、ＰＥ２０＃１のＯＳ（オペレーティングシステム）は、まず優先度が「低」のタスクの実行を停止して優先度が「中」のタスクを起床させ、次に優先度が「中」のタスクの実行を停止して優先度が「高」のタスクを起床させ、優先度が「高」のタスクが終了すると優先度が「中」のタスクを再度起床させ、優先度が「中」のタスクが終了すると優先度が「低」のタスクを再度起床させる。
【００６７】
この結果、「低」→「中」→「高」→「中」→「低」とタスクの切替が四回発生することになり、処理時間の合計は例えば２５０（［ｓｅｃ］又はクロック）となる。参考手法では、タスクの切替（Dispatch）が頻発し、処理効率が低下する場合がある。
【００６８】
これに対し、図１３（Ｂ）に示すように、本実施例の情報処理装置１では、同様に優先度が「低」のタスクの実行中に優先度が「中」のタスクの起床イベントが発生し、短時間のうちに優先度が「高」のタスクの起床イベントが発生すると予想される場合、優先度が「中」のタスクは即座に起床されずに待ち状態とされるため、ＰＥ２０＃１のＯＳは、まず優先度が「低」のタスクの実行を停止して優先度が「高」のタスクを起床させ、優先度が「高」のタスクが終了すると優先度が「中」のタスクを再度起床させ、優先度が「中」のタスクが終了すると優先度が「低」のタスクを再度起床させる。
【００６９】
この結果、「低」→「高」→「中」→「低」とタスクの切替は三回となり、処理時間の合計は例えば２４０（［ｓｅｃ］又はクロック）となる。従って、図１３（Ａ）に示す参考手法と比較すると、タスクの切替（Dispatch）の頻度を低下させ、処理効率を向上させることができる。
【００７０】
［まとめ］
以上説明した本発明の一実施例に係る情報処理装置、タスク起床制御方法、及びタスク起動制御プログラムによれば、処理効率を向上させることができる。
【００７１】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【００７２】
１      情報処理装置
１０    プログラムメモリ
１０Ａ  命令バス
１２    データメモリ
１２Ａ  データバス
２０＃１、２０＃２  ＰＥ
２２    ＩＮＴＣ
２４    タイマ
３０    マイクロＣＰＵ
３１    メイン管理部
３２    起床時刻予想部
３３    タスク起床制御部
３４    タイムアウト制御部
３５    タスク起床情報
【図１】
2013167945.tif 000003
【図２】
2013167945.tif 000004
【図３】
2013167945.tif 000005
【図４】
2013167945.tif 000006
【図５】
2013167945.tif 000007
【図６】
2013167945.tif 000008
【図７】
2013167945.tif 000009
【図８】
2013167945.tif 000010
【図９】
2013167945.tif 000011
【図１０】
2013167945.tif 000012
【図１１】
2013167945.tif 000013
【図１２】
2013167945.tif 000014
【図１３】
2013167945.tif 000015