(57)【要約】【課題】リアルタイムＯＳにおいて、システムを不安定にさせることなく、連続的に多数のタスクを起動させることができる技術を提供する。【解決手段】リアルタイムＯＳ上で稼動するプログラムにおいて、リアルタイムＯＳに対する所定の複数のタスクについての連続的なタスク起動要求（ｓｔａｒｔ＿ｔａｓｋ（））を、該複数のタスク起動要求の間に１又は２以上のＣＰＵの停止要求（ＨＡＬＴ（））を介在させながら行うようにする。たとえば、ＣＰＵの停止要求は、タスク起動要求を１又は所定回数行う毎に行われるようにする。各ＣＰＵの停止要求が行われた後、所定の周期ハンドラの起動に基づいて次のタスクについてのタスク起動要求が行われる。【選択図】図２
2007133614.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイムＯＳ上で稼動するプログラムであって、前記リアルタイムＯＳに対する所定の複数のタスクについての連続的なタスク起動要求を、該複数のタスク起動要求の間に１又は２以上のＣＰＵの停止要求を介在させながら行う起動要求手順をコンピュータに実行させることを特徴とするタスク起動プログラム。
【請求項２】
前記起動要求手順において、前記ＣＰＵの停止要求は、前記タスク起動要求を１又は所定回数行う毎に行われることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記起動要求手順において、各ＣＰＵの停止要求が行われた後、所定の周期ハンドラの起動に基づいて次のタスクについての前記タスク起動要求が行われることを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記起動要求手順において、前記所定の周期ハンドラの起動に基づいて起動するスケジューラにより、制御が前記プログラムのプロセスに移行し、前記次のタスクについてのタスク起動要求が行われることを特徴とする請求項３に記載のプログラム。
【請求項５】
リアルタイムＯＳ及びその上で稼動する請求項１〜４のいずれかのプログラムを具備することを特徴とするコンピュータ。
【請求項６】
リアルタイムＯＳを備えたコンピュータにおいて、請求項１〜４のいずれかのプログラムを用いて、所定の複数のタスクについての連続的なタスク起動要求を行うことを特徴とするタスク起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクについてのタスク起動要求を連続して行うタスク起動プログラム、該プログラムを備えたコンピュータ、及び該プログラムを用いたタスク起動方法に関する。
【背景技術】
【０００２】
従来、情報処理をリアルタイムで実行することを重視し、そのための機能を実装したＯＳとして、リアルタイムＯＳが知られている。リアルタイムＯＳを用いたマイコンシステムにおいて、システムを立ち上げる際には、リアルタイムＯＳに対して必要な各タスクの起動要求を行う必要がある。その場合、従来、タスクの起動要求を行うサービスコールを連続的に呼び出すようにしている。
【０００３】
図６はこの処理に対応するプログラムコード部分を示す。図中の「ｓｔａｒｔ＿ｔａｓｋ（）」はタスクの起動をＯＳに対して要求するサービスコールである。その引数「Ｔａｓｋ＿ＩＤ＿ｎ」（ｎ＝１〜１０）は、起動すべき各タスクを特定するものであって、各タスクに予め割り当ててあるタスク番号である。
【０００４】
同図のように、システム立上げ時における必要なタスク「Ｔａｓｋ＿ＩＤ＿ｎ」（ｎ＝１〜１０）の起動に際しては、タスクの起動要求を行うサービスコール「ｓｔａｒｔ＿ｔａｓｋ（）」を連続して発行するようにしている。各タスクが起動した後は、一定間隔で周期的に実行されるべき周期タスクについては、周期的なタイマ割込みに応じて起動する周期ハンドラにより起床されることになる。なお、リアルタイムＯＳや、そのスケジューラ、サービスコール等については、たとえば非特許文献１において説明されている。
【０００５】
なお、タスクについて「起動」とは、休止状態にあるタスクを実行可能状態に遷移させることを意味する。この場合、タスクに関する種々の情報は初期状態となっており、実行状態に遷移すると、タスクは開始アドレスから実行されることになる。一方、「起床」とはタスクの待ち状態を解除し、タスクを実行可能状態に遷移させることを意味する。その場合、待ち状態になる前の状態が復旧され、処理が再開されることになる。
【０００６】
【非特許文献１】「１時間でわかる組込みリアルタイムＯＳ」、［ｏｎｌｉｎｅ］、社団法人トロン協会、［平成１７年９月３０日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ａｓｓｏｃ．ｔｒｏｎ．ｏｒｇ／ｊｐｎ／ｓｅｍｉｎａｒ／ｉｎｄｅｘ．ｈｔｍｌ〉
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、リアルタイムＯＳのカーネルの作り方によっては、図６のように多くのタスクを一度に起動させると、スタックオーバフロー等を引き起こし、システム全体が不安定になるおそれがある。タイマ割込みに応じ、周期ハンドラによってスケジューラが起動され、各タスクが起床される場合には問題はないが、図６のように多くのタスクを一度に起動させると、それに要する処理量が、スケジューラを含めたＯＳ全体の処理能力を超えてしまうからである。
【０００８】
本発明の目的は、このような従来技術の問題点に鑑み、リアルタイムＯＳにおいて、システムを不安定にさせることなく、連続的に多数のタスクを起動させることができる技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、第１の発明に係るプログラムは、リアルタイムＯＳ上で稼動するプログラムであって、前記リアルタイムＯＳに対する所定の複数のタスクについての連続的なタスク起動要求を、該複数のタスク起動要求の間に１又は２以上のＣＰＵの停止要求を介在させながら行う起動要求手順をコンピュータに実行させることを特徴とする。
【００１０】
第２の発明に係るプログラムは、第１発明において、前記起動要求手順において、前記ＣＰＵの停止要求は、前記タスク起動要求を１又は所定回数行う毎に行われることを特徴とする。
【００１１】
第３の発明に係るプログラムは、第１又は第２発明において、前記起動要求手順において、各ＣＰＵの停止要求が行われた後、所定の周期ハンドラの起動に基づいて次のタスクについての前記タスク起動要求が行われることを特徴とする。
【００１２】
第４の発明に係るプログラムは、第３発明において、前記起動要求手順において、前記所定の周期ハンドラの起動に基づいて起動するスケジューラにより、制御が前記プログラムのプロセスに移行し、前記次のタスクについてのタスク起動要求が行われることを特徴とする。
【００１３】
第５の発明に係るコンピュータは、リアルタイムＯＳ及びその上で稼動する第１〜第４のいずれかの発明に係るプログラムを具備することを特徴とする。
【００１４】
第６の発明に係るタスク起動方法は、リアルタイムＯＳを備えたコンピュータにおいて、第１〜第４のいずれかの発明に係るプログラムを用いて、所定の複数のタスクについての連続的なタスク起動要求を行うことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、リアルタイムＯＳを有するコンピュータシステムにおいて、必要なタスクを不都合なく連続的に起動させることができる。
【発明を実施するための最良の形態】
【００１６】
図１は本発明の一実施形態に係るマイコンシステムを示すシステム構成図である。同図に示すように、このシステムは、ＣＰＵ、メモリ等によって構成されたハードウェア１１、ハードウェア１１上で起動するリアルタイムＯＳ１２、リアルタイムＯＳ１２上で起動する各種のタスク１３、及び周期ハンドラ１４等のハンドラにより構成される。ハンドラはサービスコールを発行する、タスク以外の処理プログラムである。
【００１７】
リアルタイムＯＳ１２はＯＳとしての基本機能を実装したカーネル１５、及びカーネル１５の一部であるスケジューラ１６を備える。スケジューラ１６は、起動又は起床されて実行待ち状態にある各タスクのうちから、所定の論理に従った優先順位に基づき、次に実行すべきタスクを選択し、実行させる機能を有する。
【００１８】
周期ハンドラ１４は優先順位がリアルタイムＯＳ１２のカーネルやタスク１３よりも上となっており、周期的なタイマ割込みにより、定期的に起動される。周期ハンドラ１４が起動した場合、周期ハンドラ１４によるサービスコールの発行により、リアルタイムＯＳ１２に制御が移行し、当該サービスコールに対応する処理や、スケジューラ１６による処理が行われ、優先順位の高いタスクが実行されることになる。
【００１９】
図２はシステム立上げに際し、必要なタスクの起動要求をリアルタイムＯＳ１２に対して行うプログラム部分を示す。このプログラム部分を含むプロセスは、システムの初期化後、休止状態となっている必要なタスクを実行可能状態に遷移させるため、すなわち起動させるために行われる。
【００２０】
図中の「ｓｔａｒｔ＿ｔａｓｋ（）」はタスクの起動をＯＳに対して要求するサービスコールである。その引数「Ｔａｓｋ＿ＩＤ＿ｎ」（ｎ＝１〜１０）は、起動すべき各タスクを特定するものであり、各タスクに予め割り当ててあるタスク番号である。「ＨＡＬＴ（）」はＣＰＵを停止させる命令である。各タスクの起動要求「Ｔａｓｋ＿ＩＤ＿ｎ」（ｎ＝１〜１０）の間に、ＣＰＵの停止命令「ＨＡＬＴ（）」が挿入されており、タスク起動要求毎にＣＰＵの停止命令が実行されるようになっている。
【００２１】
図３は図２のプログラム部分が実行される際の処理の流れを示す。図中の「図２のプロセス」は図２のプログラム部分のプロセスによる処理、「周期ハンドラ」は周期ハンドラ１４による処理、そして「ＲＴＯＳ」はリアルタイムＯＳ１２による処理をそれぞれ意味している。
【００２２】
図２のプロセスにおいて、タスク番号が「Ｔａｓｋ＿ＩＤ＿１」であるタスクの起動要求「ｓｔａｒｔ＿ｔａｓｋ（Ｔａｓｋ＿ＩＤ＿１）」が発行されると（Ｓ１）、リアルタイムＯＳ１２に制御が移行し、リアルタイムＯＳ１２は当該タスクを起動する（Ｓ２）。つまり、当該タスクを休止状態から実行可能状態へ遷移させる。そしてスケジューラ１６は該タスクを実行待ち行列に加えるとともに、再び制御を図２のプロセスに戻す。
【００２３】
制御が図２のプロセスに戻ると、次のＣＰＵの停止命令「ＨＡＬＴ（）」が発行され（Ｓ３）、ＣＰＵは停止状態となる。すなわち何も処理が行われない状態となる。その後、周期ハンドラ１４を定期的に起動させるための所定周期のタイミングが到来すると、タイマ割込みによりＣＰＵが動作を再開し、周期ハンドラ１４が起動する。そして、周期ハンドラ１４が所定のサービスコールを発行することにより（Ｓ４）、リアルタイムＯＳ１２に制御が移行する。すると、リアルタイムＯＳ１２のスケジューラが起動し（Ｓ５）、再び制御を図２のプロセスに戻す。
【００２４】
図２のプロセスに制御が戻ると、次のタスクについての起動要求「ｓｔａｒｔ＿ｔａｓｋ（Ｔａｓｋ＿ＩＤ＿２）」が発行され（Ｓ６）、リアルタイムＯＳ１２は当該タスクを起動する（Ｓ７）。以下、上記Ｓ３〜Ｓ７と同様の処理が繰り返され、タスク番号が「Ｔａｓｋ＿ＩＤ＿１０」までのタスクが起動されることになる。
【００２５】
このようにして、必要なタスクのすべてが起動された後は、各タスクは周期ハンドラ１４により定期的に起床され、スケジューラ１６による優先順位に従って実行されることになる。
【００２６】
本実施形態によれば、リアルタイムＯＳ１２のカーネルが、周期ハンドラ１４によって一定周期で起動される毎に（Ｓ５）、１つずつ新しいタスクが起動される（Ｓ７）ので、リアルタイムＯＳ１２における処理負荷を軽減し、リアルタイムＯＳ１２の安定した動作を可能にすることができる。
【００２７】
なお、本発明は上述の実施形態に限定されることなく、適宜変形して実施することができる。たとえば、上述の図２のプログラム部分においては、ＣＰＵの停止命令「ＨＡＬＴ（）」を、タスクの起動要求「ｓｔａｒｔ＿ｔａｓｋ（）」を１回行う毎に呼び出すようにしているが、この代わりに、リアルタイムＯＳの負荷を考慮して停止命令「ＨＡＬＴ（）」を効果的に配置し、たとえば図４に示すように、タスクの起動要求「ｓｔａｒｔ＿ｔａｓｋ（）」を３回発行する毎に、停止命令「ＨＡＬＴ（）」を呼び出すようにしてもよい。
【００２８】
また、上述図２のプログラム部分においては、各タスクの起動要求「ｓｔａｒｔ＿ｔａｓｋ（）」及びそれに付随するＣＰＵの停止命令「ＨＡＬＴ（）」を、ループ処理を用いることなく直列的に記載し、交互に呼び出すようにしているが、この代わりに、図５に示すように、ループ命令を利用し、交互に呼び出すようにしてもよい。
【００２９】
なお、上述においてはタスクの起動要求を「ｓｔａｒｔ＿ｔａｓｋ（）」としたが、リアルタイムＯＳとしては種々のものが存在し、それぞれタスクを起動する命令は異なる。また、ＣＰＵの停止命令「ＨＡＬＴ（）」についても、使用するＣＰＵや開発言語によって記述方法は異なる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態に係るマイコンシステムを示すシステム構成図である。
【図２】図１のシステムの立上げに際し、必要なタスクの起動要求を行うプログラム部分を示す図である。
【図３】図２のプログラムコードが実行される際の処理の流れを示す図である。
【図４】図１のシステムの立上げに際し、必要なタスクの起動要求を行うプログラム部分の別の例を示す図である。
【図５】図１のシステムの立上げに際し、必要なタスクの起動要求を行うプログラム部分のさらに別の例を示す図である。
【図６】従来のシステムの立上げに際し、必要なタスクの起動要求を行うプログラム部分の一例を示す図である。
【符号の説明】
【００３１】
１１：ハードウェア、１２：リアルタイムＯＳ、１３：タスク、１４：周期ハンドラ、１５：カーネル、１６：スケジューラ。
【図１】
2007133614.tif 000003
【図２】
2007133614.tif 000004
【図３】
2007133614.tif 000005
【図４】
2007133614.tif 000006
【図５】
2007133614.tif 000007
【図６】
2007133614.tif 000008
【手続補正書】
【提出日】平成18年4月28日(2006.4.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
リアルタイムＯＳ上で稼動するプログラムであって、前記リアルタイムＯＳに対する所定の複数のタスクについての連続的なタスク起動要求を、該複数のタスク起動要求の間に少なくとも１のＣＰＵの停止要求を介在させながら行う起動要求手順をコンピュータに実行させることを特徴とするタスク起動プログラム。