プロセッサと、制御対象の機能安全の確保に関する処理を実行する安全関連タスク、その他の前記制御対象の制御に関する処理を実行する非安全関連タスク、及び、前記制御対象からの割り込みに応じた処理を実行する割り込み処理タスクに対する前記プロセッサの実行時間の割り当てを制御するシステムプログラムと、前記制御対象からの割り込みに応じて実行される割り込みハンドラと、を備え、前記プロセッサは、前記システムプログラムを実行することによって、前記安全関連タスクに前記実行時間が割り当てられる安全関連タイムパーティション、前記非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティション、及び、実行予約された実行予約タスクに前記実行時間が割り当てられる予約実行タイムパーティションのスケジューリング内容を示すスケジューリング情報に従って、前記タスクをスケジューリングし、前記プロセッサは、前記制御対象から割り込みがあったときに、前記割り込みハンドラを実行することによって、当該割り込みに応じた処理を実行する割り込み処理タスクを、前記実行予約タスクとして実行予約し、前記プロセッサは、前記スケジューリングにおいて、前記予約実行タイムパーティションよりも前のタイムパーティションの期間が終了する前に、当該前のタイムパーティションに前記実行時間が割り当てられるタスクの実行が終了している場合、前記実行予約タスクのいずれかに、前記予約実行パーティションにおける前記実行時間に代えて当該前のタイムパーティションにおける前記実行時間を割り当てる安全制御装置。前記プロセッサは、前記スケジューリングにおいて、前記予約実行タイムパーティションの期間が終了するまでに、前記実行予約タスクの実行が終了しないとき、当該予約実行タイムパーティションの次のタイムパーティションの期間から、当該次のタイムパーティションにおいて前記実行時間が割り当てられるタスクの実行に必要な期間を除いた余剰期間がある場合、当該余剰期間の範囲内で当該予約実行タイムパーティションの期間を延長する請求項1に記載の安全制御装置。前記安全制御装置は、前記制御対象からの割り込みの割り込み要因と、当該割り込み要因の割り込みに応じた処理を実行する割り込み処理タスクと、を対応付けた対応情報が格納される記憶部をさらに備え、前記プロセッサは、前記スケジューリングにおいて、前記記憶部に格納された対応情報に基づいて、前記制御対象からの割り込みの割り込み要因に対応する割り込み処理タスクを、前記実行予約タスクとして実行予約する請求項1又は2に記載の安全制御装置。前記割り込み処理タスクは、予め定められた優先度を有し、前記プロセッサは、前記スケジューリングにおいて、より優先度の高い割り込み処理タスクである実行予約タスクに対して優先的に前記予約実行パーティションにおける前記実行時間に代えて前記前のタイムパーティションにおける前記実行時間を割り当てる請求項1乃至3のいずれか1項に記載の安全制御装置。前記プロセッサは、前記スケジューリングにおいて、前記タイムパーティションにおいて前記実行時間が割り当てられるタスクが実行可能状態となっている場合に、当該タイムパーティションにおいて当該タスクに前記実行時間を割り当て、前記プロセッサは、前記実行予約タスクの実行予約において、前記割り込み処理タスクを実行可能状態にすることによって、当該割り込み処理タスクを前記実行予約タスクとして実行予約する請求項1乃至4のいずれか1項に記載の安全制御装置。制御対象から割り込みがあったときに、当該割り込みに応じた処理を実行する割り込み処理タスクを、実行予約タスクとして実行予約するステップと、前記制御対象の機能安全の確保に関する処理を実行する安全関連タスクにプロセッサの実行時間が割り当てられる安全関連タイムパーティション、その他の前記制御対象の制御に関する処理を実行する非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティション、及び、前記実行予約された実行予約タスクに前記実行時間が割り当てられる予約実行タイムパーティションのスケジューリング内容を示すスケジューリング情報に従って、前記タスクをスケジューリングするステップと、を備え、前記スケジューリングするステップでは、前記予約実行タイムパーティションよりも前のタイムパーティションの期間が終了する前に、当該前のタイムパーティションに前記実行時間が割り当てられるタスクの実行が終了している場合、前記実行予約タスクのいずれかに、前記予約実行パーティションにおける前記実行時間に代えて当該前のタイムパーティションにおける前記実行時間を割り当てる安全制御方法。しかしながら、特許文献1に開示されているような、タイムパーティションニングを採用したシステムプログラムに対して割り込み処理を適用した場合、処理が破綻してしまうという課題がある。以下、図18を参照して、その課題について説明する。図では、タイムパーティションを、それぞれパーティションA、パーティションB及びパーティションCとして示す。また、図18の上図では、パーティションA、パーティションB、パーティションCの順に、タイムパーティションが繰り返して切り替わる場合について例示している。ここで、図18の上図に例示するようにタイムパーティションを切り替えるケースにおいて、パーティションBにおいて割り込みが発生する場合について考える。図18の中央図は、図18の上図に例示するケースにおいて、割り込みに応じて、即時、割り込み処理を実行する場合について例示している。この場合、図18の中央図に示すように、パーティションBにおいて、割り込み処理を実行する期間が生じる。この割り込み処理は、パーティションBのタイムリソースを消費して実行されることになる。そのため、パーティションBにおける処理の実行に必要なタイムリソースは保証されず、パーティションBにおける処理が最後まで実行することができずに不完全なまま終わってしまう可能性がある。このときに、パーティションC以降の処理において、パーティションBにおける処理の完了を前提とした処理が実行されている場合、パーティションC以降の処理を正常に実行することができなくなってしまうという問題が発生してしまう。これに対して、図18の下図は、図18の上図に例示するケースにおいて、割り込み処理が実行されたときに、パーティションBにおける処理の完了が保証されるようにパーティションBの期間を延長した場合について例示している。この場合、パーティションBにおける処理の実行に必要なタイムリソースは保証されるが、パーティションC以降の処理の実行タイミングが遅延してしまう。そのため、パーティションC以降の処理において、定期的に実行する必要がある処理がある場合、その処理を定期的に実行できなくなってしまうという問題がある。例えば、定期的に実行する必要がある処理が、制御対象のアクチュエータに対する司令値を更新する処理である場合、所望のタイミングで司令値を更新できなくなってしまう。その結果、アクチュエータの制御が破綻してしまうといった問題が生じてしまう。また、例えば、定期的に実行する必要がある処理が、システムのハングアップを監視するためにシステムから所定の時間の間アクセスがないときにシステムをリセットするリセット回路に対してアクセスをする処理である場合、所望のタイミングでリセット回路にアクセスすることができなくなってしまう。その結果、システムに問題がなくても、リセット回路がシステムをリセットしてしまうといった問題が生じてしまう。このように、タイムパーティションニングを採用したシステムプログラムに対して割り込み処理を適用すると、処理が破綻してしまうという問題がある。一方で、一般的に、割り込み処理は、割り込みの発生に応じて、できるだけ早く実行することが望まれる処理が実装されているという側面もある。本発明は、上述した知見に基づいてなされたものであって、タイムパーティションニングにおいて、割り込み処理を実行するようにした場合であっても、割り込み処理の実行遅延を抑制しつつ、処理の破綻を防止することができる安全制御装置及び安全制御方法を提供することを目的とする。本発明の第1の態様にかかる安全制御装置は、プロセッサと、制御対象の機能安全の確保に関する処理を実行する安全関連タスク、その他の前記制御対象の制御に関する処理を実行する非安全関連タスク、及び、前記制御対象からの割り込みに応じた処理を実行する割り込み処理タスクに対する前記プロセッサの実行時間の割り当てを制御するシステムプログラムと、前記制御対象からの割り込みに応じて実行される割り込みハンドラと、を備え、前記プロセッサは、前記システムプログラムを実行することによって、前記安全関連タスクに前記実行時間が割り当てられる安全関連タイムパーティション、前記非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティション、及び、実行予約された実行予約タスクに前記実行時間が割り当てられる予約実行タイムパーティションのスケジューリング内容を示すスケジューリング情報に従って、前記タスクをスケジューリングし、前記プロセッサは、前記制御対象から割り込みがあったときに、前記割り込みハンドラを実行することによって、当該割り込みに応じた処理を実行する割り込み処理タスクを、前記実行予約タスクとして実行予約し、前記プロセッサは、前記スケジューリングにおいて、前記予約実行タイムパーティションよりも前のタイムパーティションの期間が終了する前に、当該前のタイムパーティションに前記実行時間が割り当てられるタスクの実行が終了している場合、前記実行予約タスクのいずれかに、前記予約実行パーティションにおける前記実行時間に代えて当該前のタイムパーティションにおける前記実行時間を割り当てるものである。本発明の第2の態様にかかる安全制御方法は、制御対象から割り込みがあったときに、当該割り込みに応じた処理を実行する割り込み処理タスクを、実行予約タスクとして実行予約するステップと、前記制御対象の機能安全の確保に関する処理を実行する安全関連タスクにプロセッサの実行時間が割り当てられる安全関連タイムパーティション、その他の前記制御対象の制御に関する処理を実行する非安全関連タスクに前記実行時間が割り当てられる非安全関連タイムパーティション、及び、前記実行予約された実行予約タスクに前記実行時間が割り当てられる予約実行タイムパーティションのスケジューリング内容を示すスケジューリング情報に従って、前記タスクをスケジューリングするステップと、を備え、前記スケジューリングするステップでは、前記予約実行タイムパーティションよりも前のタイムパーティションの期間が終了する前に、当該前のタイムパーティションに前記実行時間が割り当てられるタスクの実行が終了している場合、前記実行予約タスクのいずれかに、前記予約実行パーティションにおける前記実行時間に代えて当該前のタイムパーティションにおける前記実行時間を割り当てるものである。上述した本発明の各態様によれば、タイムパーティションニングにおいて、割り込み処理を実行するようにした場合であっても、割り込み処理の実行遅延を抑制しつつ、処理の破綻を防止することができる安全制御装置及び安全制御方法を提供することができる。以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。<発明の実施の形態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>続いて、図9を参照して、本実施の形態2にかかる安全制御装置2について説明する。図9は、本実施の形態2のかかる安全制御装置2の構成例を示すブロック図である。以下、実施の形態1にかかる安全制御装置1と同様の内容については説明を省略する。プロセッサ10は、制御対象からの割り込みと、タイマー割り込みを検出する。プロセッサ10は、制御対象からの割り込み信号の入力によって、制御対象からの割り込みを検出する。プロセッサ10は、制御対象からの割り込みを検出したときに、後述する割り込みハンドラ31を実行する。ここで、安全制御装置2のマイクロコントローラ15は、タイマー図示せずを有する。タイマーは、クロック信号に基づいた所定の周期で割り込み信号をプロセッサ10に出力する。プロセッサ10は、タイマーからの割り込み信号の入力によって、タイマー割り込みを検出する。プロセッサ10は、制御対象からの割り込みを検出したときに、パーティションスケジューラ21を実行する。不揮発性メモリ13は、割り込み処理アプリケーション104を格納する。割り込み処理アプリケーション104は、制御対象からの割り込みに応じた割り込み処理を、プロセッサ10に実行させるための命令コードを含む。さらに、割り込み処理アプリケーション104は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含むようにしてもよい。割り込み処理アプリケーション104は、安全関連アプリケーションであってもよく、非安全関連アプリケーションであってもよい。ここで、割り込み処理アプリケーション104は、割り込み要因のそれぞれに対応するように複数用意される。つまり、割り込み処理アプリケーション104は、対応する割り込み要因の割り込みに応じて実行されるべき割り込み処理の命令コードを含む。なお、1つの割り込み処理アプリケーション104が2つ以上の割り込み要因に対応していてもよい。続いて、パーティションスケジューラ21と、アプリケーション101~104の起動により生成されるタスクと、割り込みハンドラ31と、の関係について、図10を用いて説明する。図10は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28、30と割り込みハンドラ31との関係を示す図である。以下、実施の形態1にかかる安全制御装置1と同様の内容については説明を省略する。パーティションスケジューラ21は、1Tickごとに発生するタイマー割り込みに応じて、1Tickごとに動作してパーティションスケジューリングを行う。つまり、パーティションスケジューラ21におけるパーティションスケジューリングを行う処理は、例えば、パーティションスケジューラ21の起動直後の初期化処理において、タイマー割り込みの割り込みハンドラとして登録されたパーティションスケジューラ21の処理である。パーティションスケジューラ21は、次の1Tickの間にTP1~TP3及び割り込み専用タイムパーティションTPIのいずれをアクティブにするかを選択決定する。TPIには、割り込み処理タスク30が属する。タスクスケジューラ29は、タスクスケジューラ23、25、27と同様に、TPIに属する割り込み処理タスク30のスケジューリングを行う。割り込み処理タスク30は、割り込み処理アプリケーション104の起動によって生成されるタスクである。よって、割り込み処理タスク30は、制御対象からの割り込みに応じた割り込み処理を実行する。また、割り込み処理タスク30は、割り込み要因のそれぞれに対応するように複数生成されることになる。制御対象からの割り込みが発生した場合、その割り込みの割り込み要因に対応する割り込み処理アプリケーション104の起動によって生成された割り込み処理タスク30が実行される。割り込み処理タスク30は、制御対象に通常の機能動作を行わせるための制御を行うようにしてもよく、機能安全を確保するために定められた制御を行うようにしてもよい。割り込みハンドラ31は、制御対象からの割り込みに応じて実行される。割り込みハンドラ31は、制御対象から割り込みがあったときに、その割り込みに応じた割り込み処理を実行する割り込み処理タスク30を、TPIで実行されるように実行予約する。なお、割り込みハンドラ31は、発生した割り込みの割り込み要因に対応する割り込み処理タスク30を実行予約する。このように、本実施の形態2では、割り込みに応じて実行される割り込みハンドラ31における処理を、割り込み処理タスク30の実行予約のみとし、実行予約した割り込み処理タスク30をTPIで実行するようにしている。これによれば、割り込みハンドラ31における処理時間は、割り込み処理を実行する場合と比べて、比較にならないほど小さい実行時間となる。そのため、割り込みが発生した時点でアクティブとなっているTPにおける処理の遅延が発生しなくなる。続いて、図11を参照して、タスクの状態について説明する。図11は、タスクの状態遷移図である。タスク24、26、28、30は、実行状態、実行可能状態、待ち状態、二重待ち状態、強制待ち状態、及び、休止状態のいずれかの状態をとる。実行状態は、タスクスケジューラ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、29、又は、他のタスクによって、実行可能状態のタスクが一時的に実行を禁止された状態である。強制待ち状態のタスクは、パーティションスケジューラ21、タスクスケジューラ23、25、27、29、又は、他のタスクによって、強制待ち状態を解除された場合に、実行可能状態に遷移する。二重待ち状態は、タスクにプロセッサ10の実行時間を割り当て可能でなく、プロセッサ10の実行時間が割り当てられていない状態である。二重待ち状態は、例えば、パーティションスケジューラ21、タスクスケジューラ23、25、27、29、又は、他のタスクによって、待ち状態のタスクが一時的に実行を禁止された状態である。強制待ち状態のタスクは、パーティションスケジューラ21、タスクスケジューラ23、25、27、29、又は、他のタスクによって、強制待ち状態を解除された場合に、待ち状態に遷移する。また、強制待ち状態のタスクは、起床した場合に、強制待ち状態に遷移する。休止状態は、タスクにプロセッサ10の実行時間を割り当て可能でなく、プロセッサ10の実行時間が割り当てられていない状態である。休止状態は、例えば、タスクが起動されていない状態、又は、タスクが終了した状態である。続いて、図12~図14を参照して、本実施の形態2にかかる安全制御装置2の割り込み発生時の処理手順について説明する。図12は、本実施の形態2にかかるスケジューリングパターンの具体例を示す図である。つまり、本実施の形態2では、図12に例示するスケジューリングパターンが、スケジューリングテーブル22に格納されている場合について説明する。図13は、本実施の形態2にかかる割り込み発生時の処理手順の概念図である。図14は、本実施の形態2にかかる割り込み発生時の処理手順の具体例を示すフローチャートである。割り込みが発生したときに、割り込みがTickの割り込みである場合S81でYes、プロセッサ10は、パーティションスケジューラ21を実行する。つまり、プロセッサ10は、タイマー割り込みが発生した場合、パーティションスケジューラ21を実行する。パーティションスケジューラ21は、図12に示すスケジューリングパターンに従って、タイムパーティションのパーティションスケジューリングを開始するS82。割り込みがTickの割り込みでない場合S81でNo、プロセッサ10は、割り込みハンドラ31を実行する。つまり、プロセッサ10は、制御対象からの割り込みが発生した場合、割り込みハンドラ31を実行する。割り込みハンドラ31は、割り込みハンドラテーブルISTtableに、発生した割り込みの割り込み要因に対応する割り込み処理タスク30が登録されているか否かを判定するS83。割り込みハンドラテーブルISTtableは、割り込み要因と、割り込み処理タスク30とを対応付けたテーブルである。具体的には、割り込みハンドラテーブルISTtableは、割り込み要因と、その割り込み要因の割り込みに応じて実行されるべき割り込み処理タスク30のタスクIDとが対応付けている。割り込みハンドラテーブルISTtableは、例えば、実行用メモリ11に格納されている。なお、割り込みハンドラテーブルISTtableは、割り込み要因と、割り込み処理タスク30とを対応付けた情報であれば、どのような情報であってもよい。例えば、図13に例示するように、複数の割り込み要因のそれぞれに対応した領域に、複数の割り込み要因のそれぞれに対応した割り込み処理タスク30のタスクIDが格納されている情報であってもよい。また、割り込みハンドラ31は、割り込み要因レジスタの値を参照することによって、割り込み要因を特定する。割り込み要因レジスタは、発生した割り込みの割り込み要因を示す値が格納されるレジスタである。例えば、割り込み要因レジスタは、制御対象が割り込みを発生するときに、制御対象によって値が設定される。割り込み要因レジスタ図示せずは、マイクロコントローラ15に備えられる。割り込み要因に対応するタスクが登録されていない場合S84でNo、割り込みハンドラ31は、処理を終了する。割り込み要因に対応する割り込み処理タスク30が登録されている場合S84でYes、割り込みハンドラ31は、そのタスクを起床させる。具体的には、割り込みハンドラ31は、割り込みハンドラテーブルから、発生した割り込みの割り込み要因に対応した領域に格納されているタスクIDを取得する。割り込みハンドラは、例えば、取得したタスクIDを指定したタスク間通信によって、タスクを起床する。これによって、割り込みがあった割り込み要因に対応する割り込み処理タスク30のみが実行可能状態となり、その他の割り込み処理タスク30は待ち状態のままとなる。割り込みハンドラ31は、割り込みがあった割り込み要因をマスクするS85。そして、割り込みハンドラ31は、処理を終了する。このように実行可能状態とされた割り込み処理タスク30は、TPIがアクティブとなったときにタスクスケジューラ29によって、プロセッサ10の実行時間が割り当てられて実行状態となる。つまり、割り込みハンドラ31は、割り込み処理タスク30を実行可能状態にすることによって、割り込み実行タスク30がTPIで実行されるように実行予約する。時間が経過して、TPIがアクティブとなったとき、パーティションスケジューラ21は、タスクスケジューラ29を動作させる。タスクスケジューラ29は、割り込みハンドラ31によって起床された割り込み処理タスク30を実行するS86。以上に説明したように、本実施の形態2にかかる割り込み発生時の処理では、制御対象から割り込みがあったときに、プロセッサ10が、割り込みハンドラ31を実行することによって、割り込み処理タスク30の実行予約のみを行うようにしている。そして、TPIにおいて実行予約された割り込み処理タスク30にプロセッサ10の実行時間を割り当てて実行するようにしている。これによれば、割り込みが発生した時点でアクティブとなっているTPにおけるタスクの処理の遅延が発生することがなくなるため、そのTPにおける処理に必要なタイムリソースが保証されるようになる。したがって、その後のTPにおける処理の破綻を防止することができる。続いて、図15を参照して、本発明の実施の形態2にかかるスケジューリング処理手順について説明する。図15は、本発明の実施の形態2にかかるスケジューリング処理手順の具体例を示すフローチャートである。Tickの割り込みが発生した場合S91、プロセッサ10は、パーティションスケジューラ21を実行するS92。パーティションスケジューラ21は、現在アクティブとなっているTPXのタイムリソースが残っている否かを判定するS93。言い換えると、パーティションスケジューラ21は、TPXの期間が終了していない否かを判定する。なお、図15におけるTPXは、TP1~TP3及びTPIのいずれかのTPを示す。ここでは、TPXが、TP1~TP3のいずれかであるものとして説明をしていく。パーティションスケジューラ21は、タイムリソースが残っているか否かを、TPXの期間から、TPXがアクティブになってから経過した期間を除いた期間に余りがあるか否かによって判定する。例えば、TP1~TP3及びTPIのそれぞれにおける期間が何Tickあるかを示す情報を実行用メモリ11に予め格納しておく。また、パーティションスケジューラ21は、TPXがアクティブになってから、1Tickごとに動作する度に、Tick数をカウントする。このカウントしたTick数は、TPXがアクティブになってから経過した期間を示すことになる。そして、パーティションスケジューラ21は、実行用メモリ11に格納された情報が示すTick数が、カウントしたTick数よりも大きいか否かによって、タイムリソースが残っている否かを判定する。TPXのタイムリソースが残っていない場合S93でNo、パーティションスケジューラ21は、TPXの次のTPに切り替えるS94。パーティションスケジューラ21は、TPXに属するタスクスケジューラの動作を停止し、TPXの次のTPに属するタスクスケジューラの動作を開始させる。動作を開始したタスクスケジューラは、自身が属するTP内のタスクを実行していく。また、パーティションスケジューラ21は、次のTickの割り込みS91を待つ。TPXのタイムリソースが残っている場合S93でYes、パーティションスケジューラ21は、TPXの処理が終了しているか否かを判定するS95。つまり、パーティションスケジューラ21は、TPXに属するタスクの実行が終了しているか否かを判定する。タスクの実行が終了しているか否かは、例えば、TPXに属するタスクが実行可能状態又は実行状態となっていないか否かによって判定する。TPXの処理が終了していない場合S95でNo、パーティションスケジューラ21は、TPの切り替えは実行せずに、TPXに属するタスクスケジューラによるTPXの処理を継続させるS96。つまり、TPXに属するタスクスケジューラは、TPXに属する実行可能状態のタスクを実行していく。TPXの処理が終了している場合S95でYes、パーティションスケジューラ21は、割り込みの受付処理S85が済んだ割り込み処理タスク30が存在するか否かを判定するS97。つまり、パーティションスケジューラ21は、起床されて実行可能状態となっている割り込み処理タスク30が存在するか否かを判定する。割り込みの受付処理S85が済んだ割り込み処理タスクが存在しない場合S97でNo、パーティションスケジューラ21は、次のTickの割り込みS91を待つ。割り込みの受付処理S85が済んだ割り込み処理タスクが存在する場合S97でYes、パーティションスケジューラ21は、割り込み処理を実行するS98。具体的には、パーティションスケジューラ21は、TPXからTPIに切り替えて、TPXの残りの期間についてTPIをアクティブにする。パーティションスケジューラ21は、TPXに属するタスクスケジューラの動作を停止し、TPIに属するタスクスケジューラ29の動作を開始する。タスクスケジューラ29は、TPIに属する割り込み処理タスク30のうち、実行可能状態となっている割り込み処理タスク30を実行していく。なお、TPIをアクティブとする期間は、TPXの残りの期間内であれば、任意の長さとしてもよい。以上に説明したように、本実施の形態2にかかる割り込み発生時の処理では、TPIよりも前のTPXの期間が終了する前に、そのTPIより前のTPXに属するタスクの実行が終了している場合、実行予約されている割り込み処理タスク30のいずれかに、TPIにおけるプロセッサ10の実行時間に代えて、そのTPIより前のTPXにおけるプロセッサ10の実行時間を割り当てるようにしている。これによれば、TPIまで待つことなく、TPIよりも前のTPXにおいて割り込み処理タスク30を実行することができる。また、TPXの余りのタイムリソースを使用して割り込み処理タスク30を実行するようにしているため、そのTPXにおける処理に必要なタイムリソースも保証されることになる。したがって、割り込み処理の実行遅延を抑制しつつ、処理の破綻を防止することができる。なお、本実施の形態2において、割り込み処理タスク30のそれぞれに、予めタスク実行の優先度を、TPIまで処理の実行を待っても問題のない割り込み処理タスク30については、優先度を低く設定し、できるだけ早く実行する必要がある割り込み処理タスク30については、それよりも優先度を高く設定するようにしてもよい。そして、タスクスケジューラ29によって、より優先度の高い割り込み処理タスク30から優先的に実行されるようにする。このようにすることで、できるだけ早く実行する必要がある割り込み処理タスク30における割り込み処理の実行遅延をより抑制することができる。<発明の実施の形態3>続いて、本実施の形態3にかかる安全制御装置2について説明する。なお、本実施の形態3にかかる安全制御装置2の構成は、本実施の形態2にかかる安全制御装置2の構成と同様であるため、説明を省略する。また、パーティションスケジューラ21とタスク24、26、28、30と割り込みハンドラ31との関係についても、本実施の形態2にかかる安全制御装置2の構成と同様であるため、説明を省略する。続いて、図16を参照して、本発明の実施の形態2にかかるスケジューリング処理手順について説明する。図16は、本発明の実施の形態2にかかるスケジューリング処理手順の具体例を示すフローチャートである。なお、ステップS101~S105については、ステップS91~95と同様であるため、説明を省略する。なお、図16におけるTPXは、TP1~TP3及びTPIのいずれかのTPを示す。TPXの処理が終了している場合S105でYes、パーティションスケジューラ21は、TPXのタイムリソースが無くなるまで待ち合わせるS106。つまり、パーティションスケジューラ21は、TPXにおけるタイムリソースが無くなるまで、ステップS101、S102、S103、S105の処理を繰り返す。そして、TPXのタイムリソースが無くなった場合S103でNo、パーティションスケジューラ21は、TPXの次のTPに切り替える。TPXの処理が終了していない場合S105でNo、パーティションスケジューラ21は、現在のTPXの処理を実行するためのタイムリソースが足りないか否かを判定するS107。例えば、タイムリソースが足りなくなる例としては、TPXがTPIであるときに、多くの割り込みが発生して、多くの割り込み処理タスク30が起床されてしまった場合が挙げられる。例えば、複数の割り込みが発生して、それぞれの割り込み要因が異なっている場合、複数の割り込み処理タスク30が起床されることになる。この場合、TPIのタイムリソースのみで全ての割り込み処理タスク30の実行を終了することができないことがある。ここで、パーティションスケジューラ21は、タイムリソースが足りないか否かを、TPXにおける残りの期間が、TPXに属する未実行のタスクの実行に必要な期間に満たないか否かによって判定する。例えば、TP1~TP3及びTPIのそれぞれにおける期間が何Tickあるかを示す情報を実行用メモリ11に予め格納しておく。また、各タスクの実行に必要な期間が何Tickあるかを示す情報を実行用メモリ11に予め格納しておく。パーティションスケジューラ21は、TPXがアクティブになってからカウントしたTick数と、実行用メモリ11に格納された情報が示すTPXのTick数から、TPXにおける残りの期間に相当するTick数を算出する。そして、パーティションスケジューラ21は、算出した残りのTick数が、実行用メモリ11に格納された情報が示す未実行のタスクの実行に必要なTick数以上であるか否かによって、タイムリソースが足りないか否かを判定する。タイムリソースが足りる場合S107でNo、パーティションスケジューラ21は、TPの切り替えは実行せずに、TPXに属するタスクスケジューラによるTPXの処理を継続させるS108。つまり、TPXに属するタスクスケジューラは、TPXに属する実行可能状態のタスクを実行していく。タイムリソースが足りない場合S107でYes、パーティションスケジューラ21は、次のTPの開始時から、次のTPのWCWTまで時間があるか否かを判定するS109。ここで、図17を参照して、WCWTについて説明する。WCWTとは、図17に示すように、TPの期間に含まれるTickのうち、そのTickまでに処理を開始すれば、そのTPの期間内で必ず処理を終了させることができる時間である。つまり、WCWTとは、TPの期間のうち、それまでにタスクの実行を開始すれば、そのTPの期間内でそのTPに属するタスクの実行を終了することができる地点のことである。例えば、パーティションスケジューラ21は、WCWTまで時間があるか否かを、TPXの次のTPの期間から、そのTPに属するタスクの実行に必要な期間を除いた余剰期間があるか否かによって判定する。上述した実行用メモリ11に予め格納された情報に基づいて、TPXの次のTPの期間のTick数が、そのTPに属するタスクの実行に必要なTick数の合計よりも大きいか否かによって、TPXの次のTPのWCWTまでの時間があるか否かを判定する。次のTPのWCWTまで時間がない場合S109でNo、現在のTPXの処理がTPXの残りのタイムリソースでは終了しないことになるが、パーティションスケジューラ21は、このまま処理を継続するS110。つまり、パーティションスケジューラ21は、TPXの残りのタイムリソースが無くなるまで、TPXに属するタスクスケジューラの動作を継続する。また、パーティションスケジューラ21は、必要に応じて、TP3に切り替えるようにしてもよく、マイクロコントローラ15のリセットをリセット回路14に指示するようにしてもよい。例えば、TPXの処理が終了しないことによって、異常が引き起こされてしまう場合、そのようにする。TPXの処理が終了しないことによって引き起こされる異常が安全制御タスク28で対応可能な異常である場合、パーティションスケジューラ21は、TPXからTP3に切り替える。また、TPXの処理が終了しないことによって引き起こされる異常が緊急停止を要する異常である場合、パーティションスケジューラ21は、マイクロコントローラ15をリセットする。次のTPのWCWTまで時間がある場合S109でYes、パーティションスケジューラ21は、次のTPのタイムリソースを削減することによって、TPXの期間を延長するS111。なお、ここで延長される期間は、次のTPの期間の開始時から、次のTPのWCWTまでの期間の範囲内であれば、どのような長さであってもよい。以上に説明したように、本実施の形態3によれば、TPIの期間が終了するまでに、割り込み処理タスク30の実行が終了しないときに、TPIの次のTPの期間から、TPIの次のTPに属するタスクの実行に必要な期間を除いた余剰期間がある場合、その余剰期間の範囲内でTPIの期間を延長することができる。これによれば、多くの割り込みが発生して、TPIのタイムリソースで全ての割り込み処理タスク30を実行することができない場合であっても、TPIの次のTPのタイムリソースを利用することによって、次のTPIまで待つことなく割り込み処理タスク30の実行を継続することができる。そのため、割り込み処理の実行遅延を抑制することができる。また、TPIの次のTPの余りのタイムリソースを利用しているため、割り込み処理の実行遅延によって生じる処理の破綻も防止することができる。さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、実施の形態1乃至3の全て又はいずれかを組み合わせて実施するようにしてもよい。本実施の形態では、TP1~TP3のそれぞれに属するタスクが、それぞれ安全監視タスク24、通常制御タスク26及び安全制御タスク28の1つである場合について例示したが、TPに属するタスクの種類及び数は、これに限られない。例えば、TP1~TP3のそれぞれに、安全監視タスク24、通常制御タスク26及び安全制御タスク28のそれぞれが複数属するようにしてもよい。また、TP1~TP3のそれぞれに、さらに、安全監視タスク24、通常制御タスク26及び安全制御タスク28以外の任意の処理を実行するタスクが属するようにしてもよい。本実施の形態では、OSが、TP1~TP3及びTPIを有する場合について例示したが、TPの種類及び数は、これに限られない。スケジューリングパターンについても、本実施の形態に例示したものに限られない。本実施の形態3において、制御対象の制御周期に余裕がある場合、TPIのようにタイムリソースが不足する可能性がるTPの次に、期間譲渡用のPTを備えるようにしてもよい。