(57)【要約】【課題】マルチプロセッサ型の情報処理装置において、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアを正常に動作させること。【解決手段】本発明の情報処理装置は、複数のプロセッサと、前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にするスケジューラと、を有する。【選択図】図１
2012230488.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にするスケジューラと、を有する情報処理装置。
【請求項２】
複数のプロセッサと、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクと同一のタスクグループに属するタスクのうち前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にするスケジューラと、を有する情報処理装置。
【請求項３】
前記特定のタスクは、リアルタイムに実行するタスクである、請求項１または２に記載の情報処理装置。
【請求項４】
複数のプロセッサを有する情報処理装置が行うスケジューリング方法であって、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする、スケジューリング方法。
【請求項５】
複数のプロセッサを有する情報処理装置が行うスケジューリング方法であって、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクと同一のタスクグループに属するタスクのうち前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする、スケジューリング方法。
【請求項６】
前記特定のタスクは、リアルタイムに実行するタスクである、請求項４または５に記載のスケジューリング方法。
【請求項７】
複数のプロセッサを有する情報処理装置に、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする手順を実行させるためのプログラム。
【請求項８】
複数のプロセッサを有する情報処理装置に、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクと同一のタスクグループに属するタスクのうち前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、スケジューリング方法、プログラムに関する。
【背景技術】
【０００２】
近年、リアルタイムＯＳ（Operating System）で動作するソフトウェアの中には、１ＣＰＵ（Central Processing Unit）環境下で動作する、タスクの優先度に依存したシーケンスを含むものがある。
【０００３】
ここで、１つのＣＰＵを搭載したシングルプロセッサ型の情報処理装置において、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアを実行する場合の動作について、図４を参照して説明する。
【０００４】
なお、図４においては、プログラムには、タスクＡとタスクＢという２つのタスクが含まれるものとする。ここで、タスクＡは、他のタスクとタイムシェアリングをして実行するタスクで優先度は低く、タスクＢは、リアルタイムに実行するタスクで優先度は高いものであるとする。
【０００５】
図４に示すように、ＣＰＵ上で優先度が低いタスクＡが実行状態にあり（ステップＣ１）、この状態で、タスクＡが、優先度が高いタスクＢを起床（wakeup）させたとする（ステップＣ２）。
【０００６】
この場合、優先度が高いタスクＢにＣＰＵが割り当てられ、ＣＰＵ上ではタスクＢが実行状態になる（ステップＣ３）。これに伴い、タスクＡが実行待ち状態になる。
【０００７】
その後、タスクＢの処理が終了し、タスクＢが実行待ち状態になると（ステップＣ４）、実行待ち状態にあったタスクＡにＣＰＵが割り当てられ、ＣＰＵ上ではタスクＡが実行状態になる（ステップＣ５）。
【０００８】
このように、シングルプロセッサ型の情報処理装置においては、１ＣＰＵ環境下で動作する、タスクの優先度に依存した構造のソフトウェアを実行する場合に、優先度が高いタスクＢが実行状態にある間は、優先度が低いタスクＡにＣＰＵが割り当てられることはなく、タスクＡは必ず実行待ち状態になる。
【０００９】
しかしながら、ソフトウェアをダウンロードして使用する情報処理装置の場合、ソフトウェアの開発者が想定した情報処理装置の使用環境と、情報処理装置の実際の使用環境と、は必ずしも一致しない。
【００１０】
そのため、複数のＣＰＵを搭載したマルチプロセッサ型の情報処理装置において、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアを実行する場合もある。この場合の動作について、図５を参照して説明する。
【００１１】
なお、図５においては、プログラムには、図４と同様のタスクＡとタスクＢという２つのタスクが含まれ、情報処理装置には、ＣＰＵ＃１とＣＰＵ＃２という２つのＣＰＵが設けられているものとする。
【００１２】
図５に示すように、ＣＰＵ＃１上で優先度が低いタスクＡが実行状態にあり（ステップＤ１）、この状態で、タスクＡが、優先度が高いタスクＢを起床させたとする（ステップＤ２）。
【００１３】
この場合、ＣＰＵ＃１とは異なるＣＰＵ＃２が空き状態にあるため、そのＣＰＵ＃２が優先度が高いタスクＢに割り当てられ、ＣＰＵ＃２上でタスクＢが実行状態になる（ステップＤ３）。したがって、ＣＰＵ＃１上ではタスクＡが実行状態のままである。
【００１４】
このように、マルチプロセッサ型の情報処理装置においては、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアを実行する場合に、優先度が高いタスクＢが実行状態にある間も、優先度が低いタスクＡにＣＰＵが割り当てられ、タスクＡが実行されてしまうことがある。
【００１５】
そうすると、上述したタスクの優先度に依存したシーケンスが、期待したシーケンスとはならず、ソフトウェアを正常に動作させることができない。
【００１６】
なお、タスク（またはプロセス）の優先度に依存したシーケンスを含むソフトウェアを実行するマルチプロセッサ型の情報処理装置のその他の例としては、特許文献１，２に記載されたものがある。
【００１７】
特許文献１に記載のマルチプロセッサ型の情報処理装置においては、ＣＰＵは、自ＣＰＵがＬＡＳＴ  ＣＰＵであれば、自ＣＰＵ上で実行状態にあるプロセスが実行待ち状態にあるプロセスよりも優先度が低い場合、実行待ち状態にあるプロセスへの交換を行う。したがって、ＬＡＳＴ  ＣＰＵではないＣＰＵ上で実行状態にある優先度が低いプロセスが、優先度が高いプロセスが実行状態にある間に、実行されてしまうことがある。
【００１８】
また、特許文献２に記載のマルチプロセッサ型の情報処理装置においては、実行待ち状態にあるタスクには、複数のＣＰＵのうち、優先度が最低のタスクでかつ実行待ち状態にあるタスクの優先度と同等以下のタスクを実行しているＣＰＵが割り当てられる。したがって、ＣＰＵ上で実行状態にある優先度が低いタスクのうち優先度が最低のタスク以外のタスクが、優先度が高いタスクが実行状態にある間に、実行されてしまうことがある。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開昭６２−１１５５６７号公報
【特許文献２】特開平３−０８７９３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
上述したように、関連するマルチプロセッサ型の情報処理装置においては、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアを実行する場合に、優先度が高いタスクが実行状態にある間も、優先度が低いタスクが実行され、ソフトウェアを正常に動作させることができないという課題があった。
【００２１】
そこで、本発明の目的は、上述した課題を解決することができる情報処理装置、スケジューリング方法、プログラムを提供することにある。
【課題を解決するための手段】
【００２２】
本発明の第１の情報処理装置は、
複数のプロセッサと、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にするスケジューラと、を有する。
【００２３】
本発明の第２の情報処理装置は、
複数のプロセッサと、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクと同一のタスクグループに属するタスクのうち前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にするスケジューラと、を有する。
【００２４】
本発明の第１のスケジューリング方法は、
複数のプロセッサを有する情報処理装置が行うスケジューリング方法であって、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする。
【００２５】
本発明の第２のスケジューリング方法は、
複数のプロセッサを有する情報処理装置が行うスケジューリング方法であって、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクと同一のタスクグループに属するタスクのうち前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする。
【００２６】
本発明の第１のプログラムは、
複数のプロセッサを有する情報処理装置に、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする手順を実行させる。
【００２７】
本発明の第２のプログラムは、
複数のプロセッサを有する情報処理装置に、
前記複数のプロセッサのいずれかにおいて特定のタスクが実行状態になった場合、前記特定のタスクと同一のタスクグループに属するタスクのうち前記特定のタスクよりも優先度が低い他の全てのタスクを、前記特定のタスクの処理が終了するまで、実行待ち状態にする手順を実行させる。
【発明の効果】
【００２８】
本発明によれば、マルチプロセッサ型の情報処理装置においても、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアを正常に動作させることができるという効果が得られる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１および第２の実施形態の情報処理装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態の情報処理装置の動作を説明するシーケンス図である。
【図３】本発明の第２の実施形態の情報処理装置の動作を説明するシーケンス図である。
【図４】関連するシングルプロセッサ型の情報処理装置の動作を説明するシーケンス図である。
【図５】関連するマルチプロセッサ型の情報処理装置の動作を説明するシーケンス図である。
【発明を実施するための形態】
【００３０】
以下に、本発明を実施するための形態について図面を参照して説明する。
（１）第１の実施形態
まず、本実施形態の情報処理装置の構成について、図１を参照して説明する。
【００３１】
図１に示すように、本実施形態の情報処理装置は、複数のＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎと、プロセッサ制御部２０と、を有するマルチプロセッサ型の情報処理装置である。
【００３２】
ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎは、タスクを実行するプロセッサである。
【００３３】
プロセッサ制御部２０は、ＯＳ３０およびＯＳ３０上のスケジューラ４０を実行する。
【００３４】
スケジューラ４０は、ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎにタスクを割り当てるスケジューリングを行う。
【００３５】
このとき、スケジューラ４０は、ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎのいずれかにおいて特定のタスクが実行状態になった場合、特定のタスクよりも優先度が低い他の全てのタスクを、特定のタスクの処理が終了するまで、強制的に実行待ち状態にする。
【００３６】
ここで、特定のタスクとは、例えば、リアルタイムに実行するタスクなど、優先度が高いタスクのことをいう。
【００３７】
以下、本実施形態の情報処理装置の動作について、図２を参照して説明する。
【００３８】
なお、図２においては、プログラムには、図４と同様のタスクＡとタスクＢという２つのタスクが含まれ、情報処理装置には、ＣＰＵ（＃１）１０−１とＣＰＵ（＃２）１０−２という２つのＣＰＵが設けられているものとする。
【００３９】
図２に示すように、ＣＰＵ＃１（１０−１）上で優先度が低いタスクＡが実行状態にあり（ステップＡ１）、この状態で、タスクＡが、優先度が高いタスクＢを起床させる命令を発行したとする（ステップＡ２）。
【００４０】
この場合、スケジューラ４０は、ＣＰＵ＃２（１０−２）が空き状態にあるため、タスクＢにＣＰＵ＃２（１０−２）を割り当て、ＣＰＵ＃２（１０−２）上でタスクＢを起床させる（ステップＡ３）。これにより、ＣＰＵ＃２（１０−２）上ではタスクＢが実行状態になる（ステップＡ４）。
【００４１】
また、スケジューラ４０は、タスクＢが優先度が高いタスクであるため、ＣＰＵ＃１（１０−１）上で実行状態にあったタスクＡを強制的に実行待ち状態にする（ステップＡ５）。
【００４２】
その後、タスクＢの処理が終了し、タスクＢが実行待ち状態になると（ステップＡ６）、スケジューラ４０は、強制的に実行待ち状態にしたタスクＡにＣＰＵ＃１（１０−１）を割り当て、ＣＰＵ＃１（１０−１）上でタスクＡを起床させる（ステップＡ７）。これにより、ＣＰＵ＃１（１０−１）上ではタスクＡが実行状態になる（ステップＡ８）。
【００４３】
上述のように本実施形態においては、スケジューラ４０は、ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎのいずれかにおいて、優先度が高い特定のタスクが実行状態になった場合、特定のタスクよりも優先度が低い他の全てのタスクを、特定のタスクの処理が終了するまで、強制的に実行待ち状態にする。
【００４４】
そのため、例えば、図２の例においては、スケジューラ４０は、優先度が高いタスクＢが実行状態になった場合、タスクＢよりも優先度が低いタスクＡを、タスクＢの処理が終了するまで、強制的に実行待ち状態にする。
【００４５】
したがって、優先度が高いタスクが実行状態にある間に、優先度が低いタスクが実行されることはないため、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアであっても、正常に動作させることができるという効果が得られる。
【００４６】
なお、図２の例においては、優先度が高いタスクＢを起床させる際に、空き状態のＣＰＵが存在していたが、ＣＰＵの数やタスクの数によっては、空き状態のＣＰＵが存在しない場合もある。その場合は、タスクＢよりも優先度が低いタスクＡを強制的に実行待ち状態にして、空き状態のＣＰＵを作ってから、その空き状態のＣＰＵをタスクＢに割り当て、タスクＢを起床させれば良い。
（２）第２の実施形態
上述した第１の実施形態においては、優先度が高い特定のタスクが実行状態になった場合、他の全てのタスクを強制的に実行待ち状態にしていた。
【００４７】
しかしながら、タスクは、タスクの種別などに応じてタスク集合（以下、タスクグループと称す）に分類されており、特定のタスクが実行状態になっている間に、特定のタスクとは異なるタスクグループに属するタスクを実行しても、問題ないケースもある。
【００４８】
そこで、本実施形態においては、スケジューラ４０は、ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎのいずれかにおいて、特定のタスクが実行状態になった場合、特定のタスクと同一のタスクグループに属するタスクのうち特定のタスクよりも優先度が低い他の全てのタスクを、特定のタスクの処理が終了するまで、強制的に実行待ち状態にする。
【００４９】
なお、本実施形態は、第１の実施形態と比較して、スケジューラ４０の上述した動作が異なり、第１の実施形態と構成自体は同様である。
【００５０】
以下、本実施形態の情報処理装置の動作について、図３を参照して説明する。
【００５１】
なお、図３においては、プログラムには、タスクＡとタスクＢとタスクＣという３つのタスクが含まれ、タスクＡ，Ｂがタスクグループαに属し、タスクＣがタスクグループβに属するものとする。ここで、タスクＡ，Ｃは、他のタスクとタイムシェアリングをして実行するタスクで優先度が低く、タスクＢは、リアルタイムに実行するタスクで優先度は高いものであるとする。また、情報処理装置には、ＣＰＵ（＃１）１０−１とＣＰＵ（＃２）１０−２という２つのＣＰＵが設けられているものとする。
【００５２】
図３に示すように、タスクグループβに属し優先度が低いタスクＣがＣＰＵ＃１（１０−１）上で実行状態にあり（ステップＢ１）、この状態で、タスクＣが、タスクグループαに属し優先度が低いタスクＡを起床させる命令を発行したとする（ステップＢ２）。
【００５３】
この場合、スケジューラ４０は、ＣＰＵ＃２（１０−２）が空き状態にあるため、タスクＡにＣＰＵ＃２（１０−２）を割り当て、ＣＰＵ＃２（１０−２）上でタスクＡを起床させる（ステップＢ３）。これにより、ＣＰＵ＃２（１０−２）上ではタスクＡが実行状態になる（ステップＢ４）。このとき、ＣＰＵ＃１（１０−１）上ではタスクＣが実行状態のままである。
【００５４】
ここで、ＣＰＵ＃２（１０−２）上で実行状態にあるタスクＡが、優先度が高いタスクＢを起床させる命令を発行したとする（ステップＢ５）。
【００５５】
この場合、タスクＢは優先度が高いタスクであり、タスクＡとＢは同一のタスクグループαに属するため、タスクＢが実行状態になったら、タスクＡは強制的に実行待ち状態にしなければならない。ただし、この時点で空き状態にあるＣＰＵはない。
【００５６】
そこで、スケジューラ４０は、ＣＰＵ＃２（１０−２）上で実行状態にあったタスクＡを強制的に実行待ち状態にし（ステップＢ６）、その後、タスクＢにＣＰＵ＃２（１０−２）を割り当て、ＣＰＵ＃２（１０−２）上でタスクＢを起床させる（ステップＢ７）。これにより、ＣＰＵ＃２（１０−２）上ではタスクＢが実行状態になる（ステップＢ８）。このとき、ＣＰＵ＃１（１０−１）上ではタスクＣが実行状態のままである。
【００５７】
その後、タスクＢの処理が終了し、タスクＢが実行待ち状態になると（ステップＢ９）、スケジューラ４０は、強制的に実行待ち状態にしたタスクＡにＣＰＵ＃２（１０−２）を割り当て、ＣＰＵ＃２（１０−２）上でタスクＡを起床させる（ステップＢ１０）。これにより、ＣＰＵ＃２（１０−２）上ではタスクＡが実行状態になる（ステップＢ１１）。
【００５８】
上述のように本実施形態においては、スケジューラ４０は、ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎのいずれかにおいて、優先度が高い特定のタスクが実行状態になった場合、特定のタスクと同一のタスクグループに属するタスクのうち特定のタスクよりも優先度が低い他の全てのタスクを、特定のタスクの処理が終了するまで、強制的に実行待ち状態にする。
【００５９】
そのため、例えば、図３の例においては、スケジューラ４０は、優先度が高いタスクＢが実行状態になった場合、タスクＢと同一のタスクグループに属しタスクＢよりも優先度が低いタスクＡのみを、タスクＢの処理が終了するまで、強制的に実行待ち状態にする。
【００６０】
したがって、優先度が高いタスクが実行状態にある間に、そのタスクと同一のタスクグループに属する優先度が低いタスクが実行されることはないため、１ＣＰＵ環境下で動作する、タスクの優先度に依存したシーケンスを含むソフトウェアであっても、正常に動作させることができるという効果が得られる。
【００６１】
なお、図３の例においては、優先度が高いタスクＢを起床させる際に、空き状態のＣＰＵが存在していなかったが、ＣＰＵの数やタスクの数によっては、空き状態のＣＰＵが存在する場合もある。その場合は、空き状態のＣＰＵ上でタスクＢを起床させてから、タスクＢよりも優先度が低いタスクＡを強制的に実行待ち状態にしても良い。
【００６２】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更をすることができる。
【００６３】
例えば、上記実施形態では、プロセッサ制御部２０が、ＯＳ３０やスケジューラ４０を実行する例を挙げたが、ＣＰＵ（＃１〜＃ｎ）１０−１〜１０−ｎの何れかでＯＳ３０やスケジューラ４０を実行してもよい。
【００６４】
また、上記実施形態では、ＣＰＵの数が２個である場合の例を挙げたが、ＣＰＵの数はこれに限定されない。
【００６５】
また、本発明は、例えば、携帯電話機、スマートフォン、ゲーム機、タブレット型ＰＣ（Personal Computer）、ノート型ＰＣなどのマルチプロセッサ型の情報処理装置に適用可能である。
【００６６】
また、本発明の情報処理装置にて行われる方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
【符号の説明】
【００６７】
１０−１〜１０−ｎ    ＣＰＵ
２０    プロセッサ制御部
３０    ＯＳ
４０    スケジューラ
【図１】
2012230488.tif 000003
【図２】
2012230488.tif 000004
【図３】
2012230488.tif 000005
【図４】
2012230488.tif 000006
【図５】
2012230488.tif 000007