説明

プログラム修復システムおよび方法

【課題】本来の処理に対する影響を抑制しつつ、障害が発生したプログラムを修復するためのプログラム修復システムを提供する。
【解決手段】少なくとも2つのドメインを提供するマルチコアシステムにおいて、所定のプログラムを実行する主ドメインに障害が発生した場合に、当該プログラムを修復するプログラム修復システムであって、主ドメインとは異なる1または複数のサブドメイン内に、主ドメインの状態を検査する検査手段と、主ドメインに障害が発生した場合に、前記プログラムを復元する復元手段と、主ドメインに障害が発生した場合に、前記プログラムの代替処理を実行する緊急処理手段と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチコアシステムにおけるプログラム修復システムおよび方法に関する。
【背景技術】
【0002】
継続的な運転が要求される計算機において、OSやプログラムが正常に運転を続けているか監視するための方式としてウォッチドッグタイマが知られている。OSやプログラムは、正常に動作している場合には、定期的にウォッチドッグタイマに信号を送る。一方、障害が発生すると、ウォッチドッグタイマには信号が入力されなくなる。一定時間以上信号の入力がないと、ウォッチドッグタイマはシステムをハードウェア的にリセットする。このような方法によるシステム監視では、再起動の間、計算機が一切のサービスを提供できないという問題がある。
【0003】
これに対し、特許文献1には、サービスを継続して提供するために、二重系システムによってサービス機能を部分的に維持する手法が開示されている。特許文献1では、二重系システムにおける各計算機が、サービスを提供するプログラムと、自己の故障を検出するプログラムとを1つのCPUで実行し、故障が修復可能であれば修復を行い、修復不可能であれば機能を部分的に維持して縮退運転を行う。
【特許文献1】特開2007−140885号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記のような従来技術の場合には、1つのCPUで本来の処理と障害の有無を検査する処理を行っているため、本来の処理へのCPU割当時間の減少などによる悪影響が問題となりうる。厳しいリアルタイム性が要求されるシステムでは、CPU割当時間の減少に伴う遅延によって、リアルタイム要件を満足できなくなる場合がある。
【0005】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、本来の処理に対する影響を抑制しつつ、障害が発生したプログラムを修復する安全機能を付与する技術を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するために本発明では、以下の手段または処理によって障害が発生したプログラムの修復を行う。
【0007】
本発明は、マルチコアシステム上に構築されるプログラム修復システムであり、少なくとも2つの仮想的な実行環境であるドメインを提供し、主ドメインで実行中のプログラムに障害が発生したときにこれを修復するプログラム修復システムである。
【0008】
本明細書において、マルチコアシステムとは、複数のプロセッサコアを有するコンピュータシステムのことを意味する。したがって、1つのプロセッサパッケージの中に複数のプロセッサコアを含むシステムや、それぞれが1つのプロセッサコアを有する複数のプロセッサを含むシステムや、これらの組み合わせが、本明細書におけるマルチコアシステムに該当する。
【0009】
本明細書において、ドメインとは、プログラムが実行される仮想的な領域・環境を表し、各ドメインは互いに独立しており原則として他のドメインにアクセスすることができない。したがって、各ドメイン内でプログラムに異常が発生した場合であっても、他のドメ
インに影響を与えることがない。
【0010】
このようなシステムにおいて、主ドメイン内で、ユーザにサービスを提供するためのプログラムを実行する。
【0011】
一方、主ドメインとは異なる1または複数のサブドメイン内で、主ドメインの状態を検査する検査手段と、主ドメインに障害が発生した場合に、上記プログラムを復元する復元手段と、主ドメインに障害が発生した場合に、上記プログラムの代替処理を行う緊急処理手段と、を有する。検査手段と復元手段とを1つのドメインで実行し、緊急処理手段を別のドメインで実行することが好ましいが、全ての手段を1つのドメインで実行してもよい。
【0012】
本発明によれば、マルチコアシステムを採用しているため、サービス提供のためのプログラムと、検査のためのプログラムとを独立して動作させることができる。したがって、安全機能の付加が与える本来の処理への悪影響を最小限とすることができる。また、プログラムの復元中に、緊急処理手段によって代替処理を行うことができるので、少なくとも最低限の機能は維持しつつシステムの復元を行うことができる。
【0013】
本発明において、ユーザにサービスを提供するプログラムを提供する主ドメインはサブドメインへのアクセスが不可能なドメインであることが好適である。また、上記プログラムの検査・復元処理を行うサブドメインは、信頼されたプログラムのみを実行可能であり、主ドメインにアクセス可能なドメインであることが好適である。検査・復元処理を行うプログラムは、システム全体のセキュリティを担保するものであるので、これらのプログラムが改ざんされないようにセキュリティが確保されたドメイン内で実行することが好ましい。
【0014】
本発明に係るプログラム修復システムにおいて、通常時は、前記検査手段と主ドメイン内のプログラムとが並列に実行されると共に、プログラム復元時は、前記復元手段と前記緊急処理手段が並列に実行されることが好適である。
【0015】
このようにすれば、検査処理や復元処理を実行中であっても、本来の処理や緊急処理が妨げられない。
【0016】
また、本発明に係るプログラム修復システムは、主ドメイン内に、主ドメインの状態を記憶する状態記憶手段と、状態記憶手段を更新する状態変更手段を有することが好適である。この場合、上述の検査手段は、主ドメイン内にある状態記憶手段を参照して主ドメインの状態を検査する。
【0017】
このようにすれば、主ドメイン内で行う必要のある処理は、自ドメイン内の状態記憶手段を更新する処理だけであり、作業コストが小さいものとなる。また、検査手段は状態記憶手段を参照することで、主ドメインの状態を検査することができる。したがって、プログラムを修復するための安全機能の付加が与える本来の処理への悪影響を最小限とすることができる。
【0018】
また、本発明における状態変更手段は、主ドメイン内で割り込み処理が発生するタイミングで、前記状態記憶手段を更新することが好適である。
【0019】
割り込み処理は主ドメインにおいて必須の機能であり、また、頻繁に行われるものであるため、状態記憶手段の更新も頻繁にされることになる。
【0020】
なお、本発明は、上記手段の少なくとも一部を有するプログラム修復システムとして捉えることができる。また、本発明は、上記処理の少なくとも一部を含むプログラム修復方法、または、かかる方法を実現するためのプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【0021】
本発明によれば、本来の処理に与える影響を抑制しつつ、プログラムの障害発生の検出および修復を行うことが可能となる。
【発明を実施するための最良の形態】
【0022】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0023】
本実施形態は、マルチプロセッサコアのCPUを有し、複数のドメインを有する処理システムである。各ドメインは、基本的に互いに独立した実行環境であり、他のドメインにアクセスすることができない。ただし、ドメイン間のアクセスを制御する機構を設けることで、他のドメインに対するアクセスが許可されたドメインを設けることができる。例えば、ARM社のTrustZone(登録商標)技術は安全ドメインと非安全ドメインを提供できるため、マルチコアプロセッサ上でTrustZoneを用いることで、複数のドメインを有する本処理システムを好適に実現可能である。
【0024】
本処理システムで作動する種々のプログラムの概略図を図1に示す。このシステムでは、安全ドメイン120と非安全ドメイン130の2つのドメインが提供される。また、特権モードで動作し、安全ドメイン120と非安全ドメイン130との間の全ての変更を両方向に管理するモニタプログラム110が設けられる。
【0025】
安全ドメイン120内では、安全オペレーティングシステム(OS)122が実行され、その上で複数の安全アプリケーションプログラム(AP)124,126が実行される。安全ドメイン120は、信頼されたプログラムのみが実行可能な環境であり、安全OS122や、安全AP124,126は、その信頼性が保証されたプログラムである。
【0026】
非安全ドメイン130内では、非安全OS132が実行され、その上で複数の非安全AP134,136が実行される。これらの非安全AP134,136は、非安全OS132と協働して実行される。
【0027】
これらの実行環境は互いに独立しているため、あるドメインで異常が発生しても他のドメインに対して悪影響を及ぼすことがない。非安全ドメイン130側から安全ドメイン120側へのアクセスは、モニタプログラム110によって禁止されるので、非安全AP134,136が改ざんされたりしても、安全ドメイン120を改ざんしたりすることはできない。一方、安全ドメイン120側から非安全ドメイン130側へのアクセスは許可されるため、安全AP124,126は非安全ドメイン130に割り当てられたメモリにアクセスし、正常に動作しているかを検査したり、リセットをかけたりすることができる。
【0028】
また、本処理システムはマルチコアプロセッサを採用しているため、安全ドメイン120内の安全AP124,126や、非安全ドメイン130内の非安全AP134,136は並列に実行可能である。
【0029】
〈機能構成〉
次に、本実施形態に係るプログラム修復システムの機能構成を、図2を参照して説明する。本システムでは、主ドメイン10,検査ドメイン20、および緊急処理ドメイン30の3つのドメインを定義する。
【0030】
主ドメイン10は、ユーザにサービス機能を提供するアプリケーションプログラムが実行されるドメインであり、上述の非安全ドメインに相当する。
【0031】
また、検査ドメイン20は、主ドメイン10のサービス機能の状態が正常であるか検査し、異常が発生した場合には主ドメイン10を復元するプログラムが実行されるドメインであり、上述の安全ドメインに相当する。また、緊急処理ドメイン30は、主ドメイン10の復元中に、サービス機能の代替処理を行うプログラムが実行されるドメインであり、上述の安全ドメインに相当する。なお、ここでは、検査ドメイン20と緊急処理ドメイン30とを異なるドメインとしているが、これらを1つのドメイン(安全ドメイン)で構成しても構わない。
【0032】
検査ドメイン20および緊急処理ドメイン30は、改ざんされないことが必要である。これらのドメインを非安全ドメインから独立した安全ドメインとすることで、悪意のある非安全ドメイン内のプログラムからの改ざんを防ぐことができる。さらに、ROMに格納されたプログラムイメージ自体の改ざんを防ぐために、セキュアブートを利用して攻撃や事故などを防ぐことが好ましい。セキュアブートは、電源投入直後に起動されるブートROMやBIOSを検証し、ブートプロセスにおける信用の連鎖を確立しながら、プラットフォームが改ざんされていないことを保証する技術である。
【0033】
主ドメイン10は、ユーザにサービス機能を提供するアプリケーションプログラム以外に、割り込み処理部11、主ドメイン状態変更部12、および主ドメイン状態記憶部13を有する。
【0034】
検査ドメイン20は、主ドメイン状態参照部21、主ドメイン状態比較部22、主ドメイン前状態記憶部23、比較処理制御部24、緊急状態制御部25、および主ドメイン復元部26を有する。
【0035】
緊急処理ドメイン30は、緊急処理用ソフトウェア31を有する。
【0036】
なお、上記の各機能部は、ROMに格納されたプログラムがCPUによって実行されることで、その機能が実現されるが、一部についてはハードウェアとして実装しても構わない。
【0037】
各機能部について、その処理内容を示すフローチャート共に説明する。図3は主ドメイン10による処理、図4は検査ドメイン20による検査処理、図5は検査ドメイン20による復元処理および緊急処理ドメイン30による緊急処理を示すフローチャートである。
【0038】
〈主ドメインの処理〉
まず、主ドメイン10の各機能部について、図3のフローチャートとともに説明する。主ドメイン10では、割り込みが発生すると、割り込み信号が割り込み処理部11に通知される。このような割り込み信号は、主ドメインで行われるページフォルトやI/O制御の際に生じる。割り込み処理部11は、割り込み信号に対する本来の処理の前に、主ドメイン状態変更部12を起動する(ステップS10)。
【0039】
すると、主ドメイン状態変更部12は、主ドメイン状態記憶部13の内容を更新する(ステップS11)。なお、主ドメイン状態記憶部13に記憶されるデータのことを、主ドメイン10の状態値、または単に、状態値と呼ぶことにする。割り込み信号は頻繁に発生するので、主ドメイン10が正常に稼働していれば主ドメイン状態記憶部13の状態値は、常時更新されることになる。なお、主ドメイン状態変更部12による状態値の更新は、
短期間の間に重複した値をとらないことが望ましい。例えば、主ドメイン状態変更部12は、状態値を単にインクリメントしても良い。
【0040】
主ドメイン10の状態値が更新されると、割り込み処理部11が、割り込み信号に対する本来の処理を実行する(ステップS13)。なお、ここでは割り込み信号処理の前に状態値の更新を行っているが、割り込み信号処理の後に状態の更新を行っても構わない。
【0041】
〈検査ドメインによる検査処理〉
次に、検査ドメイン20の各機能部について、図4のフローチャートとともに説明する。検査ドメイン20では、定期的に主ドメイン10の検査を行い、異常が発生していれば主ドメイン10の復元処理を行う。なお、本システムは、マルチコアシステムで動作しているため、主ドメインの処理と検査ドメインの処理とを並行して実行可能であり、検査ドメインによる検査処理が主ドメインの動作に悪影響を及ぼさない。
【0042】
まず、比較処理制御部24が起動して(ステップS20)処理が開始される。比較処理制御部24は、主ドメイン状態比較部22を起動する(ステップS21)。主ドメイン状態比較部22は、主ドメイン前状態記憶部23を参照する(ステップS22)。なお、主ドメイン前状態記憶部23には、後述するように、検査処理を行うたびにドメインの状態値が格納されるので、直近の検査処理後の状態値を取得することができる。また、主ドメイン状態参照部21が、主ドメイン状態記憶部13を参照して、現在の主ドメインの状態値を取得する(ステップS23)。上述したように、検査ドメインは主ドメインよりもセキュリティレベルが高いので、検査ドメインからは主ドメインを参照することが可能である。
【0043】
そして、主ドメイン状態比較部22が、ステップS22で取得した主ドメインの直前の状態値と、ステップS23で取得した主ドメインの現在の状態値とを比較する(ステップS24)。主ドメインの状態値は、主ドメインが正常に稼働している間は、主ドメイン状態変更部12によって随時更新されるものであるので、異なるタイミングで取得した2つの状態値は異なるものとなる。逆に、2つの状態値が一致している場合には、主ドメインに異常が発生したとみなすことができる。このようにして、主ドメインが動作しているか、または障害により停止しているかを判断することができる。
【0044】
そこで、ステップS24の比較結果として、2つの状態値が異なる場合(S25:NO)は、主ドメインは正常であると判断し、今回取得した状態値を主ドメイン前状態記憶部23に格納して、処理を終わる(ステップS26)。そして、一定時間が経過した後、検査処理が再び実行される。
【0045】
一方、ステップS24の比較結果として、2つの状態値が一致する場合(S25:YES)は、主ドメインに異常が発生したと判断し、復元処理を開始する(ステップS27)。復元処理については、以下で説明する。
【0046】
〈検査ドメインによる復元処理および緊急処理ドメインによる緊急処理〉
主ドメイン10に異常が発生したことが検知されると、主ドメイン状態比較部22は主ドメイン10を停止し、緊急状態制御部25が緊急処理ドメイン30を起動させる(ステップS30)。緊急処理用ソフトウェア31は、主ドメイン10のユーザにサービスを提供しているプログラムの代替処理を実行する(ステップS31)。緊急処理用ソフトウェア31は、主ドメインソフトウェアと同等の機能を提供しても良いが、緊急処理に備えて容量の大きなプログラムを格納しておくとメモリ使用効率が悪いので、サービスを続行するために最低限必要な機能のみを提供すればよい。
【0047】
そして、主ドメイン復元部26が、主ドメインのソフトウェアを復元する(ステップS32)。これは、例えば、主ドメインのサービス提供プログラムを再起動したり、主ドメインのOSを再起動したりすることで実行可能である。主ドメイン10が復旧するまで待機する(ステップS33)が、この間は、緊急処理用ソフトウェア31がサービスを提供し続ける。本システムは、マルチコアシステムであるので、主ドメイン10の復元処理と、緊急処理用ソフトウェア31を並行して実行可能であり、主ドメイン10を復元中であってもサービスの提供を続行可能である。
【0048】
主ドメイン10が復旧したら、主ドメイン状態参照部21が、主ドメイン状態記憶部13を参照して、その状態値を主ドメイン前状態記憶部23に保存する(ステップS34)。これにより、その後の検査処理が正しく行えるようになる。また、主ドメイン復元部26が、比較処理制御部24の次回の起動時期を決定する(ステップS35)。以上により、主ドメイン復元部26の処理は終了する。
【0049】
そして、緊急処理ドメイン30から主ドメイン10に切り替える(ステップS36)ことで、ユーザにサービスを提供するプログラムを本来のものに戻し、正常状態に復帰する。これ以降は、比較処理制御部24が、所定の間隔で実行されて、再び主ドメイン10を監視することになる。
【0050】
〈本実施形態の作用・効果〉
本実施形態のプログラム修復システムでは、各コアが並列に動作するマルチコアシステムを利用して、サービス機能を動作させる主ドメインと、主ドメインを監視する検査ドメインを並列に実行可能である。したがって、検査ドメインによる検査処理が、主ドメインの処理に対して与える悪影響を抑制することができる。
【0051】
また、この検査処理のために、主ドメイン側が追加で行わなければならない処理は、割り込み発生時の主ドメイン状態記憶部の更新処理だけである。この処理は、負荷の軽い処理であるので、主ドメインに与える悪影響を少なくすることができる。割り込みは頻繁に発生するものなので、状態値は随時更新されることになる。また、割り込みハンドラに状態更新処理を追加するだけでよいので、主ドメイン側のプログラム変更も最小限とすることができる。
【0052】
また、緊急処理用ソフトウェアを用意し、主ドメインのプログラム復元時にこの緊急処理プログラムを動作させることで、復元処理の間も最低限の機能の提供は継続することができる。
【0053】
このように、本実施形態のプログラム修復システムでは、通常時に余計な負荷を与えず、また、異常発生時であってもサービス機能の提供を継続できる。つまり、本来の処理に対する悪影響を最小限としつつも、障害が発生したプログラムを修復することが可能となる。
【0054】
(変形例)
上記の実施形態では、主ドメインで状態値を更新・格納しておき、復元ドメインがこの値の変化を監視することで、主ドメインが正常に動作しているか否かを判断していた。しかしながら、主ドメインが正常に動作しているか否かの検査は、このような方法に限られるものではない。例えば、検査ドメインは、主ドメイン内のプログラムの正しいハッシュ値を記憶しておき、検査の際にはプログラムのハッシュ値を求めて記憶しておいたものと一致するか否かを判断してもよい。この方法によれば、主ドメイン内のプログラムの改ざんを検出することが可能である。なお、このように、プログラムの改ざんも「障害」に該当する。
【0055】
また、複数のドメインを提供するための仕組みは、図1で説明したようにモニターソフトウェアによってドメインを区切る方法に限られるものではない。例えば、図6に示すように、各コアに固有のRAM領域を割り当て、その上でそれぞれがOSを稼働する。そして、チップとバスとの間に設けたフィルタによって、あるコアからの別のコアに割り当てられたRAM領域へのアクセスを禁止することでドメインの分離が実現できる。さらに、あるコアから他のコアに対してアクセスを許可するようにしておけば、安全ドメインと非安全ドメインとの区別を設けることができる。
【0056】
また、図7に示すように、マルチコアシステム上でホストOSを実行、その中で仮想マシン環境(プログラム)を実現し、仮想マシン環境上でゲストOSを実行することで、ドメインを区切ってもよい。各ゲストOSは、仮想的に独立した実行環境である。そして、ゲストOSからはホストOSに対してアクセスができないものの、ホストOSはゲストOSに対してアクセスすることができる。よって、ホストOSが安全ドメインで、ゲストOSが非安全ドメインとすることができる。
【図面の簡単な説明】
【0057】
【図1】安全ドメインと非安全ドメインを説明する図である。
【図2】本実施形態に係るプログラム修復システムの機能ブロック図を示す図である。
【図3】主ドメインによる処理の流れを示すフローチャートである。
【図4】検査ドメインによる検査処理の流れを示すフローチャートである。
【図5】検査ドメインによる復元処理および緊急処理ドメインによる緊急処理の流れを示すフローチャートである。
【図6】安全ドメインと非安全ドメインを実現する別の例を示す図である。
【図7】安全ドメインと非安全ドメインを実現する別の例を示す図である。
【符号の説明】
【0058】
10 主ドメイン
11 割り込み処理部
12 主ドメイン状態変更部
13 主ドメイン状態記憶部
20 検査ドメイン
21 主ドメイン状態参照部
22 主ドメイン状態比較部
23 主ドメイン前状態記憶部
24 比較処理制御部
25 緊急状態制御部
26 主ドメイン復元部
30 緊急処理ドメイン
31 緊急処理用ソフトウェア

【特許請求の範囲】
【請求項1】
少なくとも2つのドメインを提供するマルチコアシステムにおいて、所定のプログラムを実行する主ドメインに障害が発生した場合に、当該プログラムを修復するプログラム修復システムであって、
主ドメインとは異なる1または複数のサブドメイン内に、
主ドメインの状態を検査する検査手段と、
主ドメインに障害が発生した場合に前記プログラムを復元する復元手段と、
主ドメインに障害が発生した場合に前記プログラムの代替処理を実行する緊急処理手段と、
を有することを特徴とするプログラム修復システム。
【請求項2】
主ドメインは、前記サブドメインにアクセス不可能であり、
前記サブドメインは、信頼されたプログラムのみを実行可能であり、かつ、主ドメインにアクセス可能である、
ことを特徴とする請求項1に記載のプログラム修復システム。
【請求項3】
通常時は、前記検査手段と前記プログラムとが並列に実行され、
プログラム復元時は、前記復元手段と前記緊急処理手段とが並列に実行される、
ことを特徴とする請求項1または2に記載のプログラム修復システム。
【請求項4】
主ドメインの状態を記憶する状態記憶手段と、
前記状態記憶手段を更新する状態変更手段と、
を主ドメイン内に有し、
前記検査手段は、前記状態記憶手段を参照して主ドメインの状態を検査する
ことを特徴とする請求項1〜3のいずれか1項に記載のプログラム修復システム。
【請求項5】
前記状態変更手段は、主ドメイン内で割り込み処理が発生するタイミングで、前記状態記憶手段を更新する
ことを特徴とする請求項4に記載のプログラム修復システム。
【請求項6】
少なくとも2つのドメインを提供するマルチコアシステムにおいて、所定のプログラムを実行する主ドメインに障害が発生した場合に、当該プログラムを修復するプログラム修復方法であって、
主ドメインとは異なる1または複数のサブドメイン内において、
主ドメインの状態を検査する工程と、
主ドメインに障害が発生した場合に前記プログラムを復元する工程と、
主ドメインに障害が発生した場合に前記プログラムの代替処理を実行する工程と、
を実行することを特徴とするプログラム修復方法。
【請求項7】
主ドメインは、前記サブドメインにアクセス不可能であり、
前記サブドメインは、信頼されたプログラムのみを実行可能であり、かつ、主ドメインにアクセス可能である、
ことを特徴とする請求項6に記載のプログラム修復方法。
【請求項8】
通常時は、前記検査する工程と前記プログラムとを並列に実行し、
プログラム復元時は、前記復元する工程と前記代替処理を行う工程とを並列に実行する
ことを特徴とする請求項6または7に記載のプログラム修復方法。
【請求項9】
主ドメイン内で、主ドメインの状態を記憶する状態記憶手段を更新する工程を実行し、
前記検査する工程では、前記状態記憶手段を参照して主ドメインの状態を検査する
ことを特徴とする請求項6〜8のいずれか1項に記載のプログラム修復方法。
【請求項10】
前記状態記憶手段を更新する工程は、主ドメイン内で割り込み処理が発生するタイミングで行われる
ことを特徴とする請求項9に記載のプログラム修復方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2010−20621(P2010−20621A)
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2008−181730(P2008−181730)
【出願日】平成20年7月11日(2008.7.11)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】