(57)【特許請求の範囲】
【請求項１】
タスクの状態を管理する機能を備えたオペレーティングシステムにおいて、
前記タスクの状態として実行状態と、実行可能状態と、前記実行状態及び前記実行可能状態以外の状態であるその他の状態とを備え、
前記実行状態のタスクと前記実行可能状態のタスクが存在しない場合であって、前記その他の状態のタスクの中に次に前記実行可能状態に遷移するまでの残り時間を把握可能なタスクが存在する場合には、その残り時間のうち最小のものである最小残り時間を加味した時間を投入時間として設定してＣＰＵを低消費電力モードに投入する機能を備えること
を特徴とするオペレーティングシステム。
【請求項２】
請求項１に記載のオペレーティングシステムにおいて、
前記投入時間は、前記最小残り時間よりも短い時間とすること
を特徴とするオペレーティングシステム。
【請求項３】
請求項１または２に記載のオペレーティングシステムにおいて、
前記低消費電力モードへの投入は、前記最小残り時間が低消費電力モードへの所定の投入許可時間より長い場合に行うこと
を特徴とするオペレーティングシステム。
【請求項４】
請求項１〜３のいずれかに記載のオペレーティングシステムにおいて、
前記その他の状態は条件待ち状態であること
を特徴とするオペレーティングシステム。
【請求項５】
請求項４に記載のオペレーティングシステムにおいて、
前記条件待ちの条件として前記タスクに設定したアラームを用い、
前記残り時間として、前記アラームの設定時間を利用することを
を特徴とするオペレーティングシステム。
【請求項６】
請求項１〜５のいずれかに記載のオペレーティングシステムにおいて、
前記低消費電力モードから通常動作モードに復帰した場合には、前記低消費電力モードに投入した際に停止していたタイマの値を、前記投入時間を用いて補正すること
を特徴とするオペレーティングシステム。
【請求項７】
請求項１〜６のいずれかに記載のオペレーティングシステムとしての機能をコンピュータに実行させるためのプログラム。
【請求項８】
請求項１〜７のいずれかに記載のオペレーティングシステムを備えた車両用電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
オペレーティングシステム等に関する。
【０００２】
【従来の技術】
従来より、マイコン等のコンピュータシステムには、例えばＣＰＵのクロック周波数を通常動作モードより下げたり、クロックの供給を停止することで、消費電力を低減させる低消費電力モードを備えるものがある。こうした低消費電力モードではプログラムの実行が停止等するため、システムの動作に支障がない時点で、通常動作モードから低消費電力モードへの投入を行う必要がある。そのため、通常動作モードから低消費電力モードへの投入時期と投入時間はプログラムによる処理で決定される。
【０００３】
例えば、マイコンを搭載したコンピュータシステムの一例として車両のドアロック制御等を行うドア電子制御装置（ＥＣＵ）の通常動作モードと低消費電力モードの切替の例を説明する。
ドア電子制御ＥＣＵは、図８に示すように、通常動作モードでは５ｍｓ毎に処理Ａの実行を開始し、その後、処理Ａ→処理Ｂ→処理Ｃ→…→処理ｎの順に処理を実行する。例えば、処理Ａはキーレスエントリーに関する処理、処理Ｂはドアロックに関する処理のように所定の機能を実現するアプリケーション処理である。各処理内では、その処理における処理結果に基づき、低消費電力モードに投入可能か否かを示すフラグをセットする。例えば、処理Ｂのドアロックに関する処理では、ドアロックがかかってドアが閉まってから１０分が経過した場合に、低消費電力モード投入可能のフラグを立てる。
【０００４】
そして、すべてのアプリケーション処理（処理Ａ〜ｎ）が完了すると状態管理処理を行う。この状態管理処理では、各アプリケーション処理内でセットされた低消費電力モードに投入可能か否かを示すフラグの値に基づき、通常動作モードにするか、間欠動作モードにするかを決定する。例えば、処理Ａ〜ｎで設定されたすべてのフラグの値が投入可能を示す場合には間欠動作モードに投入し、いずれかのフラグの値が投入不可能を示す場合には通常動作モードとする。
【０００５】
通常動作モードでは、そのまま５ｍｓ毎に処理Ａを開始させマイコンを低消費電力モードには投入しない。一方、間欠動作モードでは５ｍｓの実行開始間隔（図９のＴ１参照）を３００ｍｓ（図９のＴ２参照）に変更して、次のアプリケーション処理（処理１〜ｎ）の実行完了時からその次の実行開始時点までマイコンを低消費電力モードに投入する（図９のＴ３参照）。このようにして、通常動作モードから低消費電力モードへの切替を行い、各アプリケーションの処理に支障をきたすことなくＥＣＵの消費電力を削減している。
【０００６】
【発明が解決しようとする課題】
しかしながら、このように定期的に一連のプログラムの実行を開始する方法ではプログラムの規模が増大すると、プログラムの作成が困難になったり、プログラムの実行時間の最大値（図９のＴ０）が大きくなりシステムの応答性が悪くなる。そのため例えば、各処理をタスクとして管理し、タスクを切り替えて実行すするリアルタイムＯＳ等を利用する必要がある。こうしたリアルタイムＯＳ等のマルチタスクオペレーティングシステムでは、定期的にプログラムの実行を開始するメカニズムのみではなく、実行するジョブのあるタスクを実行するメカニズムをも採用している。
【０００７】
このようなリアルタイムＯＳのタスクの状態遷移の一例を図３に示す。
図３に示すリアルタイムＯＳはタスクを実行中の状態である実行状態（図３におけるｒｕｎｎｉｎｇ）と実行可能状態（ｒｅａｄｙ）と待ち状態（ｗａｉｔｉｎｇ）と休止状態（ｓｕｓｐｅｎｄｅｄ）に遷移させて管理する。待ち状態（ｗａｔｉｎｇ）と休止状態（ｓｕｓｐｅｎｄｅｄ）のタスクは、条件待ち状態であり、所定の条件が成立した際に実行可能状態（ｒｅａｄｙ）に遷移させる。例えばオペレーティングシステムは所定の割込み等の休止解除条件が成立した場合には、休止状態（ｓｕｓｐｅｎｄｅｄ）のタスクを実行可能状態（ｒｅａｄｙ）へ遷移させる。また、実行状態（ｒｕｎｎｉｎｇ）のタスクからイベントを受けた際に、対応するイベントを待つタスクを待ち状態（ｗａｔｉｎｇ）から実行可能状態（ｒｅａｄｙ）に遷移させる。
【０００８】
実行状態（ｒｕｎｎｉｎｇ）は実行中のタスクの状態であり、同時に実行可能なタスクの数だけその状態をとりうる。すなわち、タスクを実行するＣＰＵが１個であれば、実行状態（ｒｕｎｎｉｎｇ）をとるタスクは、同時には１個となる。
実行状態（ｒｕｎｎｉｎｇ）のタスクが実行を完了するとオペレーティングシステムは、そのタスクを休止状態（ｓｕｓｐｅｎｄｅｄ）に遷移させる。また、実行状態（ｒｕｎｎｉｎｇ）のタスクからイベント待ちの指示を受けると、そのタスクを待ち状態（ｗａｔｉｎｇ）へ遷移させる。
【０００９】
このような遷移により実行状態（ｒｕｎｎｉｎｇ）へタスクの割り当てが可能となると、オペレーティングシステムは、実行可能状態（ｒｅａｄｙ）のタスクの中で最も優先度の高いタスクを実行状態（ｒｕｎｎｉｎｇ）へ遷移させて、そのタスクの実行を開始する。
【００１０】
また、実行可能状態（ｒｅａｄｙ）のタスクの中に実行状態（ｒｕｎｎｉｎｇ）のタスクよりも優先度の高いタスクがある場合には、実行状態（ｒｕｎｎｉｎｇ）のタスクを実行可能状態（ｒｅａｄｙ）へ遷移させ（「プリエンプトする」という）、その優先度の高い実行可能状態（ｒｅａｄｙ）のタスクを実行状態（ｒｕｎｎｉｎｇ）に遷移させて実行する。
【００１１】
このようにタスクの状態は、割込みの発生状況、実行中のタスクからのシステムコールの発行、優先度等の要因により随時変化する。例えば図４に示すように実行中タスク（実行状態（ｒｕｎｎｉｎｇ）のタスク）は、タスクＡ→タスクＢ→タスクｎのように連続してディスパッチされたり、その後しばらく時間を空けてタスクＢが実行されたりする。
【００１２】
このようにタスクの状態が随時変化するため、アプリケーション処理の終了後から次の実行開始までの残りの時間（図９のＴ３）も一意に定義できない。また低消費電力モードへの投入時期を従来のように処理の実行完了後に決定してしまうことができない。
【００１３】
そこで本発明はマルチタスクＯＳにおいてシステムの消費電力を低減させることのできるオペレーティングシステム等を提供することを目的とする。
【００１４】
【課題を解決するための手段及び発明の効果】
上述した問題点を解決するためになされた請求項１に記載のオペレーティングシステムは、実行状態のタスクと実行可能状態のタスクが存在しない場合にＣＰＵを低消費電力モードに投入する。よって実行状態または実行可能状態のタスクが存在する場合には低消費電力モードへの投入は行われない。したがってタスクの実行中に低消費電力モードに投入されることがない。また、実行可能状態のタスクがある状態で低消費電力モードに投入されることにより実行可能状態のタスクの実行が遅延するといったこともない。すなわち、このようなオペレーティングシステムによれば、アプリケーションの処理への影響を抑えて適切な投入時期に低消費電力モードに投入することができる。
【００１５】
そしてさらに、請求項１に記載のオペレーティングシステムでは、実行状態のタスクと実行可能状態のタスクが存在せず、かつ、実行状態のタスクと実行可能状態のタスク以外のその他の状態のタスクのうち次に実行可能状態に遷移するまでの残り時間が最も少ないタスクの残り時間（最小残り時間）を加味した時間を投入時間として設定してＣＰＵを低消費電力モードに投入する。
【００１６】
実行状態や実行可能状態以外のその他の状態のタスク（例えば、図３に示す待ち状態（ｗａｔｉｎｇ）や休止状態（ｓｕｓｐｅｎｄｅｄ）のタスク）が次に実行可能状態（図３ではｒｅａｄｙ）に遷移するまでの時間は、オペレーティングシステムが把握できるものとできないものとがある。例えば、定期的に発生するイベントや割込み等によって遷移するタスクのように遷移までの残り時間が予測可能なタスクや、遷移までの残り時間をオペレーティングシステムが管理しているタスクは、オペレーティングシステムが遷移までの残り時間を把握することができる。一方、例えば不定期な割込みなどを要因として遷移するタスクなどは遷移までの残り時間を把握することができない。
【００１７】
このうちオペレーティングシステムが残り時間を把握できないタスクに関しては、前述したように実行可能状態に遷移した時点で、低消費電力モードへの投入をパスする。一方、オペレーティングシステムが把握できるタスクに関しては、その把握した各タスクの遷移までの残り時間のうち最も少ない残り時間（最小残り時間）を加味した時間を投入時間として設定して低消費電力モードに投入する。したがって、実行可能状態に遷移するまでの残り時間が把握できるその他の状態タスクについて、これらのタスクが実行可能状態に遷移するのを妨げることなく低消費電力モードに投入することが可能となる。
【００１８】
例えば、請求項２に示すように低消費電力モードへの投入時間を最小残り時間よりも短い時間とすれば、その残り時間を待ってそのタスクをその他の状態から実行可能状態に遷移させることができる。よって、低消費電力モードへの投入時間が最小残り時間をオーバーすることがなくなり、低消費電力モードへの投入時間をさらに適切に設定することができる。したがって、低消費電力モードへの投入によるアプリケーションの実行への影響を抑えることができる。
【００１９】
そして、こうした低消費電力モードへの投入は、常に行うようにしてもよいが、請求項３に示すように所定の投入許可時間より長い場合に行うようにするとよい。この投入許可時間は、低消費電力モードを実現するハードウェアで既定される投入可能時間や実行するジョブの種類に応じて設定すればよい。また例えば、実際に複数の投入許可時間を設定して消費電力と処理能力を実測し、そのアプリケーションに最も適した時間を投入許可時間を求めて設定してもよい。
【００２０】
ところで、その他の状態としては、例えば、タスク生成中の状態や異常停止状態等を含めることができるが、一般的には請求項４に示すように条件待ち状態である。このような条件待ち状態としては、例えば、入出力待ち状態、仮想メモリ処理待ち状態、通信待ち状態、同期待ち状態、その他の条件待ち状態などを設けることができる。
【００２１】
条件待ち状態として例えばイベント待ち状態を持ち、次のイベント発生までの時間がオペレーティングシステムにおいて把握できる場合には、その把握した中で最も直近のイベント発生までの時間と所定の低消費電力モード投入可能時間とを比較して低消費電力モードに投入するか否かを判定することができる。また例えば、請求項５に示すように条件待ち状態のタスクに遷移条件としてアラームが設定されている場合には、そのアラームの設定時間と所定の低消費モード投入可能時間とを比較して低消費電力モードに投入可能か否かを判定するとよい。
【００２２】
このようにして低消費電力モードに投入すると、ＣＰＵのクロックが停止したり低下することにより、例えばオペレーティングシステムのソフトウェアで管理されているタイマ（カウンタ）が停止したり遅れたりする。このような場合には、請求項６に示すようにしてタイマの値を補正すればよい。このような補正を行うことで例えばアラームのカウント時間等がこのタイマに依存する場合であっても、正しいアラームの設定時間にタスクの状態を遷移させることが可能となる。
【００２３】
なお、補正は、例えば、低消費電力モードの投入時間満了によって低消費電力モードから通常動作モードに復帰した場合には投入時間をタイマに足し込むことで行えばよい。また例えば割込みによって低消費電力モードから通常動作モードに復帰した場合には、低消費電力モードに投入されていた時間は少なくとも投入時間以下の時間であるので、例えば投入時間の半分の時間をタイマに足し込むようにすればよい。
【００２４】
なお、低消費電力モードは、例えばスリープモードやスタンバイモードと呼ばれるものを含む。例えばＣＰＵのクロックを停止させるだけでなく、ＣＰＵの周辺装置のクロックを停止させるように構成してもよい。このようにすれば、さらに消費電力を低減できる。
【００２５】
そして、こうしたオペレーティングシステムは、ハードウェアで実現することも可能であるが、請求項７に示すようにコンピュータに実行させるためのプログラムとして構成するのが一般的である。このようなプログラムの場合、例えば、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ハードディスク、ＲＯＭ、ＲＡＭ等のコンピュータ読みとり可能な記録媒体に記録し、必要に応じてコンピュータにロードして起動することにより用いることができる。また、ネットワークを介してロードして起動することにより用いることもできる。
【００２６】
なお、請求項１〜６のいずれかに記載の内容は、それぞれＣＰＵの消費電力管理方法をオペレーティングシステムによって実現させる方法を示している。したがって、オペレーティングシステムに代えてＣＰＵの消費電力モード管理方法とすることもできる。このような消費電力モード管理方法によれば、上述した各請求項と同様の効果を得ることができ、オペレーティングシステムにおいて適切に消費電力モードを制御できる。
【００２７】
以上のようなオペレーティングシステムは、種々のコンピュータシステムに適用可能である。例えば請求項８に示すように車両用電子制御装置に適用することができる。このような車両用電子制御装置によれば、車両の制御処理に支障をきたすことなく消費電力を低減することが容易にできる。
【００２８】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り種々の形態を採りうることは言うまでもない。
【００２９】
図１は、実施例としてのオペレーティングシステムを備えたボデーＥＣＵ１０を含むボデー系システム１００を示す図である。ボデー系システム１００は、車内ＬＡＮ５０に接続されたボデーＥＣＵ１０と、車内ＬＡＮ５０を介してボデーＥＣＵ１０と通信可能な通信対象ＥＣＵ２０を備える。ボデーＥＣＵ１０及び通信対象ＥＣＵ２０は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等を備えたコンピュータシステムであり、それぞれのＩ／Ｏには入力装置３０、出力装置４０、車内ＬＡＮ５０等が接続されている。
【００３０】
通信対象ＥＣＵ２０は、例えば、Ｄ席ドアＥＣＵ２０ａやＰ席ドアＥＣＵ２０ｂやインパネＥＣＵ２０ｃ等であり、入力装置３０の状態を読み取ってパケットを生成し車内ＬＡＮ５０を介してボデーＥＣＵ１０へ送信する機能と、車内ＬＡＮ５０を介して入力されるボデーＥＣＵ１０からのパケットの制御情報に基づいて出力装置４０を制御する機能を備える。
【００３１】
Ｄ席ドアＥＣＵ２０ａはドライバ側のドアに設置されたＥＣＵであり、入力装置３０としてＤ席ドアコントロールスイッチ３０ａなどが接続されており、出力装置４０としてＤ席ドアロックモータ４０ａやＤ席パワーウインドウモータなどが接続されている。Ｐ席ドアＥＣＵ２０ｂは補助席側のドアに設置されたＥＣＵであり、入力装置３０としてＰ席ドアコントロールスイッチ３０ｂ等が接続され、出力装置４０としてＰ席ドアロックモータ４０ｂやＰ席パワーウインドウモータなどが接続されている。また、インパネＥＣＵは、インパネに設置されたＥＣＵであり、例えば、出力装置４０としてブザー４０ｃやランプ４０ｄ等が接続されている。
【００３２】
ボデーＥＣＵ１０は、通信対象ＥＣＵ２０から車内ＬＡＮ５０に送信されるパケットを受信し、受信したパケットの内容に応じて、各入力装置３０の状態を監視し、制御対象の通信対象ＥＣＵ２０への制御指示を含むパケットを生成して送信する制御処理等を行う。
【００３３】
こうした処理は、ＣＰＵ１２がボデーＥＣＵ１０のＲＯＭ１４に格納されたリアルタイムＯＳのプログラムを実行し、そのリアルタイムＯＳによる管理の下、ＲＯＭ１４に格納されたアプリケーションプログラムに基づくタスクを実行することによって、ＲＡＭ１６や車内ＬＡＮ５０の接続されたＩ／Ｏ１８を制御して行う。またリアルタイムＯＳは、消費電力の制御等の動作モードの管理など各種リソースの管理を行う。
【００３４】
ボデーＥＣＵ１０のＣＰＵ１２は、通常動作モードと低消費電力モード（スリープモード）の２つの動作モードを持つ。通常動作モードは、図２に示すように１６ＭＨｚ（４ＭＨｚ×４）のマシーンクロックに基づいて、ＲＯＭ１４に記憶されたプログラムを実行するモードである。一方、低消費電力モードはＣＰＵ１２へのクロックの供給を停止し、消費電力を低減させるモードである。低消費電力モードへの投入は、ＣＰＵ１２が、ＣＰＵ１２に備えたウェイクアップ用タイマに低消費電力モードへの投入時間であるスリープ時間を書き込んだ後に、スリープ命令を実行した場合に行われる。また低消費電力モードから通常動作モードへの復帰は、ウェイクアップ用タイマに書き込まれたスリープ時間が経過した場合と、スリープ状態で割込みがかかった場合に行われる。
【００３５】
アプリケーションプログラムのタスクとしては、例えば、通信対象ＥＣＵ２０から車内ＬＡＮ５０に送信されるパケットを受信し、受信したパケットの内容に応じた処理を行うタスクがある。また、例えば出力装置４０の制御が必要な場合に制御対象の通信対象ＥＣＵ２０への制御指示を含むパケットを生成して送信する制御処理などをを行う種々のタスクがある。
【００３６】
まず、リアルタイムＯＳの処理によるタスクの管理処理について説明し、次に動作モードの管理処理について説明する。
図３は、本実施例のリアルタイムＯＳによるタスクの状態遷移を示す図である。このリアルタイムＯＳは、タスクを、実行中の状態である実行状態（ｒｕｎｎｉｎｇ）と、実行待ち状態である実行可能状態（ｒｅａｄｙ）と、イベント待ち状態である待ち状態（ｗａｔｉｎｇ）と、休止状態である休止状態（ｓｕｓｐｅｎｄｅｄ）に遷移させて実行状態を管理する。
【００３７】
実行状態（ｒｕｎｎｉｎｇ）のタスクはＣＰＵが実行中のタスクであり、同時には最大で１つのタスクがこの状態をとる。なお実行状態以外の状態は、複数のタスクが同時にその状態をとりうる。
実行状態（ｒｕｎｎｉｎｇ）のタスクは、実行を終了する際にオペレーティングシステムに対してターミネートタスクシステムコールを発行する。オペレーティングシステムは実行状態（ｒｕｎｎｉｎｇ）のタスクからのターミネートタスクシステムコールを受けると、そのタスクの状態を休止状態（ｓｕｓｐｅｎｄｅｄ）に遷移させる。また、実行中のタスクが所定のイベントを待つ必要がある場合には、ウェイトイベントシステムコールを発行する。ウェイトイベントシステムコールの発行を受けたオペレーティングシステムは、そのタスクの状態を待ち状態（ｗａｔｉｎｇ）に遷移させる。
【００３８】
このようにして実行中のタスクを別の状態に遷移させると、実行状態（ｒｕｎｎｉｎｇ）のタスクが無くなるので、オペレーティングシステムは、実行可能状態（ｒｅａｄｙ）のタスクのうち優先度が最も高いタスクを実行状態（ｒｕｎｎｉｎｇ）に遷移させ、実行を開始する（ディスパッチする）。なお、実行状態（ｒｕｎｎｉｎｇ）のタスクより優先度の高いタスクが実行可能状態（ｒｅａｄｙ）になった際には、実行状態（ｒｕｎｎｉｎｇ）のタスクを実行可能状態（ｒｅａｄｙ）に遷移させ（プリエンプトさせ）、実行可能状態（ｒｅａｄｙ）の優先度の高いタスクを実行状態（ｒｕｎｎｉｎｇ）に遷移させて実行する。すなわちこのリアルタイムＯＳはプリエンプティブなマルチタスクＯＳである。
【００３９】
休止状態（ｓｕｓｐｅｎｄｅｄ）のタスクは、休止解除条件が成立した場合に、実行可能状態に遷移させる。この休止解除条件はタスク毎に設定可能であり、▲１▼所定周期、▲２▼割込み、▲３▼チェーンタスク（連鎖実行）等がある。
「所定周期」は、アラームによって実現される。アラームは、設定された時間が経過した際にその経過を知らせるタイマであり、タスク毎に設定することができる。例えば、実行状態（ｒｕｎｎｉｎｇ）のタスクからのシステムコールによって、所定のタスクに対して１００ｍｓ後にアラームを発火させるといった設定を行うことができる。リアルタイムＯＳは、設定されたアラーム設定時間の経過を監視し、アラーム設定時間が経過した際に、そのタスクを休止状態（ｓｕｓｐｅｎｄｅｄ）から実行可能状態（ｒｅａｄｙ）に遷移させる。
【００４０】
同様に、「割込み」は、割込み要因毎に遷移させるタスクを設定し、該当する割込み要因の発生時に遷移させるものである。
また、「チェーンタスク」は、連続して実行する必要のあるタスクの実行が完了した際に、次に実行すべきタスクを遷移させるものである。例えば、現在のドアロックの状態を得るためには、車内からのドアロックの状態をチェックした後、連続して車外のからのドアロックの状態をチェックする必要がある。このような場合には、例えば車内のロックの状態をチェックするタスクＡを実行したあと連続して、車外側のロックの状態をチェックするタスクＢを実行する必要がある。こうした場合、予めタスクＢのタスクＡに対するチェーンタスクを設定しておき、タスクＡの実行が完了した際にタスクＢを休止状態（ｓｕｓｐｅｎｄｅｄ）から実行可能状態（ｒｅａｄｙ）に遷移させる。
【００４１】
一方、実行状態（ｒｕｎｎｉｎｇ）のタスクからセットイベントシステムコールが発行された場合には、そのシステムコールで指定されたイベントに対応するタスクを待ち状態（ｗａｔｉｎｇ）から実行可能状態（ｒｅａｄｙ）に遷移させる。
このようにタスクの状態は、実行中のタスクからのシステムコールの発行状況やイベントや割込みの発生状況等により随時変化する。例えば図４に示すように実行中タスク（実行状態（ｒｕｎｎｉｎｇ）のタスク）は、タスクＡ→タスクＢ→タスクｎのように連続して変化した後、しばらく時間を空けてタスクＢがディスパッチされている。この最初のタスクＡ→タスクＢ→タスクｎの遷移は、タスクＡが実行状態（ｒｕｎｎｉｎｇ）から休止状態（ｓｕｓｐｅｎｄｅｄ）あるいは待ち状態（ｗａｔｉｎｇ）に遷移した際にタスクＢが実行可能状態（ｒｅａｄｙ）にあり、すぐにリアルタイムＯＳのスケジューリングによってタスクＢが実行状態（ｒｕｎｎｉｎｇ）にディスパッチされたことを示している。一方、タスクｎが実行状態（ｒｕｎｎｉｎｇ）から他の状態に遷移した際には実行可能状態（ｒｅａｄｙ）のタスクはなく、その後、タスクＢが実行可能状態（ｒｅａｄｙ）に遷移した際に実行状態（ｒｕｎｎｉｎｇ）へディスパッチされたことを示している。
【００４２】
次に、こうしたタスクの状態を変化して管理するリアルタイムＯＳによる動作モード（通常動作モードと低消費電力モード）の管理処理について図５を参照して説明する。
図５に示すように、タスクスケジューリングを行った場合には（Ｓ１１０）、実行可能状態（ｒｅａｄｙ）及び実行状態（ｒｕｎｎｉｎｇ）にタスクがあるか否かを判定する（Ｓ１２０）。実行可能状態（ｒｅａｄｙ）または実行状態（ｒｕｎｎｉｎｇ）のいずれかにタスクが存在する場合には（Ｓ１２０：あり）、低消費電力モードへは移行はせずにＳ１１０のタスクスケジューリングに戻る。一方、実行可能状態（ｒｅａｄｙ）と実行状態（ｒｕｎｎｉｎｇ）の双方にタスクが存在しない場合には（Ｓ１２０：なし）、Ｓ１３０へ移行する。
【００４３】
Ｓ１３０では、休止状態（ｓｕｓｐｅｎｄｅｄ）のタスクが実行可能状態（ｒｅａｄｙ）に移行するまでの時間が一定時間（所定の低消費電力モード投入可能時間に相当する）以上あるか否かを判定する。この時点で休止状態（ｓｕｓｐｅｎｄｅｄ）のタスクのうち実行可能状態（ｒｅａｄｙ）に移行する時期が把握できるのは、前述した▲１▼のアラームの発火によって休止状態（ｓｕｓｐｅｎｄｅｄ）から実行可能状態（ｒｅａｄｙ）に遷移するタスクである。なお、これ以外の要因（前述▲２▼または▲３▼）の発生によって、休止状態（ｓｕｓｐｅｎｄｅｄ）から実行可能状態（ｒｅａｄｙ）にタスクの状態が遷移した場合には、前述したＳ１２０の判定によって低消費電力モードへの移行は行われない。
【００４４】
アラームは、図６に示すように、タスク毎にカウンタ値が設定可能なカウンタから構成される。このカウンタの値は、リアルタイムＯＳのソフトウェアで構成されたシステムタイマの値に基づいてカウントする。例えばシステムタイマが５カウントされる毎にカウンタの値をそれぞれ１デクリメントし、最終的にカウンタの値が０になった時に、そのタスクの状態を休止状態（ｓｕｓｐｅｎｄｅｄ）から実行可能状態（ｒｅａｄｙ）に遷移させる指示を出す。このようにアラームのカウンタの値が０になることをアラームが発火する（ｅｘｐｉｒｅ）という。例えば図６のように、タスクＡにアラーム１、タスクＢにアラーム２、タスクＣにアラーム３がそれぞれ割り当てられ、アラーム１に１００、アラーム２に１０、アラーム３に１２０がセットされているとする。リアルタイムＯＳはアラームの単位時間が経過する毎にそれぞれのアラームの値を１づつデクリメントする。これらのアラームのうちで発火までの残り時間が最も少ないもの（すなわち現時点で次に発火する予定のアラーム）の残り時間と、投入を許可する最低の時間である投入許可時間とを比較し（図５のＳ１３０）、投入許可時間より残り時間の方が大きい場合に（Ｓ１３０：あり）、Ｓ１４０へ移行する。一方、残り時間が投入許可時間以下の場合には（Ｓ１３０：なし）、Ｓ１１０へ戻る。すなわち、直近のアラームの発火までに、投入許可時間以下の時間しかない場合には、低消費電力モードへの投入は行わない。例えば、現在のアラームの状態が図６のｔ１の状態である場合には、アラーム２の値「１０」がアラームのうちで発火までの時間が最も少ないもの（最小残り時間）に相当し、そのアラームの時間は、アラーム２のカウンタの値「１０」にアラームの単位時間を掛けたものになる。したがって、例えばシステムタイマが１ｍｓ毎にカウントしておりアラームの単位時間が５ｍｓであれば、次のアラーム発火までの残り時間は、５ｍｓ×１０＝５０ｍｓとなる。ここで、低消費電力モードへの投入許可時間を例えば３００ｍｓとすると、Ｓ１３０の判定では、次のアラームまでの残り時間＜投入許可時間となるので、「Ｓ１３０：なし」となりＳ１１０へ移行し、低消費電力モードへの投入は行われない。一方、時刻ｔ３では、アラーム１が次に発火するアラームとなり、発火までの残り時間は５ｍｓ×８９＝４４５ｍｓとなって、次のアラームまでの残り時間＞投入許可時間となるので、「Ｓ１３０：あり」となりＳ１４０へ移行する。なお、低消費電力モードへの投入許可時間は、ハードウェアの制限を加味して、実際に投入許可時間を何パターンか設定して、消費電力と処理能力を実測して最も適した時間に設定する。例えば、選択可能なスリープ時間が図２に示す４パターン（２ｍｓ・８ｍｓ・３２ｍｓ・２５６ｍｓ）であれば、これらの時間のいずれかを投入許可時間として決定すればよい。
【００４５】
Ｓ１４０では、最もアラームの発火までの残り時間の少ないアラームの持つ残り時間よりも短い時間であり、かつ、ウェイクアップタイマに設定可能な時間を投入時間として設定して、低消費電力モードへ投入する。例えば、前述したｔ３時点では、次のアラームの発火まで４４５ｍｓある。したがって４４５ｍｓより短い時間の間、ＣＰＵ１２を低消費電力モードに投入する。ＣＰＵ１２は、図２に示すように２ｍｓ・８ｍｓ・３２ｍｓ・２５６ｍｓのスリープ時間（投入時間）を選択可能であるので、例えば２５６ｍｓをスリープ時間としてウェイクアップタイマのレジスタに設定する。もちろん、スリープ時間が任意に設定できるウェイクアップタイマを備えたＣＰＵであれば、例えばスリープ時間を４４０ｍｓなどに設定してもよい。このようにウェイクアップタイマの設定を行い、スリープ命令を実行して、スリープモード（低消費電力モード）に投入する。
【００４６】
すると、ＣＰＵ１２へ供給されるマシーンクロックは停止し、ウェイクアップタイマがウェイクアップまでの時間をカウントする（図５のＳ１５０の処理に相当する。）。
設定されたスリープ時間に達するか、外部割込みがかかった場合には、ＣＰＵ１２へのクロックの供給が再開され、通常動作モードに復帰してＳ１６０へ移行する。
【００４７】
Ｓ１６０では、通常動作モードへの復帰要因が外部割込みの場合には（Ｓ１６０：外部割込み）Ｓ１８０へ移行して投入時間の半分の時間に相当する値をシステムクロックに足し込んで（Ｓ１８０）、Ｓ１１０のタスクスケジューリングに戻る。一方、通常動作モードへの復帰要因が低消費電力モードへのスリープ時間（投入時間）満了の場合は（Ｓ１６０：満了）、低消費電力モードへの投入時間に相当する値をシステムクロックに足し込んで（Ｓ１７０）、Ｓ１１０へ戻る。これは基準となるシステムタイマが低消費電力モードの間停止してしまうため、補正するものである。このような補正処理により、アラームのカウンタの値もほぼ正しい値となり、処理を正常に継続することができる。
【００４８】
このような動作モードの管理処理によって、実行状態（ｒｕｎｎｉｎｇ）と実行可能状態（ｒｅａｄｙ）のタスクが存在しない状態で、かつ、アラームの発火までの残り時間が最も短いものについてその残り時間が所定の低消費電力モード投入可能時間より長い場合にＣＰＵをその残り時間より短い時間の間、低消費電力モードに投入することができる。したがって、実行状態（ｒｕｎｎｉｎｇ）や実行可能状態（ｒｅａｄｙ）のタスクやアラームの設定されているタスクの実行を妨げることなく、ボデーＥＣＵ１０の消費電力を低減することができる。また、タスクは動作モードを意識する必要がないため、アプリケーションプログラムの作成が容易にできる。
［別実施例］
（１）上記実施例においては、アラームの値は、アラームの単位時間が経過する毎にデクリメントしその値が０になった際に発火することとしたが、アラームの発火時間をシステムタイマの値の増分や絶対時間で設定するようにしてもよい。例えば、１ｍｓ毎にカウントされるシステムタイマの値が、図７（ａ）に示すように１０３００の時に発火するといった具合に設定してもよい。また、３００毎に発火するというように設定できるようにしてもよい。この場合も、図５のＳ１７０及びＳ１８０と同様の処理によって、低消費電力モードから復帰した際にシステムクロックに相当する時間を足し込む。すなわち、スリープ時間が１３０ｍｓであればスリープから復帰した際に１３０をシステムタイマに足し込む。こうすることで、図７（ｂ）に示すようなスリープによるシステムタイマの停止を原因とするアラームの発火のディレイ（遅延）を起こすことなく、図７（ｃ）に示すように正しい時間にアラームを発火させることができる。
（２）上記実施例においては、図３に示すように４つの状態でタスクを管理するオペレーティングシステムについて説明したが、もちろんこれに限定されない。例えば、待ち状態（ｗａｔｉｎｇ）を除く３つの状態をとるオペレーティングシステムや、さらに多くの状態をとるオペレーティングシステムであっても適用できる。また上記実施例では、プリエンプティブなマルチタスクＯＳとして説明したが、もちろんノンプリエンプティブなＯＳであっても適用できる。
（３）上記実施例においては、図１に示す車両のボデー系システム１００におけるボデーＥＣＵ１０のオペレーティングシステムとして説明したが、各通信対象ＥＣＵ２０のオペレーティングシステムとしても適用できる。また、その他の種々の車両用制御装置やその他の各種装置にも適用できる。特に、電池（バッテリー）駆動型の機器など、低消費電力が要求される機器のオペレーティングシステムとして処理能力と消費電力のバランスに優れた電力制御を実現することができる。
【図面の簡単な説明】
【図１】実施例のオペレーティングシステムを備えたボデーＥＣＵを含むボデー系システムの構成を示すブロック図である。
【図２】通常動作モードと低消費電力モードを実現する構成を示す説明図である。
【図３】実施例のオペレーティングシステムの管理するタスクの状態遷移に関する説明図である。
【図４】タスクの実行状態と動作モードの例を示す説明図である。
【図５】実施例のオペレーティングシステムにおける動作モードの管理処理を示すフローチャートである。
【図６】アラームの例を示す説明図である。
【図７】別実施例のアラームと実行状態を示す説明図である。
【図８】従来のスケジューラによる処理方法を示す説明図である。
【図９】図８の従来の処理方法における動作モードの切替方法を説明する図である。
【符号の説明】
１００…ボデー系システム
１０…ボデーＥＣＵ
２０…通信対象ＥＣＵ
２０ａ…Ｄ席ドアＥＣＵ
２０ｂ…Ｐ席ドアＥＣＵ
３０…入力装置
３０ａ…Ｄ席ドアコントロールスイッチ
３０ｂ…Ｐ席ドアコントロールスイッチ
４０…出力装置
４０ａ…Ｄ席ドアロックモータ
４０ｂ…Ｐ席ドアロックモータ
４０ｃ…ブザー
５０…車内ＬＡＮ
【図１】
0003610930.tif 000002
【図２】
0003610930.tif 000003
【図３】
0003610930.tif 000004
【図４】
0003610930.tif 000005
【図５】
0003610930.tif 000006
【図６】
0003610930.tif 000007
【図７】
0003610930.tif 000008
【図８】
0003610930.tif 000009
【図９】
0003610930.tif 000010