プロセッサと、制御対象の機能安全の確保に関する処理を実行する安全関連タスク、及び、その他の前記制御対象の制御に関する処理を実行する非安全関連タスクに対する前記プロセッサの実行時間の割り当てを制御するシステムプログラムと、前記タスクにおける処理の終了を示す終了情報が格納される記憶部と、を備え、前記プロセッサは、前記システムプログラムを実行することによって、前記安全関連タスクが実行可能状態である場合に当該安全関連タスクに前記実行時間が割り当てられる安全関連タイムパーティション、及び、前記非安全関連タスクが実行可能状態である場合に当該非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティションのスケジューリング内容を、当該安全関連タイムパーティション及び当該非安全関連タイムパーティションの少なくとも1つタイムパーティションの期間が一定周期で開始されるように示すスケジューリング情報に従って、前記タスクをスケジューリングし、前記プロセッサは、前記一定周期のタイムパーティションにおけるタスクを実行することによって、当該タスクにおける処理が終了したときに、当該タスクにおける処理の終了を示す終了情報を前記記憶部に格納して、当該タスクに対する前記実行時間を解放して当該タスクを実行可能状態とし、前記プロセッサは、前記スケジューリングにおいて、前記記憶部に前記終了情報が格納されている場合、前記一定周期のタイムパーティションにおいて、当該一定周期のタイムパーティションにおけるタスクが実行可能状態であっても、当該タスクに対する前記実行時間の割り当てを抑止し、前記プロセッサは、前記システムプログラムを実行することによって、前記一定周期のタイムパーティションの期間が終了するときから、当該タイムパーティションの次の周期における期間が開始されるときまでに、前記記憶部に格納された終了情報を削除する安全制御装置。前記一定周期のタイムパーティションは、さらに、前記安全関連タスク及び前記非安全関連タスクよりも優先度が低く、任意の処理を実行する少なくとも1つの任意処理タスクに前記実行時間が割り当てられ、前記プロセッサは、前記任意処理タスクを実行することによって、当該任意処理タスクにおける処理が終了したときに、当該任意処理タスクにおける処理の終了を示す終了情報を前記記憶部に格納して、当該任意処理タスクに対する前記実行時間を解放して当該任意処理タスクを実行可能状態とし、前記プロセッサは、前記スケジューリングにおいて、より優先度の高いタスクに優先的に前記実行時間を割り当てるとともに、前記一定周期のタイムパーティションにおけるタスクが実行可能状態であっても、当該タスクにおける処理の終了を示す終了情報が前記記憶部に格納されている場合、当該タスクに対する前記実行時間の割り当てを抑止する請求項1に記載の安全制御装置。前記プロセッサは、前記スケジューリングにおいて、前記一定周期のタイムパーティションの期間が終了したときに、当該タイムパーティションにおけるタスクの処理の終了を示す終了情報が前記記憶部に格納されていない場合、異常と判定して当該異常に応じた処理を実行する請求項1又は2に記載の安全制御装置。前記一定周期のタイムパーティションにおけるタスクは、当該一定周期のタイムパーティションに対して、当該タスクを実行開始する開始タイミング、及び、当該タスクの実行終了を判定する終了判定タイミングが予め定められており、前記プロセッサは、前記スケジューリングにおいて、前記開始タイミングが定められたタイムパーティションの期間が開始されるときに、当該タイムパーティションにおけるタスクの実行を開始するとともに、前記終了判定タイミングが定められたタイムパーティションの期間が終了したときに、前記記憶部に前記終了情報が格納されていない場合、異常と判定して当該異常に応じた処理を実行する請求項1に記載の安全制御装置。前記安全関連タイムパーティション又は前記非安全関連タイムパーティションは、さらに、当該安全関連タイムパーティション又は当該非安全関連タイムパーティションにおける安全関連タスク又は非安全関連タスクよりも優先度が低く、任意の処理を実行する少なくとも1つの任意処理タスクに前記実行時間が割り当てられ、前記プロセッサは、前記スケジューリングにおいて、より優先度の高いタスクに優先的に前記実行時間を割り当てる請求項1に記載の制御装置。前記プロセッサは、前記任意処理タスクを実行することによって、前記任意処理タスクに前記実行時間が割り当てられる安全関連タイムパーティション又は非安全関連タイムパーティションが終了するまでの期間が、当該任意処理タスクが実行する処理に必要な期間に満たない場合、当該任意処理タスクに対する前記実行時間を解放する請求項5に記載の安全制御装置。制御対象の機能安全の確保に関する処理を実行する安全関連タスクが実行可能状態である場合に当該安全関連タスクにプロセッサの実行時間が割り当てられる安全関連タイムパーティション、及び、その他の前記制御対象の制御に関する処理を実行する非安全関連タスクが実行可能状態である場合に当該非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティションのスケジューリング内容を、当該安全関連タイムパーティション及び当該非安全関連タイムパーティションの少なくとも1つタイムパーティションの期間が一定周期で開始されるように示すスケジューリング情報に従って、前記タスクをスケジューリングして、当該一定周期のタイムパーティションにおいて、当該一定周期のタイムパーティションにおけるタスクに前記実行時間を割り当てるステップと、前記実行時間が割り当てられたタスクにおける処理の実行が終了したときに、当該タスクにおける処理の終了を示す終了情報を前記記憶部に格納して、当該タスクに対する前記実行時間を解放して当該タスクを実行可能状態とするステップと、当該一定周期のタイムパーティションにおいてタスクをスケジューリングするときに、前記記憶部に前記終了情報が格納されている場合、当該一定周期のタイムパーティションにおけるタスクが実行可能状態であっても、当該タスクに対する前記実行時間の割り当てを抑止するステップと、当該一定周期のタイムパーティションの期間が終了するときから、当該タイムパーティションの次の周期における期間が開始されるときまでに、前記記憶部に格納された終了情報を削除するステップと、を備えた安全制御方法。しかしながら、特許文献1に例示されるような安全制御装置には、以下に説明する課題があった。以下、図31~34を参照して、その課題について説明する。まず、第1の課題について説明する。サービスロボットの制御においては、一定周期で繰り返し実行する必要のある処理が数多く存在している。例えば、サービスロボットのアクチュエータを制御する処理や、サービスロボットのセンサから情報を取得して、取得した情報を確認することでサービスロボットの状態を監視する処理等である。しかし、特許文献1に例示されているような、タイムパーティションニングを採用したシステムプログラムは、一定周期で強制的にタイムパーティションを切り替えて、タイムパーティションに属するタスクにプロセッサの実行時間を割り当てるようにしている。そのため、図31に示すように、一定周期で処理を繰り返す必要のあるタスクの実行周期と、タイムパーティションの切り替え周期が非同期に設計されている場合は、ジッタ周期のブレが発生してしまうという問題がある。なお、図31では、安全関連系の安全制御タスクが属するタイムパーティションTP3と、通常制御タスク図示せずが属するタイムパーティションTP2とがスケジューリングされる場合について示している。また、一定周期で処理を繰り返す必要のあるタスクが、安全制御タスクである場合について示している。このように、安全制御タスクを実行してから一定周期経過後の次に安全制御タスクを実行すべきタイミングにおいて、安全制御タスクが属するTP3がアクティブにならないときがある。その場合、安全制御タスクの実行が遅延して、安全制御タスクを一定周期で実行できなくなってしまうという問題がある。また、図32に示すように、タスクの実行周期と、タイムパーティションの切り替え周期を同期させたとしても、以下に説明する問題が発生する。まず、安全制御タスクが処理の実行終了後にスリープして待ち状態になった後、次に安全制御タスクの属するTP3がアクティブになるまでに安全制御タスクを起床させて実行可能状態にする必要がある。安全制御タスクの実行周期と、タイムパーティションの切り替え周期を同期させたとしても、次のTP3がアクティブになったときに安全制御タスクの実行が開始されなければ、一定周期で安全制御タスクが実行されることにはならないからである。この場合、安全制御タスクを起床させる方法としては、TP3の前のTP2に属する通常制御タスクによって安全制御タスクを起床させる方法が考えられる。例えば、通常制御タスクがタスク間通信によって安全制御タスクを起床させる。しかし、このようにした場合、安全関連系の安全制御タスクと、そうでない通常制御タスクとの独立性が保証できなくなってしまうという問題がある。続いて、第2の課題について説明する。上述したように、サービスロボットの制御においては、一定周期で繰り返し実行する必要のある処理が数多く存在している。一定周期で繰り返す必要のある処理を実行するタスクを、一定周期で繰り返して実行するためには、そのタスクの実行が一定周期内で終了している必要がある。図33では、安全関連系の安全制御タスクが属するタイムパーティションTP3と、通常制御タスク図示せずが属するタイムパーティションTP2とがスケジューリングされる場合について示している。ここでは、一定周期で処理を繰り返す必要のあるタスクが安全制御タスクであり、TP3がそれと同様の一定周期で繰り返しアクティブとなる場合について示している。図33では、一定周期で繰り返されるTP3の期間内で安全制御タスクの実行が終了していないため、安全制御タスクは、一定周期で正しく動作していないことになる。ここで、タスクにおける処理が一定周期で正しく動作しているかを確認するためには、タスクを生成する個々のソフトウェアに、一定周期で実行されているか、又は、一定周期内で処理が終了したかを監視する仕組みを作り込む必要があった。この場合、個々のソフトウェアにおける処理内容が増加し、ソフトウェアが複雑になってしまうという問題が発生していた。続いて、第3の課題について説明する。タイムパーティションニングにおいては、図34に示すように、タイムパーティションの期間内でタスクの実行が確実に終了するようにするために、タイムパーティションの時間を、実際に必要な実行時間の最悪ケースよりも多くとるといったことがなされている。つまり、タイムパーティションの時間を、タスクの実行時間が最も長くなってしまった場合における実行時間よりも余裕をもって多くとるようにしている。そのため、図34に示すように、最悪ケースに至るほどの実行時間がかからずにタスクが終了してしまった場合は、タイムパーティションの時間に空き時間が生じてしまうという問題があった。つまり、プロセッサの実行時間を有効に利用することができていないという問題がある。本発明は、上述した知見に基づいてなされたものであって、タイムパーティションニングにおいて、安全関連系の独立性を保証しつつ、一定周期でのタスクの実行を可能とする安全制御装置及び安全制御方法を提供することを目的とする。本発明の第1の態様にかかる安全制御装置は、プロセッサと、制御対象の機能安全の確保に関する処理を実行する安全関連タスク、及び、その他の前記制御対象の制御に関する処理を実行する非安全関連タスクに対する前記プロセッサの実行時間の割り当てを制御するシステムプログラムと、前記タスクにおける処理の終了を示す終了情報が格納される記憶部と、を備え、前記プロセッサは、前記システムプログラムを実行することによって、前記安全関連タスクが実行可能状態である場合に当該安全関連タスクに前記実行時間が割り当てられる安全関連タイムパーティション、及び、前記非安全関連タスクが実行可能状態である場合に当該非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティションのスケジューリング内容を、当該安全関連タイムパーティション及び当該非安全関連タイムパーティションの少なくとも1つタイムパーティションの期間が一定周期で開始されるように示すスケジューリング情報に従って、前記タスクをスケジューリングし、前記プロセッサは、前記一定周期のタイムパーティションにおけるタスクを実行することによって、当該タスクにおける処理が終了したときに、当該タスクにおける処理の終了を示す終了情報を前記記憶部に格納して、当該タスクに対する前記実行時間を解放して当該タスクを実行可能状態とし、前記プロセッサは、前記スケジューリングにおいて、前記記憶部に前記終了情報が格納されている場合、前記一定周期のタイムパーティションにおいて、当該一定周期のタイムパーティションにおけるタスクが実行可能状態であっても、当該タスクに対する前記実行時間の割り当てを抑止し、前記プロセッサは、前記システムプログラムを実行することによって、前記一定周期のタイムパーティションの期間が終了するときから、当該タイムパーティションの次の周期における期間が開始されるときまでに、前記記憶部に格納された終了情報を削除するものである。本発明の第2の態様にかかる安全制御方法は、制御対象の機能安全の確保に関する処理を実行する安全関連タスクが実行可能状態である場合に当該安全関連タスクにプロセッサの実行時間が割り当てられる安全関連タイムパーティション、及び、その他の前記制御対象の制御に関する処理を実行する非安全関連タスクが実行可能状態である場合に当該非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティションのスケジューリング内容を、当該安全関連タイムパーティション及び当該非安全関連タイムパーティションの少なくとも1つタイムパーティションの期間が一定周期で開始されるように示すスケジューリング情報に従って、前記タスクをスケジューリングして、当該一定周期のタイムパーティションにおいて、当該一定周期のタイムパーティションにおけるタスクに前記実行時間を割り当てるステップと、前記実行時間が割り当てられたタスクにおける処理の実行が終了したときに、当該タスクにおける処理の終了を示す終了情報を前記記憶部に格納して、当該タスクに対する前記実行時間を解放して当該タスクを実行可能状態とするステップと、当該一定周期のタイムパーティションにおいてタスクをスケジューリングするときに、前記記憶部に前記終了情報が格納されている場合、当該一定周期のタイムパーティションにおけるタスクが実行可能状態であっても、当該タスクに対する前記実行時間の割り当てを抑止するステップと、当該一定周期のタイムパーティションの期間が終了するときから、当該タイムパーティションの次の周期における期間が開始されるときまでに、前記記憶部に格納された終了情報を削除するステップと、を備えたものである。上述した本発明の各態様によれば、タイムパーティションニングにおいて、安全関連系の独立性を保証しつつ、一定周期でのタスクの実行を可能とする安全制御装置及び安全制御方法を提供することができる。以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。<発明の実施の形態1>本実施の形態にかかる安全制御装置1は、サービスロボットや運輸機器等に搭載されて機能安全確保のための安全制御を実行する。安全制御装置1は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図1は、本実施の形態にかかる安全制御装置1の構成例を示すブロック図である。プロセッサ10は、プログラム命令ストリームの取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図1では、1つのプロセッサ10のみを示しているが、安全制御装置1は、複数のプロセッサ10を有するマルチプロセッサ構成であってもよい。また、プロセッサ10は、マルチコアプロセッサでもよい。プロセッサ10は、システムプログラムとしてのオペレーティングシステムOS100を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。本実施の形態のプロセッサ10が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。実行用メモリ11は、プロセッサ10によるプログラム実行のために使用されるメモリである。実行用メモリ11には、不揮発性メモリ13からロードされたプログラムOS100及びアプリケーション101~103等、プロセッサ10の入出力データ等が記憶される。なお、プロセッサ10は、プログラムを不揮発性メモリ13から実行用メモリ11にロードすることなく、これらのプログラムを不揮発性メモリ13から直接実行してもよい。具体的には、実行用メモリ11は、SRAMStaticRandomAccessMemory、DRAMDynamicRandomAccessMemory等のランダムアクセス可能な揮発性メモリとすればよい。図1の実行用メモリ11は、論理的な構成単位を示している。すなわち、実行用メモリ11は、例えば、複数のSRAMデバイスの組み合わせ、複数のDRAMデバイスの組み合わせ、又はSRAMデバイスとDRAMデバイスの組み合わせでもよい。I/Oポート12は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置1がサービスロボットに搭載される場合であれば、外部デバイスは、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットを動作させるアクチュエータ等である。不揮発性メモリ13は、電力の供給を受けることなく、実行用メモリ11に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ13は、ROMReadOnlyMemory、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ13は、OS100及びアプリケーション101~103を格納する。なお、不揮発性メモリ13の少なくとも一部は安全制御装置1から取り外し可能に構成されてもよい。例えば、アプリケーション101~103が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ13の少なくとも一部は、安全制御装置1の外部に配置されてもよい。OS100は、プロセッサ10によって実行されることにより、プロセッサ10及び実行用メモリ11及び不揮発性メモリ13等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供等を行う。さらに、機能安全の確保に関連する安全監視アプリケーション101及び安全制御アプリケーション103の通常制御アプリケーション102からの独立性を高めるため、OS100は、ハードウェア資源を、時間的および空間的に保護する機能を有する。ここで、ハードウェア資源とは、プロセッサ10、実行用メモリ11、I/Oポート12を含む。このうち、時間的な保護は、プロセッサ10の実行時間という時間的な資源をパーティショニングすることにより行う。具体的に述べると、時間的な保護は、プロセッサ10の実行時間をパーティショニングし、各パーティションタイムパーティションと呼ぶにタスクプロセス又はスレッドを割り当てることにより行う。OS100のスケジューリング機能パーティションスケジューラ21は、各タイムパーティション以下、TPと略称する場合がある。に割り当てられたタスクに対して、プロセッサ10の実行時間を含む資源の利用を保証する。図2は、タイムパーティショニングに関する概念図である。図2の例では、予め定められた1サイクル時間を3つのTP1、TP2及びTP3に分割する例を示している。例えば、1サイクル時間を100Tickとした場合、このうち前半の20TickがTP1、中間の30TickがTP2、後半の50TickがTP3と規定される。また、図2の例では、第1アプリケーションAPL1~第4アプリケーションAPL4が、TP1~TP3のいずれかに割り当てられている。OS100のスケジューリング機能パーティションスケジューラ21は、時間の経過に応じて、TP1~TP3のいずれをアクティブにするかを選択決定する。そして、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。一方、空間的な保護は、実行用メモリ11及びI/Oポート12を含む固定的な資源をパーティショニングし、各パーティションリソースパーティションと呼ぶにタスクを割り当てることにより行う。OS100のスケジューリング機能パーティションスケジューラ21は、予め割り当てられたリソースパーティション以下、RPと略称する場合がある。を超えてタスクが他のリソースにアクセスすることを禁止する。図3は、リソースパーティショニングに関する概念図である。図3の例では、2つのRPRP1及びRP2を示している。RP1には、実行用メモリ11及び不揮発性メモリ13の一部A領域と、I/Oポート12の一部ポートAが割り当てられている。また、RP2には、実行用メモリ11及び不揮発性メモリ13の他の一部B領域と、I/Oポート12の他の一部ポートBが割り当てられている。RP1からはRP2に割り当てられたリソースへのアクセスが禁止され、RP2からはRP1に割り当てられたリソースへのアクセスが禁止される。なお、全てのリソースがいずれかのRPに排他的に割り当てられる必要はない。つまり、複数のRPによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータには、通常制御アプリケーション102及び安全制御アプリケーション103の双方からアクセスできる必要がある。よって、通常制御アプリケーション101が属するRPと安全制御アプリケーション102が属するRPによって、アクチュエータを制御するためのI/Oポートを共有するとよい。図1に戻り説明を続ける。アプリケーション101~103は、OS100及びプロセッサ10によって提供されるマルチプログラミング環境で実行される。このうち、安全監視アプリケーション101は、通常制御アプリケーション102の実行状況の監視と、安全制御アプリケーション103の実行状況の監視と、I/Oポート12への入出力データの監視と、をプロセッサ10に実行させるための命令コードを含む。さらに、安全監視アプリケーション101は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全監視アプリケーション101は、安全関連アプリケーションである。また、通常制御アプリケーション102は、サービスロボット等の制御対象に通常の機能動作を行わせるための制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、通常制御アプリケーション102は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、通常制御アプリケーション102は、非安全関連アプリケーションである。また、安全制御アプリケーション103は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、安全制御アプリケーション103は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全制御アプリケーション103は、安全関連アプリケーションである。リセット回路14は、OS100からの信号に基づき、マイクロコントローラ15のリセットを行う。リセット回路14を用いたマイクロコントローラ15のリセット機構については後述する。続いて以下では、パーティションスケジューラ21と、アプリケーション101~103の起動により生成されるタスクと、の関係について、図4を用いて説明する。図4は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28との関係を示す図である。マイクロコントローラ15は、プロセッサ10、実行用メモリ11、I/Oポート12、不揮発性メモリ13等を含む。なお、図4では、マイクロコントローラ15の外部にリセット回路14を備える構成を例示しているが、マイクロコントローラ15の内部にリセット回路14を含む構成としてもよい。マイクロコントローラ15には、外部のクロック源からのクロック信号が供給され、プロセッサ10等は、このクロック信号に基づく所定のタイマー周期で動作する。本実施の形態では、所定のタイマー周期を、1Tickであるとして説明する。このため、プロセッサ10によりOS100が実行されることで、パーティションスケジューラ21が1Tickごとに動作すると共に、各TPにおいて、タスクスケジューラ23、25、27およびタスク安全監視タスク24、通常制御タスク26、安全制御タスク28が1Tickごとに動作する。パーティションスケジューラ21は、1Tickごとに動作し、TPの切り替えパーティションスケジューリングを行う。パーティションスケジューラ21は、次の1Tickの間にTP1~TP3のいずれをアクティブにするかを選択決定する。さらに、パーティションスケジューラ21は、選択したTPに関するタスクスケジューラの動作を開始させる。パーティションスケジューラ21によるパーティションスケジューリングについて具体的に述べると、パーティションスケジューラ21は、スケジューリングテーブル22を参照し、TPの設定を定めたスケジューリングパターンに従って、パーティションスケジューリングを行う。スケジューリングテーブル22は、TPの切り替え順序およびタイミングを規定したスケジューリングパターンを保持している。なお、スケジューリングテーブル22は、少なくとも2つの異なるスケジューリングパターンを保持している。1つは、安全監視タスク24による異常検知が行われていない場合つまり通常時に適用されるスケジューリングパターンである。もう1つは、安全監視タスク24によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを通常制御スケジューリングパターンと呼ぶ。また、異常検知時に適用されるスケジューリングパターンを安全制御スケジューリングパターンと呼ぶ。図5Aは、通常制御スケジューリングパターンの具体例を示している。図5Aでは、通常制御タスク26が属するTP2が1サイクル時間の前半T1に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半T2に割り当てられている。図5Aのスケジューリングパターンによれば、通常制御タスク26と安全監視タスク24が繰り返しスケジューリングされる。図5Bは、安全制御スケジューリングパターンの具体例を示している。図5Bでは、安全制御タスク28が属するTP3が1サイクル時間の前半T3に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半T4に割り当てられている。図5Bのスケジューリングパターンによれば、安全制御タスク28と安全監視タスク24が繰り返しスケジューリングされる。図4に戻り説明を続ける。タスクスケジューラ23、25、27は、それぞれが属するTP内でのタスクのスケジューリングを行う。各TP内でのタスクのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。なお、図4では、各TPはそれぞれ1つのタスクのみを含むものとして図示しているが、実際には、1以上のタスクが含まれている。例えば、通常制御用のTP2内には、通常制御タスクA及び通常制御タスクBの2つのタスクが含まれていてもよい。安全監視タスク24は、安全監視アプリケーション101の起動によって生成されるタスクである。図4の例では、安全監視タスク24は、TP1及びRP1に割り当てられている。安全監視タスク24は、非安全関連アプリケーションである通常制御タスク26の実行状況の監視と、安全関連アプリケーションである安全制御タスク28の監視と、I/Oポート12の入出力データを監視する。さらに、安全監視タスク24は、タスクの実行状況を、パーティションスケジューラ21へ通知する。通常制御タスク26は、通常制御アプリケーション102の起動によって生成されるタスクである。図4の例では、通常制御タスク26は、TP2及びRP2に割り当てられている。通常制御タスク26は、サービスロボット等の制御対象に通常の機能動作を行わせるための制御を行う。さらに、通常制御タスク26は、タスクの実行状況を、パーティションスケジューラ21へ通知する。安全制御タスク28は、安全制御アプリケーション103の起動によって生成されるタスクである。図4の例では、安全制御タスク28は、TP3及びRP3に割り当てられている。安全制御タスク28は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御を行う。さらに、安全制御タスク28は、タスクの実行状況を、パーティションスケジューラ21へ通知する。なお、各タスクからパーティション21へと結果を通知する具体的な構成としては、様々な手法を採用することができる。例えば、タスクがOS100のシステムコールサービスコールを呼び出し、OS100を介して、パーティションスケジューラ21に結果を通知することができる。また、例えば、タスクの実行状況に関するフラグを実行用メモリ11に格納するものとして、タスクがその実行状況に応じてフラグの値を設定し、パーティションスケジューラ21がフラグの設定値に応じてタスクの実行状況を判断することもできる。上述したように、パーティションスケジューラ21が1Tickごとに動作し、TP1~TP3のいずれをアクティブにするかを選択決定する。さらに、パーティションスケジューラ21が、選択したTPに関するタスクスケジューラの動作を開始させる。そして、タスクスケジューラ23、25、27が動作を開始することでタスクのスケジューリングが行われ、プロセッサ10が、タスクスケジューラ23、25、27によりスケジューリングされた順序に従って、TP内でのタスクを実行していく。これによって、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。続いて以下では、パーティションスケジューラ21によるパーティションスケジューリングについて、図6を用いて説明する。図6は、パーティションスケジューラ21の処理手順の具体例を示すフローチャートである。まず、1Tickごとに動作するパーティションスケジューラ21が、TPXのタスクスケジューラを動作させるS11。ここで、変数XはTPの番号を示し、Xは1以外の値とする。すなわち、S11では、安全監視用のTP1を除いた、TP2又はTP3のいずれかを動作させる。なお、図6では、通常制御スケジューリングパターン例えば図5Aまたは安全制御スケジューリングパターン例えば図5Bに従って、スケジューリングを実行する場合を例に説明する。すなわち、TP2またはTP3に続く次のTPはTP1であり、かつ、TP2での異常がTP1で検知された場合に、TP1からの結果を受けて次に選択決定されるTPはTP3である場合を例に説明する。S11で動作を開始したTPXのタスクスケジューラは、TPX内のタスクを優先度に応じて実行するS12。そして、1Tickが経過すると、パーティションスケジューラ21が、TPのスケジューリングを開始するS13。すなわち、パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択決定する。パーティションスケジューラ21は、次にアクティブにするTPを変更しないS14でNo場合には、S11に戻り、同一のTPXについての動作を継続させる。このため、TPXの切り替えタイミングとなるまでの間、S11~S14までの処理が繰り返される。パーティションスケジューラ21は、次にアクティブにするTPを変更するS14でYes場合には、その変更するタイムパーティションのタスクスケジューラを動作させるS15。ここでは、TP1のタスクスケジューラを動作させる。そして、TP1のタスクスケジューラ23が、TP1内のタスクを優先度に応じて実行するS16。TP1で実行される安全監視タスク24は、通常制御タスク26の実行状況の監視と、I/Oポート12の入出力データの監視を行い、これらが正常であるか判断するS17。判断の結果、異常であると判断したS18でNo場合、安全監視タスク24は、パーティションスケジューラ21に対して、その結果を通知するS19。1Tickが経過すると、パーティションスケジューラ21が、再びスケジューリングを開始するS20。パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択決定し、次にアクティブにするTPを変更しないS21でNo場合には、S15に戻り、TP1についての動作を継続させる。パーティションスケジューラ21は、次にアクティブにするTPを変更するS21でYes場合には、さらに、S19でのTP1からの通知結果に応じて、TPXが正常であったか否かを判断するS22。判断の結果、異常であったS22でNo場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPとして、TP3を選択決定するS23。判断の結果、正常であったS22でYes場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPとして、TP1とTP3以外のTPXを選択決定するS24。図6で示した処理に関して、パーティションスケジューリングの具体例を説明する。まず、図5Aに例示した通常制御スケジューリングパターンに従って、S11においてスケジューリングを開始した場合を説明する。この場合、S11ではTPX=TP2として開始し、S12~S14にかけてもTPX=TP2のままである。そして、S15でTP2からTP1へと変更され、S15~S21にかけてTP1のままである。S18でTP2に関する実行状況データ入出力が正常であると判定されていた場合には、S24では、TPX=TP2となるつまり、TP2から開始する通常制御スケジューリングパターンが継続される。。一方で、S18でTP2に関する実行状況データ入出力が異常であると判定されていた場合には、S23で、TPX=TP3となるつまり、TP3から開始する安全制御スケジューリングパターンに切り替わる。。また、図5Bに例示した安全制御スケジューリングパターンに従って、S11においてスケジューリングを開始した場合を説明する。この場合、S11ではTPX=TP3として開始し、S12~S14にかけてもTPX=TP3のままである。そして、S15でTP3からTP1へと変更され、S15~S21にかけてTP1のままである。S18でTP3に関する実行状況データ入出力が正常であると判定されていた場合には、S24では、TPX=TP2となるつまり、TP2から開始する通常制御スケジューリングパターンに切り替わる。。一方で、S18でTP3に関する実行状況データ入出力に異常があると判定されていた場合には、S23で、TPX=TP3となるつまり、TP3から開始する安全制御スケジューリングパターンが継続される。。なお、上述の例では、スケジューリングパターンとして、3つのTP安全監視用のTP1、通常制御用のTP2、安全制御用のTP3のみを組み合わせた場合を例に説明したが、TP2のような通常制御用パーティションや、TP3のような安全制御用パーティションについては、それぞれ複数個存在するものとしてもよい。例えば、2つの通常制御用のTP2及びTP4と、安全監視用のTP1と、2つの安全制御用のTP3及びTP5と、が存在し、これら5つのTPTP1~TP5を組み合わせてスケジューリングパターンを構成してもよい。この場合、S23では、パーティションスケジューラ21が、TPXに関する実行状況データ入出力の異常状態の種類を判定し、その異常種類に応じて、安全制御用のTP3またはTP5のいずれかを選択すればよい。また、S24では、通常制御用のTP2またはTP4のいずれかを選択すればよい。上述したように、本実施の形態では、OS100は、安全監視用のTP1からの通知、または、各TPからの通知に応じて、次にアクティブとするパーティションを選択決定するパーティションスケジューラ21を備えている。パーティションスケジューラ21は、各TPにおいて実行されるタスクとは独立して、所定のタイマー周期で動作する。所定のタイマー周期で独立して動作するパーティションスケジューラ21がパーティションスケジューリング機能を有することで、以下の効果を奏することができる。まず、一般的に、通常制御タスク26の実行時間を十分に確保するために、安全監視タスク24の実行時間を可能な限り短縮したいという要求がある。従来技術例えば特許文献1では、安全監視タスク24が、通常制御タスク26の実行状況の監視と、I/Oポート12の入出力データの監視と、に加えて、スケジューリングパターンの選択決定についても行っていたために、この選択決定に要する実行時間についても、安全監視タスク24が属するTP2に関して割り当てておく必要があった。また、機能安全の確保を保証するためには、基本的には、安全監視タスク24と通常制御タスク26とが交互に実行される必要がある。このため、従来技術では、通常制御タスク26の実行に伴って安全監視タスク24によるスケジューリングパターンの選択決定までもが毎回実行されることになり、複数のサイクルにわたって合計すると、多くの実行時間を、安全監視タスク24によるスケジューリングパターンの選択決定のために要することになってしまう。これに対して、本実施の形態によれば、安全監視タスク24自体は、スケジューリングパターンの選択決定を実行する必要がない。また、パーティションスケジューラ21がスケジューリングパターンの選択決定に要する実行時間は短時間で済む。このため、従来技術と比較して、安全監視用のTP1はより短時間の割り当てで済み、かつ、通常制御用のTP2にはより長時間の割り当てを行うことができるという効果を奏する。さらに、図6で例示した処理では、パーティションスケジューラ21が、TP1からの結果通知に応じて、安全制御用のTP3を選択決定するS23、または、通常制御用のTP2を選択決定するS24ものとして説明したが、本発明はこれに限定されない。例えば、安全監視用のTP1のみからパーティションスケジューラ21に対して結果を通知する構成に代えて、TP1~TP3のそれぞれからパーティションスケジューラ21に対して実行状況を通知する構成とし、パーティションスケジューラ21が、各TPからの結果通知に応じて、安全制御用のTP3を選択決定するものとしてもよい。独立に動作するパーティションスケジューラ21が、全てのTPから結果通知を受ける構成とすることで、パーティションスケジューラ21は、全てのTPに関する状況を一元的に把握することができる。このため、例えば、安全監視用のTP1からの結果通知に応じて、パーティションスケジューラ21が次のパーティションを決定選択しようとする場合には、パーティションスケジューラ21は、各TPの状況を考慮した上で、正常状態にあるTPのみから次のパーティションを決定選択することができる。従って、従来技術と比較して、より正確なパーティションスケジューリングを実現することができるという効果を奏する。続いて以下では、リセット回路14を用いたマイクロコントローラ15のリセット機構について、図7及び図8を用いて説明する。図7及び図8は、リセット回路14を用いたマイクロコントローラ15のリセット処理手順の具体例を示すフローチャートである。本実施の形態では、1Tickごとに動作するパーティションスケジューラ21が、マイクロコントローラ15のリセット機能を有している。パーティションスケジューラ21は、OS100における異常を検出した場合に、リセット回路14と連動して異常処置を行う。リセット回路14は、パーティションスケジューラ21からの信号に基づき、マイクロコントローラ15のリセットを行う。まず、図7を用いて、リセット回路14を用いたマイクロコントローラ15のリセット処理手順の具体例について説明する。図7に示す処理では、パーティションスケジューラ21からリセット指示信号を受けた場合に、リセット回路14がマイクロコントローラ15をリセットするものである。なお、図7では、TPXは、TP1とTP3以外のTPである。まず、S31~S33では、パーティションスケジューラ21がTPXの動作を開始させることで、次にアクティブにするTPが変更されるまでの間、TPXに関する処理が実行される。そして、パーティションスケジューラ21がTP1のタスクスケジューラ23の動作を開始させたS34後に、TP1に属する安全監視タスク24が、TPXに関する処理入出力が正常であったかを判断するS35。判断の結果、正常であったS35でYes場合、S31に戻り、同一のTPXについての動作が継続される。判断の結果、異常であったS35でNo場合、TP1に属する安全監視タスク24が、TPXでの異常がTP3に属する安全制御タスク28で対応可能な異常であるかを判断するS36。TP3で対応可能な異常ではなかったS36でNo場合、TP1に属する安全監視タスク24が、パーティションスケジューラ21に対して、緊急停止を有する異常であることを通知するS37。TP1に属する安全監視タスク24からの通知を受けたパーティションスケジューラ21が、リセット回路14にリセット指示信号を出力し、リセット指示信号を受けたリセット回路14がマイクロコントローラ15のリセットを行うS38。TP3で対応可能な異常であったS36でYes場合、TP1に属する安全監視タスク24は、パーティションスケジューラ21に対して、TPXが異常であることを通知するS39。TP1からの通知を受けたパーティションスケジューラ21は、TPXからTP3へと切り替えるS40。次に、図8を用いて、リセット回路14を用いたマイクロコントローラ15のリセット処理手順の他の具体例について説明する。図8に示す処理では、パーティションスケジューラ21からリセット回路14に定期的に信号を送信し、リセット回路14は、パーティションスケジューラ21からの送信信号が途絶えた場合に、マイクロコントローラ15をリセットするものである。なお、図8では、TPXは、TP1とTP3以外のTPである。図7のS31~S35にかけての処理と比較して、図8のS53では、パーティションスケジューラ21が1Tickごとに動作する点が明確化され、また、S54及びS55で、パーティションスケジューラ21がリセット回路14に定期的に信号を送信する点で異なっている。その他の図8に示すS51~S57にかけての処理は、図7に示したS31~S35にかけての処理と基本的に同一である。また、図7のS36~S40にかけての処理と比較して、図8のS60では、パーティションスケジューラ21がリセット回路14への送信信号を停止し、S63では、パーティションスケジューラ21がリセット回路14への信号を送信する点で異なっている。さらに、図8のS61では、パーティションスケジューラ21からの送信信号が途絶えたことに応じて、リセット回路14がマイクロコントローラ15のリセットを行う点で異なっている。その他の図8に示すS58~S64にかけての処理については、図7に示したS36~S40にかけての処理と基本的に同一である。さらに、図8のS71及びS72に示すように、S51~S64にかけての処理と並行して、パーティションスケジューラ21において不具合が発生した場合、または、パーティションスケジューラ21からリセット回路14への信号線において不具合が発生した場合には、パーティションスケジューラ21からリセット回路14への送信信号が伝達されなくなる。この場合にも、パーティションスケジューラ21からの送信信号が途絶えたことに応じて、リセット回路14がマイクロコントローラ15のリセットを行うS61。図8に示した処理によれば、パーティションスケジューラ21からリセット回路14へ意図的にリセット指示を行う場合に加えて、パーティションスケジューラ21自身が何らかの原因により正常に動作しない場合、または、パーティションスケジューラ21からリセット回路14へ送信信号を伝達する信号線に不具合が発生した場合においても、マイクロコントローラ15のリセットを確実に行うことができる。また同時に、TPの切り替えが、1Tickごとに正常に実行されているかについても保証することができる。なお、図7及び図8では、パーティションスケジューラ21は、TP1からの結果通知に応じて、リセット回路14へのリセット指示信号の出力、または、リセット回路14への送信信号の停止を行うものとして説明したが、TP1~TP3のいずれかからの結果通知に応じて、リセット回路14へのリセット指示信号の出力、または、リセット回路14への送信信号の停止を行うものとしてもよい。<発明の実施の形態2>続いて、本実施の形態2にかかる安全制御装置1について説明する。なお、本実施の形態2にかかる安全制御装置1の構成は、本実施の形態1にかかる安全制御装置1の構成と同様である。また、パーティションスケジューラ21とタスク24、26、28との関係についても、本実施の形態1にかかる安全制御装置1の構成と同様である。以下、実施の形態1にかかる安全制御装置1と同様の内容については説明を省略する。本実施の形態2では、一定周期で実行する必要がある処理を実行するタスクが、タスクでの処理が終了したときに、その処理が終了した旨をパーティションスケジューラ21に通知する。ここで、本実施の形態2では、一定周期で実行する必要がある処理を実行するタスクが、安全制御タスク28である場合について説明する。安全制御タスク28は、処理が実行終了したときに、TP3での処理の終了を示す情報を実行用メモリ11に格納する。具体的には、実行用メモリ11には、TP3での処理が終了しているか否かを示すTP処理終了フラグが格納される。安全制御タスク28は、処理が終了したときに、TP処理終了フラグを立てる。つまり、TP処理終了フラグが立っている場合、TP処理終了フラグは、安全制御タスク28の実行が終了して、安全制御タスク28における処理が終了していることを示す。TP処理終了フラグが落ちている場合、TP処理終了フラグは、安全制御タスク28の実行が終了しておらず、安全制御タスク28における処理が終了していないことを示す。安全制御タスク28は、TP処理終了フラグを立てた後、タスクスケジューラ27を動作させる。つまり、安全制御タスク28は、TP処理終了フラグを立てた後、プロセッサ10の実行時間を解放して、実行可能状態に遷移する。なお、実行可能状態等のタスクの状態については、後述する。タスクスケジューラ27は、TP3に属するタスクのスケジューリングを行うが、TP処理終了フラグが立っている場合は、安全制御タスク28が実行可能状態であっても、安全制御タスク28に対するプロセッサ10の実行時間の割り当てを抑止する。パーティションスケジューラ21は、TPを切り替えるときに、TP処理終了フラグを落とす。ここで、本実施の形態2では、パーティションスケジューラ21が、図9に例示するスケジューリングパターンに従って、パーティションスケジューリングを行う場合について説明する。つまり、スケジューリングテーブル22は、図9に例示するスケジューリングパターンを保持する。図9に例示するスケジューリングパターンは、TP3がアクティブとなる周期が一定周期となるように、TPの切り替え順序およびタイミングが規定されている。続いて、図10を参照して、タスクの状態について説明する。図10は、タスクの状態遷移図である。タスク24、26、28は、実行状態、実行可能状態、待ち状態、二重待ち状態、強制待ち状態、及び、休止状態のいずれかの状態をとる。実行状態は、タスクスケジューラ23、25、27、29によって、タスクにプロセッサ10の実行時間が割り当てられた状態である。タスクが実行状態のとき、そのタスクはプロセッサ10によって実行されていることになる。実行状態のタスクは、例えば、タスクスケジューラ23、25、27、29によって割り当てられたプロセッサ10の実行時間を使い果たしたときに実行可能状態に遷移する。また、実行状態のタスクは、例えば、スリープしたときに待ち状態に遷移する。実行可能状態は、タスクにプロセッサ10の実行時間を割り当て可能であるが、タスクにプロセッサ10の実行時間が割り当てられていない状態である。実行可能状態は、例えば、タスクが起床している状態である。実行可能状態のタスクは、例えば、タスクスケジューラ23、25、27、29によって、プロセッサ10の実行時間が割り当てられたときに実行状態に遷移する。待ち状態は、タスクにプロセッサ10の実行時間を割り当て可能でなく、プロセッサ10の実行時間が割り当てられていない状態である。待ち状態は、例えば、タスクがスリープしている状態である。待ち状態のタスクは、例えば、スリープ時間の満了、又は、他のタスクからのタスク間通信の受信等によって、スリープしている状態から起床したときに実行可能状態に遷移する。強制待ち状態は、タスクにプロセッサ10の実行時間を割り当て可能でなく、プロセッサ10の実行時間が割り当てられていない状態である。強制待ち状態は、例えば、パーティションスケジューラ21、タスクスケジューラ23、25、27、又は、他のタスクによって、実行可能状態のタスクが一時的に実行を禁止された状態である。強制待ち状態のタスクは、パーティションスケジューラ21、タスクスケジューラ23、25、27、又は、他のタスクによって、強制待ち状態を解除された場合に、実行可能状態に遷移する。二重待ち状態は、タスクにプロセッサ10の実行時間を割り当て可能でなく、プロセッサ10の実行時間が割り当てられていない状態である。二重待ち状態は、例えば、パーティションスケジューラ21、タスクスケジューラ23、25、27、又は、他のタスクによって、待ち状態のタスクが一時的に実行を禁止された状態である。強制待ち状態のタスクは、パーティションスケジューラ21、タスクスケジューラ23、25、27、又は、他のタスクによって、強制待ち状態を解除された場合に、待ち状態に遷移する。また、強制待ち状態のタスクは、起床した場合に、強制待ち状態に遷移する。休止状態は、タスクにプロセッサ10の実行時間を割り当て可能でなく、プロセッサ10の実行時間が割り当てられていない状態である。休止状態は、例えば、タスクが起動されていない状態、又は、タスクが終了した状態である。続いて、図11を参照して、本実施の形態2にかかる安全制御タスク28の終了処理について説明する。図11は、本実施の形態2にかかる安全制御タスク28の終了処理手順の具体例を示すフローチャートである。TP3がアクティブとなった場合、タスクスケジューラ27によって、安全制御タスク28にプロセッサ10の実行時間が割り当てられる。プロセッサ10の実行時間が割り当てられた安全制御タスク28は、前述したような、機能安全を確保するために定められた処理を実行する。安全制御タスク28は、その処理が終了したときに、実行用メモリ11に格納されたTP処理終了フラグを立てるS81。安全制御タスク28は、TP処理終了フラグを立てた後、プロセッサ10の実行時間を解放して、実行可能状態に遷移する。安全制御タスク28は、例えば、プロセッサ10の実行時間を解放するシステムコールを実行することによって、実行可能状態に遷移する。これによって、タスクスケジューラ27にプロセッサ10の実行時間が割り当てられて、タスクスケジューラ27が実行されるS82。続いて、図12を参照して、本実施の形態2にかかるタスクスケジューラ27の処理について説明する。図12は、本実施の形態2にかかるタスクスケジューラ27の処理手順の具体例を示すフローチャートである。タスクスケジューラ27は、実行された場合、TP処理終了フラグが立っているか否かを判定するS91。TP処理終了フラグが立っている場合S91でYes、タスクスケジューラ27は、タスクスケジューリングを実行しない。これによって、例えば、TP3において安全制御タスク28における処理が実行された後は、安全制御タスク28が実行可能状態であっても、再度、同一のTP3の期間内で処理が実行されないようにすることができる。TP処理終了フラグが立っていない場合S91でNo、タスクスケジューラ27は、TP3に属するタスクのスケジューリングを実行するS92。これによって、安全制御タスク28にプロセッサ10の実行時間が割り当てられる。続いて、図13を参照して、本実施の形態2にかかるパーティションスケジューラ21の処理について説明する。図13は、本実施の形態2にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。プロセッサ10に対して周期的なタイマー割り込みがある毎にS101、プロセッサ10は、パーティションスケジューラ21を実行するS102。このように、マイクロコントローラ15が有するタイマー図示せずから、周期的なタイマー割り込みがある毎にパーティションスケジューラ21を実行することによって、パーティションスケジューラ21が所定のタイマー周期で動作する。パーティションスケジューラ21は、実行された場合、スケジューリングパターンに従って、TPを切り替えるか否かを判定するS103。例えば、スケジューリングパターンを参照して、今回実行されたタイミングが、TPの切り替えタイミングであったか否かを確認することによって判定する。TPを切り替える場合S103でYes、パーティションスケジューラ21は、TP処理終了フラグを落とすS104。これによって、例えば、TP3から次のTP2に切り替わるときに、TP処理終了フラグが落とされる。そのため、次にTP3がアクティブになったときに、安全制御タスク28がタスクスケジューラ27によって実行されるようになる。ここで、本実施の形態2では、図9に示したように、TP3が一定周期でアクティブとなるようになっている。そのため、安全制御タスク28が一定周期で実行されるようになる。なお、TPの切り替え時ではなく、次にTP3がアクティブになるまでにTP処理終了フラグを落とすようにしてもよい。次にTP3がアクティブになるまでにTP処理終了フラグを落とせば、安全制御タスク28は一定周期後に実行されるからである。TPを切り替えない場合S103でNo、又は、ステップS104の処理後、パーティションスケジューラ21は、パーティションスケジューリングを行うS105。以上に説明したように、本実施の形態2では、安全制御タスク28は、処理が終了したときに、処理の終了を示す情報を実行用メモリ11に格納して、プロセッサ10の実行時間を解放して実行可能状態に遷移するようにしている。そして、タスクスケジューラ27は、タスクのスケジューリングにおいて、実行用メモリ11に処理の終了を示す情報が格納されている場合、安全制御タスク28が実行可能状態であっても、安全制御タスク28に対するプロセッサ10の実行時間の割り当てを抑止するようにしている。さらに、スケジューリングパターンにおいて、TP3が一定周期となるようにしている。また、パーティションスケジューラ21は、TP3の期間が終了するときから、TP3の次の周期における期間が開始されるときまでに、処理の終了を示す情報を削除するようにしている。これによれば、同一のTP3の期間内において安全制御タスク28が再度実行さないようにしつつも、次の一定周期後のTP3の期間が開始されたときに安全制御タスク28が実行開始される実行可能状態を維持することが可能となる。また、他のタスクからの安全制御タスク28の起床も不要となる。そのため、本実施の形態2によれば、安全関連系の独立性を保証しつつ、一定周期でのタスクの実行が可能となる。<発明の実施の形態3>続いて、本実施の形態3にかかる安全制御装置1について説明する。なお、本実施の形態3にかかる安全制御装置1の構成は、本実施の形態2にかかる安全制御装置1の構成と同様であるため、説明を省略する。続いて、パーティションスケジューラ21と、アプリケーション101~104の起動により生成されるタスクと、の関係について、図14を参照して説明する。図14は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28A、28B、28Cとの関係を示す図である。以下、本発明の実施の形態2と同様の内容については説明を省略する。本実施の形態3では、複数の安全制御タスク28A、28B、28Cが起動される。本実施の形態3では、安全制御タスク28Aが、一定周期で実行する必要がある処理を実行するタスクである場合について説明する。安全制御タスク28B、28Cは、周期的な実行は不要であるが、TP3内で1回のみ実行したいタスクである。ここで、タスクの優先度は、安全制御タスク28Aが一番高く、次に安全制御タスク28Bが高く、安全制御タスク28Cが最も低くなるように、予め設定されているものとする。つまり、一定周期で実行する必要がある安全制御タスク28Aが、最も優先度が高く設定される。安全制御タスク28A、28B、28Cのそれぞれは、タスクでの処理が終了したときに、タスクでの処理の終了を示す情報を実行用メモリ11に格納する。具体的には、実行用メモリ11には、タスクでの処理が終了しているか否かを示すタスク処理終了フラグが、安全制御タスク28A、28B、28Cのそれぞれに対応するように複数格納される。安全制御タスク28A、28B、28Cのそれぞれは、処理が終了したときに、タスク処理終了フラグを立てる。つまり、タスク処理終了フラグが立っている場合、タスク処理終了フラグは、安全制御タスクにおける処理が終了していることを示す。タスク処理終了フラグが落ちている場合、タスク処理終了フラグは、安全制御タスクにおける処理が終了していないことを示す。安全制御タスク28A、28B、28Cのそれぞれは、タスク処理終了フラグを立てた後、タスクスケジューラ27を動作させる。つまり、安全制御タスク28A、28B、28Cのそれぞれは、TP処理終了フラグを立てた後、プロセッサ10の実行時間を解放して、実行可能状態に遷移する。タスクスケジューラ27は、TP3に属するタスクのスケジューリングを、優先度の高いタスクから順に実行するように行う。タスクスケジューラ27は、タスク処理終了フラグが立っている場合は、そのタスク処理終了フラグに対応する安全制御タスクが実行可能状態であっても、その安全制御タスクをプロセッサ10の実行時間の割り当て対象から除外する。パーティションスケジューラ21は、TPを切り替えるときに、タスク処理終了フラグを落とす。ここで、本実施の形態3では、パーティションスケジューラ21が、図15に例示するスケジューリングパターンに従って、パーティションスケジューリングを行う場合について説明する。つまり、本実施の形態3では、スケジューリングテーブル22は、図15に例示するスケジューリングパターンを保持する。本実施の形態3におけるスケジューリングパターンは、図15に例示するように、TP3がアクティブとなる周期が一定周期となるように、TPの切り替え順序およびタイミングが規定されている。続いて、図16を参照して、本実施の形態3にかかる安全制御タスク28A、28B、28Cの終了処理について説明する。図16は、本実施の形態3にかかる安全制御タスク28A、28B、28Cの終了処理手順の具体例を示すフローチャートである。TP3がアクティブとなった場合、タスクスケジューラ27によって、安全制御タスク28A、28B、28Cのいずれかにプロセッサ10の実行時間が割り当てられる。プロセッサ10の実行時間が割り当てられた安全制御タスクは、前述したような、機能安全を確保するために定められた処理を実行する。安全制御タスクは、その処理が終了した場合、実行用メモリ11に格納されたタスク処理終了フラグを立てるS111。安全制御タスク28は、タスク処理終了フラグを立てた後、プロセッサ10の実行時間を解放して、実行可能状態に遷移する。これによって、タスクスケジューラ27にプロセッサ10の実行時間が割り当てられて、タスクスケジューラ27が実行されるS112。続いて、図17を参照して、本実施の形態3にかかるタスクスケジューラ27の処理について説明する。図17は、本実施の形態3にかかるタスクスケジューラ27の処理手順の具体例を示すフローチャートである。タスクスケジューラ27は、実行された場合、タスク処理終了フラグが立っているか否かを判定するS121。タスク処理終了フラグが立っている場合、タスクスケジューラ27は、そのタスク処理終了フラグに対応する安全制御タスクをスケジュール対象から外す。これによって、例えば、TP3において安全制御タスク28Aが実行された後は、安全制御タスク28Aが実行可能状態であっても、再度、同一のTP3の期間内で実行されないようにすることができる。タスクスケジューラ27は、TP3に属するタスクのスケジューリングを実行するS122。ここで、本実施の形態2では、上述したように、タスクの優先度に従って、安全制御タスク28A、安全制御タスク28B、安全制御タスク28Cの順にタスクが実行される。この場合、図16及び図17に示す処理が実行されて、図15に示すように、安全制御タスク28A、28B、28Cが実行されることになる。具体的には、最初に、タスクスケジューラ27によって、優先度が最も高い安全制御タスク28Aが実行される。安全制御タスク28Aは、処理を実行終了したときに、タスク処理終了フラグを立てるS111。その後に実行されたタスクスケジューラ27は、安全制御タスク28Aに対応するタスク処理終了フラグが立っているため、安全制御タスク28Aをスケジュール対象から除外するS112、S121。そのため、タスクスケジューラ27は、次に優先度が高い安全制御タスク28Bを実行するS122。安全制御タスク28Bは、処理を実行終了したときに、タスク処理終了フラグを立てるS111。その後に実行されたタスクスケジューラ27は、安全制御タスク28Bに対応するタスク処理終了フラグが立っているため、安全制御タスク28Bをスケジュール対象から除外するS112、S121。そのため、タスクスケジューラ27は、次に優先度が高い安全制御タスク28Cを実行するS122。安全制御タスク28Cは、処理を実行終了したときに、タスク処理終了フラグを立てるS111。その後に実行されたタスクスケジューラ27は、安全制御タスク28Cに対応するタスク処理終了フラグが立っているため、安全制御タスク28Cをスケジュール対象から除外するS112、S121。ここまでで、全ての安全制御タスク28A、28B、28Cがスケジューリング対象から除外されるため、タスクスケジューラ27は、TP3に属するいずれの安全制御タスク28A、28B、28Cも実行しなくなる。続いて、図18を参照して、本実施の形態3にかかるパーティションスケジューラ21の処理について説明する。図18は、本実施の形態3にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。プロセッサ10に対して周期的なタイマー割り込みがある毎にS131、プロセッサ10は、パーティションスケジューラ21を実行するS132。パーティションスケジューラ21は、実行された場合、スケジューリングパターンに従って、TPが切り替えるか否かを判定するS133。TPを切り替える場合S133でYes、パーティションスケジューラ21は、TP3に属するタスクに対応するタスク処理終了フラグを落とすS134。これによって、例えば、TP3から次のTP2に切り替わるときに、タスク処理終了フラグが落とされる。そのため、次にTP3がアクティブになったときに、安全制御タスク28A、28B、28Cがタスクスケジューラ27によって実行されるようになる。TPを切り替えない場合S133でNo、又は、ステップS134の処理後、パーティションスケジューラ21は、パーティションスケジューリングを行うS135。なお、上述したように、TPの切り替え時ではなく、次にTP3がアクティブになるまでにTP処理終了フラグを落とすようにしてもよい。以上に説明したように、本実施の形態3では、実施の形態2と比較して、さらに、TP3において、安全制御タスク28Aよりも優先度の低い安全制御タスク28B、28Cにプロセッサ10の実行時間を割り当てるようにしている。そのため、安全制御タスク28Aの実行終了後に、プロセッサ10が何も処理を実行していない時間をなくすことができ、プロセッサ10の利用効率を向上することができる。また、本実施の形態3では、一定周期で実行する必要のある安全制御タスク28Aの優先度を最も高くしているため、一定周期のTP3の期間が開始されたときに、安全制御タスク28Aが実行される。よって、本実施の形態3においても、安全制御タスク28Aを一定周期で実行することができる。<発明の実施の形態4>続いて、本実施の形態4にかかる安全制御装置1について説明する。なお、本実施の形態4にかかる安全制御装置1の構成は、本実施の形態1にかかる安全制御装置1の構成と同様である。また、パーティションスケジューラ21とタスク24、26、28との関係についても、本実施の形態1にかかる安全制御装置1の構成と同様である。以下、実施の形態1にかかる安全制御装置1と同様の内容については説明を省略する。本実施の形態4では、一定周期で実行する必要がある処理を実行するタスクが、タスクでの処理が終了したときに、その処理が終了した旨をパーティションスケジューラ21に通知する。ここで、本実施の形態4では、一定周期で実行する必要がある処理を実行するタスクが、安全制御タスク28である場合について説明する。ここで、本実施の形態4では、パーティションスケジューラ21が、図19に例示するスケジューリングパターンに従って、パーティションスケジューリングを行う場合について説明する。つまり、本実施の形態4では、スケジューリングテーブル22は、図19に例示するスケジューリングパターンを保持する。本実施の形態4にかかるスケジューリングパターンは、図19に例示するように、TP3がアクティブとなる周期が一定周期となるように、TPの切り替え順序およびタイミングが規定されている。以下、TPの切り替えタイミングをTP境界とも言う。また、本実施の形態4におけるスケジューリングパターンは、図19に例示するように、安全制御タスク28に対して、周期の終了するTP境界が登録されている。ここで、周期の終了するTP境界とは、その時点において、一定周期で実行する必要がある安全制御タスク28における処理が終了しているべきTPの切り替えタイミングである。この周期の終了するTP境界は、本実施の形態4では、一定周期で実行する必要がある安全制御タスク28が属するTP3から、次のTP2への切り替えタイミングに保持されている。続いて、図20を参照して、本実施の形態4にかかるパーティションスケジューラ21の処理について説明する。図20は、本実施の形態4にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。プロセッサ10に対して周期的なタイマー割り込みがある毎にS141、プロセッサ10は、パーティションスケジューラ21を実行するS142。パーティション21は、TP境界で実行された場合、以下の処理を実行する。パーティションスケジューラ21は、現在のTP境界で、周期の終了するTP境界を登録したタスクがあるか否かを判定するS143。本実施の形態4では、安全制御タスク28について、周期の終了するTP境界が登録されているため、TP3からTP2へのTP境界で、周期の終了するTP境界を登録したタスクがあると判定される。周期の終了するTP境界を登録したタスクがある場合S143でYes、パーティションスケジューラ21は、そのタスクからの処理終了の通知があるか否かを判定するS144。本実施の形態4では、安全制御タスク28から通知があるか否かを判定することになる。ここで、処理の終了は、実施の形態2又は実施の形態3のように、処理の終了を示すフラグによってパーティションスケジューラ21に通知するようにしてもよく、タスク間通信によってタスクからパーティションスケジューラ21に通知するようにしてもよい。安全制御タスク28からの処理終了が通知されていない場合S144でNo、パーティションスケジューラ21は、異常と判定するS145。その場合、パーティションスケジューラ21は、異常に応じた処理を実行するS146。安全制御タスク28の処理が一定周期で終了していないことによって引き起こされる異常が他のTPに切り替えて、そのTPに属するタスクを実行することによって対応可能な異常である場合、パーティションスケジューラ21は、TP3から他のTPに切り替える。また、安全制御タスク28の処理が一定周期で終了していないことによって異常が緊急停止を要する異常である場合、パーティションスケジューラ21は、マイクロコントローラ15をリセットする。周期の終了するTP境界を登録したタスクがない場合S143でNo、又は、安全制御タスク28からの処理終了が通知されている場合S144でYes、パーティションスケジューラ21は、パーティションスケジューリングを実行するS147。このとき、TP3に属する安全制御タスク28が待ち状態である場合、パーティションスケジューラ21は、安全制御タスク28を実行可能状態にする。例えば、パーティションスケジューラ21は、安全制御タスク28に対するタスク間通信によって、安全制御タスク28を起床させて実行可能状態にする。これによって、安全制御タスク28が一定周期で実行されることになる。なお、実施の形態2及び3のように、安全制御タスク28を実行可能状態のままとし、かつ、処理の終了を示すフラグによって同一のTP3の期間内で安全制御タスク28が実行されないようにすることで、一定周期で安全制御タスク28が実行されるようにしてもよい。そして、パーティションスケジューラ21は、TP3の次のTPに属するタスクスケジューラを実行するS148。以上に説明したように、本実施の形態4では、一定周期で安全制御タスク28が実行されるタイムパーティションの期間が終了したときに、パーティションスケジューラ21によって、安全制御タスク28から処理終了が通知されているか否かを判定するようにしている。これによれば、安全制御タスク28を生成する安全制御アプリケーション103等の個々のアプリケーションに監視する仕組みを作り込む必要がなくなるため、ソフトウェア構成を簡潔にすることができる。<発明の実施の形態5>続いて、本実施の形態5にかかる安全制御装置1について説明する。なお、本実施の形態5にかかる安全制御装置1の構成は、本実施の形態1にかかる安全制御装置1の構成と同様であるため、説明を省略する。続いて、パーティションスケジューラ21と、アプリケーション101~104の起動により生成されるタスクと、の関係について、図21を参照して説明する。図21は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26A、26B、28、30との関係を示す図である。以下、本発明の実施の形態1と同様の内容については説明を省略する。本実施の形態5にかかるOS200は、複数の安全制御パーティションTP3、TP4を有する。また、本実施の形態5では、複数の通常制御タスク26A、26Bが起動される。本実施の形態5では、安全監視タスク24、通常制御タスク26A、26B及び安全制御タスク30のそれぞれが、一定周期で実行する必要がある処理を実行するタスクである場合について説明する。ここで、本実施の形態5では、パーティションスケジューラ21が、図22に例示するスケジューリングパターンに従って、パーティションスケジューリングを行う場合について説明する。つまり、本実施の形態5では、スケジューリングテーブル22は、図22に例示するスケジューリングパターンを保持する。本実施の形態5にかかるスケジューリングパターンは、図22に例示するように、タスクを開始するTP境界と、タスクを終了するTP境界とが保持されている。タスクを開始するTP境界とは、タスクの実行を開始するタイミングのことである。タスクを終了するTP境界とは、それまでに、タスクの実行が終了しているべきタイミングのことである。ここで、図22に例示するスケジューリングパターンは、TP1のそれぞれの期間、TP3の期間、及び、TP4の期間は、長さが同一であるものとする。また、TP2のそれぞれの期間は、長さが同一であるものとする。よって、図22では、各タスク24、26A、26B、30のそれぞれが一定周期で実行されるようになるタイミングで、タスクを開始するTP境界が定められている。また、図22では、各タスク24、26A、26B、28のそれぞれが一定周期内でタスクの実行が終了しているべきタイミングで、タスクを終了するTP境界が定められている。タスクスケジューラ29は、タスクスケジューラ23、25、27と同様に、TP4に属する安全制御タスク30のスケジューリングを行う。パーティションスケジューラ21は、TPを切り替えるとき、スケジューリングパターンのその切り替えタイミングにおけるTP境界に、タスクを開始するTP境界が設定されている場合、タスクの実行を開始させる。また、パーティションスケジューラ21は、TPを切り替えるとき、スケジューリングパターンのその切り替えタイミングにおけるTP境界に、タスクを終了するTP境界が設定されている場合、タスクの実行が終了しているか否かを判定する。続いて、図23を参照して、本実施の形態5にかかるパーティションスケジューラ21の処理について説明する。図23は、本実施の形態3にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。プロセッサ10に対して周期的なタイマー割り込みがある毎にS151、プロセッサ10は、パーティションスケジューラ21を実行するS152。パーティション21は、現在のタイミングがTP境界か否かを判定するS153。つまり、TPの切り替えが発生するか否かを判定する。現在のタイミングがTP境界である場合S153でYes、パーティションスケジューラ21は、そのTP境界にタスクを終了するTP境界が設定されているタスクの実行が終了しているか否かを判定するS154。タスクの実行が終了しているか否かは、実施の形態2又は実施の形態3のように、処理の終了を示すフラグによってパーティションスケジューラ21に判定するようにしてもよく、タスク間通信によってタスクからパーティションスケジューラ21に処理の終了が通知されているか否かによって判定するようにしてもよい。タスクの実行が終了していない場合S154でNo、パーティションスケジューラ21は、異常と判定するS155。その場合、パーティションスケジューラ21は、異常に応じた処理を実行するS156。タスクの実行が一定周期で終了していないことによって引き起こされる異常が他のTPに切り替えて、そのTPに属するタスクを実行することによって対応可能な異常である場合、パーティションスケジューラ21は、現在のTPから他のTPに切り替える。また、タスクの実行が一定周期で終了していないことによって異常が緊急停止を要する異常である場合、パーティションスケジューラ21は、マイクロコントローラ15をリセットする。現在のタイミングがTP境界でない場合S153でNo、又は、タスクの実行が終了している場合S154でYes、パーティションスケジューラ21は、そのTP境界にタスクを開始するTP境界が設定されているタスクがあるときは、そのタスクを実行状態にするS157。パーティションスケジューラ21は、パーティションスケジューリングを実行するS158。そして、パーティションスケジューラ21は、パーティションスケジューリングによる切り替え先のTPに属するタスクスケジューラを実行するS159。実行されたタスクスケジューラは、パーティションスケジューラ21が実行状態にしたタスクを実行開始する。以上に説明したように、本実施の形態5では、一定周期のタイミングで、TP境界に対して、タスクを実行開始する開始タイミングを設定するようにしている。また、それと同様の一定周期のタイミングで、タスクの実行終了を判定する終了判定タイミングを設定するようにしている。そして、パーティションスケジューラ21が、開始タイミングが設定されたTP境界でタスクの実行を開始するとともに、終了判定タイミングが設定されたTP境界でタスクの実行が終了しているか判定するようにしている。これによれば、各タスク24、26A、26B、30のそれぞれを実行する個々のアプリケーションに監視する仕組みを作り込む必要がなくなるため、ソフトウェア構成を簡潔にすることができる。<発明の実施の形態6>続いて、図24を参照して、本実施の形態6にかかる安全制御装置2について説明する。図24は、本実施の形態6のかかる安全制御装置2の構成例を示すブロック図である。以下、実施の形態1にかかる安全制御装置1と同様の内容については説明を省略する。不揮発性メモリ13は、RAMRandomAccessMemoryチェックアプリケーション104を格納する。RAMチェックアプリケーション104は、RAMチェック処理を、実行させるための命令コードを含む。具体的には、RAMチェック処理は、RAMチェックアプリケーション104は、実行用メモリ11に対してデータの読み書きを行うことによって、実行用メモリ11が正常であるか否かを検査する処理である。さらに、RAMチェックアプリケーション104は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含むようにしてもよい。続いて、パーティションスケジューラ21と、アプリケーション101~104の起動により生成されるタスクと、の関係について、図25を用いて説明する。図25は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28、31との関係を示す図である。以下、実施の形態1にかかる安全制御装置1と同様の内容については説明を省略する。RAMチェックタスク31は、RAMチェックアプリケーション104の起動によって生成されるタスクである。RAMチェックタスク31は、実行用メモリ11が正常であるか否かを検査する処理を行う。ここで、本実施の形態6では、図26に例示するように、TP2で実行される処理に、TP2の期間内で実行が終了することが必須である必須処理と、TP2の期間内で実行が終了することが必須でない付随的処理とが含まれている。本実施の形態6では、必須処理が通常制御タスク26によって実行される処理であり、付随的処理がRAMチェックタスク31によって実行される処理である場合について説明する。必須処理を実行する通常制御タスク26の優先度は、付随的処理を実行するRAMチェックタスク31よりも高く設定されている。ここで、TP2の期間は、必須処理を実行する通常制御タスク26は、の実行時間が最も長くなってしまった場合における実行時間よりも余裕をもって多くとられている。続いて、図27を参照して、本実施の形態6にかかるスケジューリング処理について説明する。図27は、本実施の形態6にかかるスケジューリング処理手順の具体例を示すフローチャートである。TPをTPXに切り替えた場合、パーティションスケジューラ21は、TPXのタスクスケジューラを動作させるS161。ここでは、TPXがTP2であり、タスクスケジューラ25が実行された場合について説明する。タスクスケジューラ25は、タスクの優先度に応じて、タスクを実行するS162。ここでは、タスクを優先度の高い通常制御タスク26が先に実行される。タスクスケジューラ25は、必須処理が終了するまで、必須処理を実行する通常制御タスク26の実行を継続するS163でNo、S162。必須処理が終了した場合S163でYes、タスクスケジューラ25は、付随処理を実行するRAMチェックタスク31を実行するS164。なお、前回のTP2の期間内にRAMチェックタスク31における処理が中断されていた場合、その処理が続きから実行されることになる。TPの切り替えタイミングとなるまで、タスクスケジューラ25によるRAMチェックタスク31の実行が継続されるS165でNo、S162、S163でYes、S164。TPの切り替えタイミングとなった場合S165でYes、パーティションスケジューラ21は、TPの切り替えを実施する。これによって、切り替え前のTP2に属するRAMチェックタスク31は、実行が終了していない場合は、その実行が中断される。つまり、RAMチェックタスク31による付随処理が中断されるS166。以上に説明したように、本実施の形態6によれば、実施の形態1と比較して、さらに、TP2において、通常制御タスク26よりも優先度の低いRAMチェックタスク31にプロセッサ10の実行時間を割り当てるようにしている。そのため、安全制御タスク28Aの実行終了後に、プロセッサ10が何も処理を実行していない時間をなくすことができ、プロセッサ10の実行時間を有効に利用することができる。<発明の実施の形態7>続いて、本実施の形態7にかかる安全制御装置2について説明する。なお、本実施の形態7にかかる安全制御装置1の構成は、本実施の形態6にかかる安全制御装置1の構成と同様であるため、説明を省略する。また、パーティションスケジューラ21とタスク24、26、28、31との関係についても、本実施の形態6にかかる安全制御装置2の構成と同様であるため、説明を省略する。続いて、図28を参照して、本実施の形態7にかかるパーティションスケジューラ21の処理について説明する。図28は、本実施の形態7にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。プロセッサ10に対して周期的なタイマー割り込みがある毎にS171、プロセッサ10は、パーティションスケジューラ21を実行するS172。パーティションスケジューラ21は、スケジューリングパターンに基づいて、TPの切り替えが発生するか否かを判定するS173。TPの切り替えが発生する場合S173でYes、パーティションスケジューラ21は、フリーランタイマが示す現在値を実行用メモリ11に格納する。これによって、実行用メモリ11にTP開始時の時間が格納される。フリーランタイマ図示せずは、プロセッサ10に備えられている。TPの切り替えが発生しない場合S173でNo、及び、フリーランタイマの記憶後、パーティションスケジューラ21は、パーティションスケジューリングを実行するS175。続いて、図29を参照して、本実施の形態7にかかるRAMタスク31の処理について説明する。図29及び図30は、本実施の形態7にかかるRAMチェックタスク31の処理手順の具体例を示すフローチャートである。RAMチェックタスク31は、RAMチェックを行う場合、残りの時間の問い合わせ処理を行うS181。残りの時間の問い合わせ処理において、RAMチェックタスク31は、TP2の残りの時間に、RAMチェックを実行するだけの余裕があるか否かを判定するS182。ここで、本実施の形態7において、RAMチェック対象の実行用メモリ11は、実行用メモリ11に対するアクセスに対して、排他制御が行われるメモリである。つまり、後述するRAMチェックS183は、一定時間、他のタスクからの実行用メモリ11へのアクセスをロックして、実行用メモリ11の一定の範囲をチェックしてから、アンロックを行う。そのため、RAMチェックの実行中に、他のTPへの切り替えが発生すると、RAMチェックタスク31がロックをかけたままとなってしまう。つまり、他のTPに属するタスクが実行用メモリ11にアクセスできなくなってしまう。そのため、本実施の形態7では、RAMチェックを実行するだけの余裕がある場合に、RAMチェックS183を行うようにする。ここで、ステップS182におけるさらに詳細な処理が図30に示されている。残りの時間の問い合わせを行う場合、RAMチェックタスク31は、残りの時間の問い合わせにおいてS191、残りの時間をフリーランタイマ値から算出する。具体的には、RAMチェックタスク31は、フリーランタイマの現在値から、パーティションスケジューラ21が実行用メモリ11に格納したTP2開始時のフリーランタイマ値を減算することによって、TP2がアクティブになってからの経過時間Taを算出する。RAMチェックタスク31は、TP2の時間から、経過時間Taを減算することによって、TP2の残り時間を算出する。例えば、TP2の時間を示す情報を予め実行用メモリ11に格納しておく。そして、RAMチェックタスク31は、その情報を参照することで、TP2の残り時間を算出する。TP2の残りの時間に余裕がない場合S182でNo、RAMチェックタスク31は、処理を中断するS184。このとき、RAMチェックタスク31は、例えば、スリープすることによって、プロセッサ10の実行時間を解放する。TP2の残り時間に余裕がある場合S182でYes、RAMチェックタスク31は、RAMチェックを実施するS183。以上に説明したように、本実施の形態7では、RAMチェックタスク31においてRAMチェック処理を実行するときに、TP2の残りの期間が、RAMチェック処理に必要な期間に満たない場合に、RAMチェックタスク31の処理を中断して、プロセッサ10の実行時間を解放するようにしている。これによれば、RAMチェック処理のように分断されたくない一連の処理が、TPの切り替えによって分断されることを防止することができる。また、TP2の残りの期間が、RAMチェック処理に必要な期間以上の場合に、RAMチェック処理を実行するようにしている。これによれば、RAMチェック処理が終了するまで、TP2から他のTPへの切り替えが発生しないことが保障されるため、RAMチェック処理において排他制御が不要となる。さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、実施の形態1乃至7の全て又はいずれかを組み合わせて実施するようにしてもよい。本実施の形態では、OSが、TP1~TP4を有する場合について例示したが、TPの種類及び数は、これに限られない。スケジューリングパターンについても、本実施の形態に例示したものに限られない。また、TPに属するタスクの種類及び数についても、本実施の形態において例示したものに限られない。