プログラム実行装置及び情報保管装置及び情報処理方法及びコンピュータプログラム
【課題】OS状態情報が破壊された場合にもOSが復元されるようにする。
【解決手段】クライアント装置100は、OS状態情報をサーバ装置200に送信し、サーバ装置200にOS状態情報を保管させ、OS機能103の実行が再開される再開タイミングに先立ち、サーバ装置200に送信されたOS状態情報をサーバ装置200から受信し、再開タイミングに、サーバ装置200から受信されたOS状態情報を用いてOS機能103の状態を復元することができるため、OS状態情報が破壊された場合にも確実にOS機能103を復元することができる。
【解決手段】クライアント装置100は、OS状態情報をサーバ装置200に送信し、サーバ装置200にOS状態情報を保管させ、OS機能103の実行が再開される再開タイミングに先立ち、サーバ装置200に送信されたOS状態情報をサーバ装置200から受信し、再開タイミングに、サーバ装置200から受信されたOS状態情報を用いてOS機能103の状態を復元することができるため、OS状態情報が破壊された場合にも確実にOS機能103を復元することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行の中断と実行の再開とが繰り返されるプログラムの退避と復元に関する。
【背景技術】
【0002】
組み込み機器では、放射線や宇宙線などによりメモリセルに蓄えられた電荷に異常を来すSingle Event Upsetと呼ばれる問題がある。
このSingle Event UpsetによりソフトウェアがCPU(Central Processing Unit)例外となり動作継続不能に陥る可能性もある。
特に、人工衛星などメンテナンスが困難な組み込み機器に搭載する計算機では、この問題を回避するために、人工衛星に搭載された姿勢制御計算機など、信頼性が必要な機能では、周期的にプロセッサをリセットさせることで初期化を行い、異常処理後にすぐに正常処理に戻す処理を行っている。
また、従来ではこのように周期リセットを必要とする機能と周期リセットを必要としないデータ処理などの機能は、それぞれの機能を異なるプロセッサに分けて実現している。
【0003】
また、計算機の低価格化および小型化を目的とした場合、それぞれの機能を同一プロセッサで動作することが考えられる。
たとえば、その実現方法として、図8のように基本的には周期Tでプロセッサをリセットすることで、周期リセットを必要とする高信頼ソフトウェア機能を周期的にリセットする。
一方で、周期リセットを必要としないOS(Operating System)機能の動作を継続させるために、リセット信号の前にプレリセットNMI(マスク不可能割込:Non−Maskable Interrupt 以下、NMI)を発生させ、その時点でのプログラムカウンタ値や各種レジスタ値(OS状態情報と呼ぶ)の保存を行い、リセット後にOS状態情報を復元する手法が考えられる。
【0004】
特許文献1では、周期TでCPUをリセットするシステムにおいて、「処理中断要求信号」と呼ばれる、周期の終了前に終了間近であることを示す信号を発生させ、これによって処理中断プログラムを起動し、プログラムカウンタ、各種レジスタ値を退避し、リセット後にそれを取り出して再開する手法が記載されている。
【0005】
特許文献2では、汎用ネットワークと複数の計算機で構築された多重系システムにおいて、リセットの前に退避動作を起動するためにマスク不可能割込み(Non−Maskable Interrupt:以下、NMI)を発生させ、NMI時点におけるメインメモリの内容をディスク装置に保存する手法が記載されている。
【0006】
特許文献3では、特性測定データを地上局の解析装置に伝送し、地上局で解析した後、性能が劣化した部位に応じて各制御回路のパラメータを再設定するパラメータ情報を衛星に伝送する手法が記載されている。
【0007】
特許文献4では、データ送信装置の電子計算機に格納され実行される搭載プログラムの各処理毎に処理正常終了レジスタを設け、処理が正常に終了する度にレジスタ値を設定し直すようにし、地上局でレジスタ値をモニタすることで搭載プログラムの動作を確認できるようにしており、搭載プログラムの各処理前に処理正常終了レジスタの値をチェックし異常終了する処理の実行を回避するようにする手法が記載されている。
【0008】
特許文献5では、人工衛星の推進装置での推薬弁と遮断弁との間に圧力センサを設置し、推薬弁開故障に対する圧力低下を検知することにより衛星単体で推薬弁開故障への判定・対処を行う手法が記載されている。
【0009】
特許文献6では、データファイル名、該データファイルのディレクトリ名及びファイルバージョン識別情報を連結した電子媒体管理ファイルを地上側で生成して、この電子媒体管理ファイルを宇宙航行体に転送し、この電子媒体管理ファイルを受信した宇宙航行体側で分解処理して、そのデータファイル名、ディレクトリ名及びファイルバージョン識別情報が電子媒体内に格納される情報と比較してデータファイルの追加/削除/更新を行う手法について記載されている。
【0010】
特許文献7では、衛星に搭載されたテレメトリパラメータの遠隔制御調整を使用して衛星の制御を行う衛星コマンドシステム及び方法により、プロセッサユニットのコマンド経路に影響を及ぼすハードウェア障害の存在を回避する方法について記載されている。
【0011】
特許文献8では、低軌道周回衛星のように地上局の支援を常に受けられない人工衛星の統合制御システムにおいて、一部機器の異常が人工衛星全体の損傷を誘発することがないシステムを実現するため、冗長系を作る複数のコマンド受信インターフェースにおいてコマンドの送信数と受信数の比較結果により冗長系に切り替える手法について記載されている。
【0012】
特許文献9では、衛星内機器の状態をテレメトリ収集装置を介してモニタし、所定の条件に合致すると、新たなミッションシーケンスとして割り込ませることで、コマンドの実行時刻を動的に変更可能な自律コマンド運用処理方法について記載されている。
【0013】
特許文献10では、衛星のテレメトリ情報とその代表値を送出し、衛星シミュレータの入力として与え、そのシミュレーション結果とテレメトリ代表値を比較することで衛星電子機器の異常を検出する方法が記載されている。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開平6−230988号公報
【特許文献2】特開2007−58708号公報
【特許文献3】特開2002−236515号公報
【特許文献4】特開2002−135192号公報
【特許文献5】特開2000−255499号公報
【特許文献6】特開2001−265637号公報
【特許文献7】特開2001−322599号公報
【特許文献8】特開2002−205697号公報
【特許文献9】特開2003−226298号公報
【特許文献10】特開2008−7007号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
例えば、図9のようにOS機能が動作している途中でCPUレジスタなど、OS状態情報が宇宙線などの外的要因により破壊されたと仮定する。
このとき、CPU例外が発生、あるいは、CPU例外が発生しないとしても、壊れたOS状態情報を退避し、再び復元するため、いつかCPU例外が発生してしまう可能性がある。
特許文献1〜10では、OS状態情報が破壊された場合には、CPU例外発生直後に実行される例外ハンドラに処理が遷移し、処理の継続が不能となるという課題がある。
【0016】
この発明は、上記のような課題を解決することを主な目的の一つとしており、状態情報が破壊された場合にもプログラムが再開されるようにすることを主な目的とする。
【課題を解決するための手段】
【0017】
本発明に係るプログラム実行装置は、
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うプログラム実行装置であって、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成部と、
前記状態情報生成部により生成された状態情報を退避領域に退避させる退避実行部と、
前記状態情報生成部により生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信部と、
前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信部により前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信部と、
前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信部により前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元部とを有することを特徴とする。
【発明の効果】
【0018】
本発明によれば、状態情報を情報保管装置に送信し、情報保管装置に状態情報を保管させ、プログラムの実行が再開される再開タイミングに先立ち、情報保管装置に送信された状態情報を情報保管装置から受信し、再開タイミングに、情報保管装置から受信された状態情報を用いてプログラムの状態を復元することができるため、状態情報が破壊された場合にも確実にプログラムを再開することができる。
【図面の簡単な説明】
【0019】
【図1】実施の形態1のシステム構成例を示す図。
【図2】実施の形態1のクライアント装置のハードウェア構成例を示す図。
【図3】実施の形態1のサーバ装置のハードウェア構成例を示す図。
【図4】実施の形態1において、クライアント装置からサーバ装置に送信するデータのフォーマット例を示す図。
【図5】実施の形態1において、サーバ装置からクライアント装置に送信するデータのフォーマット例を示す図。
【図6】実施の形態1において、クライアント装置により退避したOS状態情報をサーバ装置に送信するまでの流れを示すシーケンス図。
【図7】実施の形態1において、クライアント装置においてCPU例外が発生した場合のOS動作の継続のための復元方法を示すシーケンス図。
【図8】従来システムにおける、OS動作継続を実現するためのOS状態の保存と復元方法を示す図。
【図9】従来システムにおける、OS動作継続を実現するためのOS状態の保存と復元方法において、OS状態情報が破壊された場合の処理継続不可を示す図。
【発明を実施するための形態】
【0020】
実施の形態1.
本実施の形態では、周期的にリセットさせて動作するソフトウェアと、同リセット動作を必要としないソフトウェアが同一プロセッサ上で動作する計算機において、CPU例外発生後もソフトウェア動作を継続させるための、レジスタ退避・復元方法を説明する。
【0021】
前述したように、外因による計算機、ソフトウェアの誤動作を回避するために、特に信頼性が必要な機能では、周期的にプロセッサをリセットして動作させることがある。
また、周期リセットを必要とする高信頼ソフトウェア機能と、周期リセットを必要としないOS機能を同一プロセッサで動作させる場合、OS機能に対して、その時点でのプログラムカウンタ値や各種レジスタ値(OS状態情報)を退避し復元することで、動作継続性を確保することができる。
ただし、何らかの外的要因でOS状態情報が破壊され、その状態のまま退避、あるいは、退避しているOS状態情報が破壊され、その状態で復元を行う場合、例えばレジスタ値不正によりCPU例外が発生しOS機能の処理が継続できなくなる可能性がある。
【0022】
本実施の形態では、このような課題を解決するために、任意の時点でのOS状態情報を退避し、そのOS状態情報をサーバ装置に送信するクライアント装置と、そのクライアント装置に対して、退避したOS状態情報を送信し、復元命令を送信するサーバ装置と、で構成することで、クライアント装置側においてCPU例外が発生した場合においても、OS機能の動作を継続させるための、レジスタ退避・復元方式を提供する。
つまり、本実施の形態では、周期的リセットを必要とする高信頼ソフトウェア機能と、周期リセットを必要としないOS機能を同一プロセッサで動作するクライアント装置において、プレリセットNMIなどのタイミングで退避したOS状態情報をサーバ装置に送信する。
そして、クライアント装置がCPU例外で動作継続不能に陥った場合に、サーバ装置にて、蓄積したOS状態情報から任意のOS状態情報を抽出し、クライアント装置に送信する。
次にクライアントは受信したOS状態情報を使用して復元することで、OS機能の動作継続性を確保する。
【0023】
図1は、実施の形態1におけるシステム構成例を示す。
本実施の形態に係るシステム構成は、クライアント装置100とサーバ装置200から構成される。
また、クライアント装置100とサーバ装置200との間は、通信路300により接続される。
通信路300は、有線通信路であっても無線通信路であってもよい。
本実施の形態において、クライアント装置100はプログラム実行装置の例であり、サーバ装置200は情報保管装置の例である。
【0024】
クライアント装置100は、周期リセットを必要とする機能と、周期リセットを必要としない機能を共存させた計算機である。
【0025】
101は周期リセットを必要とする機能で、高信頼ソフトウェア102で構成される。
【0026】
103は周期リセットを必要としない機能で、処理を継続させる必要がある機能である。
これはアプリケーション104とサーバ装置200にデータを送信するためのデータ送信手段105と、サーバ装置200からデータを受信するためのデータ受信手段106と、オペレーティングシステム107(以下、OS107ともいう)から構成されるOS機能である。
OS107は、例えば、リアルタイムOSである。
【0027】
108はブートローダである。
ブートローダ108には、S/W(ソフトウェア)起動手段109と、受信OS状態情報復元手段110と、自OS状態情報退避・復元手段111が含まれる。
S/W起動手段109は、高信頼ソフトウェア102とオペレーティングシステム107を起動するために用いられる。
受信OS状態情報復元手段110は、サーバ装置200から受信したOS状態情報を復元するために用いられる。
自OS状態情報退避・復元手段111は、オペレーティングシステム107の動作を継続するためにプレリセットNMIにてOS状態情報を退避し、リセット後高信頼ソフトウェアの動作終了後にそのOS状態情報を復元することでOS107の動作を継続する。
なお、OS状態情報は、前述したように、プログラムカウンタ値や各種レジスタ値である。
【0028】
受信OS状態情報保存領域112は、サーバ装置200から受信したOS状態情報を保存するための保存領域である。
自OS状態情報保存領域113は、自OS状態情報退避・復元手段111のOS状態情報を保存するための保存領域である。
【0029】
図1のクライアント装置100の構成要素のうち、受信OS状態情報保存領域112及び自OS状態情報保存領域113以外は、ソフトウェアである。
【0030】
サーバ装置200は、クライアント装置100との間でデータの送受信を行う。
201はデータ送信手段で、クライアント装置100に対してデータを送信するための手段である。
202はデータ受信手段で、クライアント装置100から送信されたデータを受信するための手段である。
203はOS状態情報保存領域で、クライアント装置100から受信したOS状態情報を保存するための領域で、複数のOS状態情報を蓄積することを目的としている。
204はOS状態情報解析手段で、OS状態情報保存領域203から任意のOS状態情報を抽出するためのデータ解析手段である。
【0031】
図1のサーバ装置200の構成要素のうち、OS状態情報保存領域203以外は、ソフトウェアである。
【0032】
図2は、実施の形態1におけるクライアント装置100の最小限のハードウェアの構成例を示す。
なお、図2の構成は、あくまでもクライアント装置100のハードウェア構成の一例を示すものであり、クライアント装置100のハードウェア構成は図2に記載の構成に限らず、他の構成であってもよい。
【0033】
図2において、1001はCPUで、高信頼ソフトウェア102、OS機能103、および、ブートローダ108の実行および各種機器の制御を行うための中央演算装置である。
1002はリセット回路で、リセット信号を発生させる機能のほか、そのリセット信号を発生させる前にプレリセットと呼ぶNMIをブートローダ108に対して発生させる手段である。
1003はRAM(Random Access Memory)で、高信頼ソフトウェア102やOS機能103、ブートローダ108が動作する上で使用する変数、レジスタ値などのデータを保存する手段である。
1004はROM(Read Only Memory)で、上述のソフトウェアのプログラムコードおよび変数の初期値を格納するためのメモリ領域である。
1005は各種センサーで、クライアント装置100自身の状態及び外界の状態を監視するための装置で、カメラ、温度計、圧力計、レーダー装置などがそれに当たる。
1006はサーバ装置200と通信を行う通信装置である。
【0034】
CPU1001は、高信頼ソフトウェア102の実行及び周期リセットを行うとともに、OS107を含むOS機能103の実行の中断と、中断されたOS機能103の実行の再開とを繰り返す。
より具体的には、CPU1001は、ブートローダ108を実行して、OS機能103の実行が中断される中断タイミングにおけるOS機能103の状態が記述されるOS状態情報を生成し、OS状態情報を退避領域である自OS状態情報保存領域113に退避させる。
また、通信装置1006は、CPU1001の指示により、生成されたOS状態情報をサーバ装置200に送信し、サーバ装置200にOS状態情報を保管させる。
CPU1001は、OS機能103を正常に再開できる正常時には、ブートローダ108を実行して、OS機能103の実行が再開される再開タイミングに、自OS状態情報保存領域113に退避されたOS状態情報を用いて、中断タイミングにおけるOS機能103の状態を復元する。
一方、OS機能103を正常に再開できない非正常時には、CPU1001は、再開タイミングに先立ちサーバ装置200にOS状態情報の送信を要求し、サーバ装置200から送信されたOS状態情報を通信装置1006に受信させ、再開タイミングに、通信装置1006によりサーバ装置200から受信されたOS状態情報を用いて、中断タイミングにおけるOS機能103の状態を復元する。
このように、本実施の形態では、CPU1001は、状態情報生成部と退避実行部とプログラム復元部の例に相当する。
また、本実施の形態では、通信装置1006は、状態情報送信部と状態情報受信部の例に相当する。
また、CPU1001による動作が、状態情報生成ステップと退避実行ステップとプログラム復元ステップの例に相当する。
また、通信装置1006による動作が、状態情報送信ステップと状態情報受信ステップの例に相当する。
【0035】
図3は、実施の形態1におけるサーバ装置200の最小限のハードウェアの構成例を示す。
なお、図3の構成は、あくまでもサーバ装置200のハードウェア構成の一例を示すものであり、サーバ装置200のハードウェア構成は図3に記載の構成に限らず、他の構成であってもよい。
【0036】
図3において、2001はCPUで、内蔵S/W(ソフトウェア)を動作させるための中央演算装置である。
2002はサーバ管理者がCPUに命令を実行させるための入力装置で、マウスやキーボードなどである。
2003はサーバ管理者がCPUの状況を把握するための出力装置で、ディスプレイなどである。
2004はRAM(Random Access Memory)で、内蔵S/Wが動作する上で使用する変数、レジスタ値などのデータを保存する手段である。
2005はROM(Read Only Memory)で、上述のソフトウェアのプログラムコードおよび変数の初期値を格納するためのメモリ領域である。
2006は大容量記憶装置で、ハードディスクなどで構成されるが、クライアント装置100から受信したOS状態情報を複数蓄積するための保存領域である。
2007はクライアント装置100と通信を行う通信装置である。
【0037】
通信装置2007は、CPU2001の制御により、クライアント装置100のOS状態情報を、クライアント装置100から受信する。
そして、大容量記憶装置2006は、クライアント装置100から受信したOS状態情報を記憶する。
また、通信装置2007は、CPU2001の制御により、クライアント装置100におけるOS機能103の再開タイミングに先立ち、クライアント装置100から、OS状態情報の送信要求を受信する。
CPU2001は、OS状態情報の送信要求が受信された場合に、OS状態情報解析手段204を実行して、OS状態情報を大容量記憶装置2006から抽出する。
そして、通信装置2007は、CPU2001の制御により、抽出されたOS状態情報をクライアント装置100に送信する。
このように、本実施の形態では、CPU2001は状態情報抽出部の例に相当し、大容量記憶装置2006は状態情報記憶部の例に相当し、通信装置2007は状態情報受信部と送信要求受信部と状態情報送信部の例に相当する。
また、CPU2001による動作が状態情報抽出ステップの例に相当し、大容量記憶装置2006による動作が状態情報記憶ステップの例に相当し、通信装置2007による動作が状態情報受信ステップと送信要求受信ステップと状態情報送信ステップの例に相当する。
【0038】
図4に、図6のS8及び図7のT6でクライアント装置100からサーバ装置200に送信するデータのデータフォーマット例を示す。
【0039】
図4において、例外発生有無401は、クライアント装置100においてCPU例外が発生しているか否かを判断するためのフラグ情報である。
分割OS状態情報403は、自OS状態情報保存領域113に保存されたOS状態情報そのもの、あるいは、1回のデータ送信で送信可能なサイズに分割されたOS状態情報である。
そして、分割番号402は、その分割されたOS状態情報を復元するため、分割された情報の何番目かを示す通し番号である。
センサー情報 観測データ404は、各種センサー1005から得られた観測データを格納する領域である。
【0040】
図5に、図7のT7でサーバ装置200からクライアント装置100に送信するデータのデータフォーマット例を示す。
【0041】
図5において、コマンド識別番号501は、そのコマンドの種別を識別するためのID番号である。
分割OS状態情報503は、OS状態情報解析手段204により抽出したOS状態情報そのもの、あるいは、1回のデータ送信で送信可能なサイズに分割されたOS状態情報である。
そして、分割番号502はその分割されたOS状態情報を復元するため、分割された情報の何番目かを示す通し番号である。
【0042】
実施の形態1のOS状態情報送信の処理シーケンスを図6を用いて説明する。
ここで前提として、高信頼ソフトウェア102、OS機能103が同一CPU1001上で動作しているものとする。
また、リセット回路1002は一定周期毎にリセット信号をブートローダ108に発信するが、その前にプレリセット信号を発信するものとする。
【0043】
まず、リセット回路1002はプレリセット信号をブートローダ108に送信する(S1)。
次に、ブートローダ108は自OS状態情報退避・復元手段111により現在のCPU1001のレジスタやRAM1003に格納したデータの一部をOS状態情報として抽出し、自OS状態情報保存領域113に保存する(S2)。
次に、一定の周期毎に設定されたリセットタイミングにてリセット回路1002はCPU1001をリセットする(S3)。
そして、ブートローダ108のS/W起動手段109が高信頼ソフトウェア102を起動する(S4)。
次に、高信頼ソフトウェア102の動作終了後、ブートローダ108のS/W起動手段109が、S2において自OS状態情報保存領域113に保存したOS状態情報を自OS状態情報保存領域113からCPU1001およびRAM1003に復元することで(S5)、OS機能103を起動する(S6)。
起動されたOS機能103は前状態からの継続処理を行う。
例えば、OS107で動作するアプリケーション104は、中断をしていた各種センサー1005による外界の環境測定の実施を再開する(S7)。
そして、アプリケーション104は、データ送信手段105によりその測定結果をサーバ装置200に送信する。
ここで、OS107は、自OS状態情報保存領域113からOS状態情報を取り出し、取り出したOS状態情報を測定結果と同時に送信する。
そして、サーバ装置200は、そのOS状態情報をOS状態情報保存領域203に保存・蓄積する(S8)。
なお、このとき、OS状態情報が1回の送信サイズを超える場合は複数周期で複数回に送信することも可能である。
そして、定期的にリセット回路1002より送信されるプレリセット信号により、ブートローダ108がS1の時と同様の処理を行い、OS状態情報を退避する(S10)。
【0044】
次に、CPU例外が発生した場合におけるOS機能103の復帰シーケンスを図7を用いて説明する。
【0045】
まず、クライアント装置100において、CPU例外が発生したと仮定する(T1)。
このときOS機能103はCPU例外ハンドラによりブートローダ108に対してCPU例外通知を送信する(T2)。
これによりブートローダ108はCPU例外が発生し、OS機能103が継続動作をできないことを判断する。
次に、リセット回路1002より周期的に送信されるリセット信号によりCPU1001をリセットする(T3)。
そして、ブートローダ108のS/W起動手段109により高信頼ソフトウェア102が起動され、所定時間の経過後に、高信頼ソフトウェア102の処理が終了する(T4)。
次に、ブートローダ108のS/W起動手段109はCPU例外が発生したと判断したため、OS機能103の処理の初期化を実施する(T5)。
これにより、クライアント装置100とサーバ装置200との間のデータ送信手段105とデータ受信手段106の動作を確保する。
次に、OS機能103はデータ送信手段105により、CPU例外が発生したことをサーバ装置200に通知する例外発生通知を送信する。
この例外発生通知は、サーバ装置200にOS状態情報の送信を要求する役割を有しており、送信要求の例に相当する。
サーバ装置200は、データ受信手段202により例外発生通知を受信する(T6)。
次に、サーバ装置200では管理者が例外発生通知を出力装置2003より確認し、入力装置2002と、OS状態情報解析手段204を使用し、OS状態情報保存領域203に格納されたOS状態情報を抽出する。
そして、データ送信手段201によりOS状態情報をクライアント装置100に送信する(T7)。
クライアント装置100はデータ受信手段106によりOS状態情報を受信し、受信したOS状態情報を受信OS状態情報保存領域112に保存する。
受信OS状態情報保存領域112はOS状態情報の保存後、OS状態情報受信完了通知をブートローダ108に通知する(T8)。
次に、リセット回路1002より周期的に送信されるリセット信号によりCPU1001がリセットされ(T9)、ブートローダ108のS/W起動手段109により再び高信頼ソフトウェア102が起動される(T10)。
次に、ブートローダ108のS/W起動手段109が、受信OS状態情報保存領域112に保存されたOS状態情報をCPU1001およびRAM1003に復元することで(T11)、OS機能103を起動する(T12)。
【0046】
以上の流れにより、サーバ装置200に格納されたOS状態情報から管理者が任意のOS状態情報を選択し、クライアント装置100に送信することで、クライアント装置100にCPU例外が発生したとしても、OS機能103の動作を継続することができる。
【0047】
なお、図6のシーケンス図では、S8において測定結果の送信とともに、S2で生成されたOS状態情報を送信することとしているが、これに代えて、例えば、測定結果の送信タイミングをS10の後とすることで、S10で生成されたOS状態情報を測定結果とともに送信するようにしてもよい。
【0048】
以上、本実施の形態では、
クライアント装置のOS状態情報をクライアント装置自身だけでなく、サーバ装置に退避し、蓄積し、OS状態情報が破壊されCPU例外が発生した場合に、サーバ装置に蓄積されたOS状態情報をクライアント装置に送信し、復元することで、退避したOS状態情報の時点に処理を戻しクライアント装置のOS機能の動作継続性を確保することを説明した。
【0049】
より具体的には、
周期的にリセットを行う、リセット回路と、
周期リセットを必要とする、高信頼ソフトウェアと、
周期リセットを必要としない、リアルタイムOS(以下、RTOS)と、
RTOS上で動作するアプリケーションと、
サーバ装置にデータを送信する、データ送信手段と、
サーバ装置からデータを受信する、データ受信手段と、
RTOSや高信頼ソフトウェアを起動する、S/W起動手段と、
受信OS状態情報復元手段と自OS状態情報退避・復元手段を備える、ブートローダと、
受信OS状態情報を保存するための、受信OS状態情報保存領域と、
自OS状態情報を保存するための、自OS状態情報保存領域と、
から構成されるクライアント装置と、
クライアント装置にデータを送信する、データ送信手段と、
クライアント装置からデータを受信する、データ受信手段と、
蓄積したOS状態情報から復元するためのOS状態情報を抽出するための、OS状態解析手段と、
クライアント装置から受信したOS状態情報を保存するための、OS状態情報保存領域と、
から構成されるサーバ装置と、
から構成されるシステムを説明した。
【符号の説明】
【0050】
100 クライアント装置、102 高信頼ソフトウェア、103 OS機能、104 アプリケーション、105 データ送信手段、106 データ受信手段、107 オペレーティングシステム、108 ブートローダ、109 S/W起動手段、110 受信OS状態情報復元手段、111 自OS状態情報退避・復元手段、112 受信OS状態情報保存領域、113 自OS状態情報保存領域、200 サーバ装置、201 データ送信手段、202 データ受信手段、203 OS状態情報保存領域、204 OS状態情報解析手段、1001 CPU、1002 リセット回路、1003 RAM、1004 ROM、1005 各種センサー、1006 通信装置、2001 CPU、2002 入力装置、2003 出力装置、2004 RAM、2005 ROM、2006 大容量記憶装置、2007 通信装置。
【技術分野】
【0001】
本発明は、実行の中断と実行の再開とが繰り返されるプログラムの退避と復元に関する。
【背景技術】
【0002】
組み込み機器では、放射線や宇宙線などによりメモリセルに蓄えられた電荷に異常を来すSingle Event Upsetと呼ばれる問題がある。
このSingle Event UpsetによりソフトウェアがCPU(Central Processing Unit)例外となり動作継続不能に陥る可能性もある。
特に、人工衛星などメンテナンスが困難な組み込み機器に搭載する計算機では、この問題を回避するために、人工衛星に搭載された姿勢制御計算機など、信頼性が必要な機能では、周期的にプロセッサをリセットさせることで初期化を行い、異常処理後にすぐに正常処理に戻す処理を行っている。
また、従来ではこのように周期リセットを必要とする機能と周期リセットを必要としないデータ処理などの機能は、それぞれの機能を異なるプロセッサに分けて実現している。
【0003】
また、計算機の低価格化および小型化を目的とした場合、それぞれの機能を同一プロセッサで動作することが考えられる。
たとえば、その実現方法として、図8のように基本的には周期Tでプロセッサをリセットすることで、周期リセットを必要とする高信頼ソフトウェア機能を周期的にリセットする。
一方で、周期リセットを必要としないOS(Operating System)機能の動作を継続させるために、リセット信号の前にプレリセットNMI(マスク不可能割込:Non−Maskable Interrupt 以下、NMI)を発生させ、その時点でのプログラムカウンタ値や各種レジスタ値(OS状態情報と呼ぶ)の保存を行い、リセット後にOS状態情報を復元する手法が考えられる。
【0004】
特許文献1では、周期TでCPUをリセットするシステムにおいて、「処理中断要求信号」と呼ばれる、周期の終了前に終了間近であることを示す信号を発生させ、これによって処理中断プログラムを起動し、プログラムカウンタ、各種レジスタ値を退避し、リセット後にそれを取り出して再開する手法が記載されている。
【0005】
特許文献2では、汎用ネットワークと複数の計算機で構築された多重系システムにおいて、リセットの前に退避動作を起動するためにマスク不可能割込み(Non−Maskable Interrupt:以下、NMI)を発生させ、NMI時点におけるメインメモリの内容をディスク装置に保存する手法が記載されている。
【0006】
特許文献3では、特性測定データを地上局の解析装置に伝送し、地上局で解析した後、性能が劣化した部位に応じて各制御回路のパラメータを再設定するパラメータ情報を衛星に伝送する手法が記載されている。
【0007】
特許文献4では、データ送信装置の電子計算機に格納され実行される搭載プログラムの各処理毎に処理正常終了レジスタを設け、処理が正常に終了する度にレジスタ値を設定し直すようにし、地上局でレジスタ値をモニタすることで搭載プログラムの動作を確認できるようにしており、搭載プログラムの各処理前に処理正常終了レジスタの値をチェックし異常終了する処理の実行を回避するようにする手法が記載されている。
【0008】
特許文献5では、人工衛星の推進装置での推薬弁と遮断弁との間に圧力センサを設置し、推薬弁開故障に対する圧力低下を検知することにより衛星単体で推薬弁開故障への判定・対処を行う手法が記載されている。
【0009】
特許文献6では、データファイル名、該データファイルのディレクトリ名及びファイルバージョン識別情報を連結した電子媒体管理ファイルを地上側で生成して、この電子媒体管理ファイルを宇宙航行体に転送し、この電子媒体管理ファイルを受信した宇宙航行体側で分解処理して、そのデータファイル名、ディレクトリ名及びファイルバージョン識別情報が電子媒体内に格納される情報と比較してデータファイルの追加/削除/更新を行う手法について記載されている。
【0010】
特許文献7では、衛星に搭載されたテレメトリパラメータの遠隔制御調整を使用して衛星の制御を行う衛星コマンドシステム及び方法により、プロセッサユニットのコマンド経路に影響を及ぼすハードウェア障害の存在を回避する方法について記載されている。
【0011】
特許文献8では、低軌道周回衛星のように地上局の支援を常に受けられない人工衛星の統合制御システムにおいて、一部機器の異常が人工衛星全体の損傷を誘発することがないシステムを実現するため、冗長系を作る複数のコマンド受信インターフェースにおいてコマンドの送信数と受信数の比較結果により冗長系に切り替える手法について記載されている。
【0012】
特許文献9では、衛星内機器の状態をテレメトリ収集装置を介してモニタし、所定の条件に合致すると、新たなミッションシーケンスとして割り込ませることで、コマンドの実行時刻を動的に変更可能な自律コマンド運用処理方法について記載されている。
【0013】
特許文献10では、衛星のテレメトリ情報とその代表値を送出し、衛星シミュレータの入力として与え、そのシミュレーション結果とテレメトリ代表値を比較することで衛星電子機器の異常を検出する方法が記載されている。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開平6−230988号公報
【特許文献2】特開2007−58708号公報
【特許文献3】特開2002−236515号公報
【特許文献4】特開2002−135192号公報
【特許文献5】特開2000−255499号公報
【特許文献6】特開2001−265637号公報
【特許文献7】特開2001−322599号公報
【特許文献8】特開2002−205697号公報
【特許文献9】特開2003−226298号公報
【特許文献10】特開2008−7007号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
例えば、図9のようにOS機能が動作している途中でCPUレジスタなど、OS状態情報が宇宙線などの外的要因により破壊されたと仮定する。
このとき、CPU例外が発生、あるいは、CPU例外が発生しないとしても、壊れたOS状態情報を退避し、再び復元するため、いつかCPU例外が発生してしまう可能性がある。
特許文献1〜10では、OS状態情報が破壊された場合には、CPU例外発生直後に実行される例外ハンドラに処理が遷移し、処理の継続が不能となるという課題がある。
【0016】
この発明は、上記のような課題を解決することを主な目的の一つとしており、状態情報が破壊された場合にもプログラムが再開されるようにすることを主な目的とする。
【課題を解決するための手段】
【0017】
本発明に係るプログラム実行装置は、
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うプログラム実行装置であって、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成部と、
前記状態情報生成部により生成された状態情報を退避領域に退避させる退避実行部と、
前記状態情報生成部により生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信部と、
前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信部により前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信部と、
前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信部により前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元部とを有することを特徴とする。
【発明の効果】
【0018】
本発明によれば、状態情報を情報保管装置に送信し、情報保管装置に状態情報を保管させ、プログラムの実行が再開される再開タイミングに先立ち、情報保管装置に送信された状態情報を情報保管装置から受信し、再開タイミングに、情報保管装置から受信された状態情報を用いてプログラムの状態を復元することができるため、状態情報が破壊された場合にも確実にプログラムを再開することができる。
【図面の簡単な説明】
【0019】
【図1】実施の形態1のシステム構成例を示す図。
【図2】実施の形態1のクライアント装置のハードウェア構成例を示す図。
【図3】実施の形態1のサーバ装置のハードウェア構成例を示す図。
【図4】実施の形態1において、クライアント装置からサーバ装置に送信するデータのフォーマット例を示す図。
【図5】実施の形態1において、サーバ装置からクライアント装置に送信するデータのフォーマット例を示す図。
【図6】実施の形態1において、クライアント装置により退避したOS状態情報をサーバ装置に送信するまでの流れを示すシーケンス図。
【図7】実施の形態1において、クライアント装置においてCPU例外が発生した場合のOS動作の継続のための復元方法を示すシーケンス図。
【図8】従来システムにおける、OS動作継続を実現するためのOS状態の保存と復元方法を示す図。
【図9】従来システムにおける、OS動作継続を実現するためのOS状態の保存と復元方法において、OS状態情報が破壊された場合の処理継続不可を示す図。
【発明を実施するための形態】
【0020】
実施の形態1.
本実施の形態では、周期的にリセットさせて動作するソフトウェアと、同リセット動作を必要としないソフトウェアが同一プロセッサ上で動作する計算機において、CPU例外発生後もソフトウェア動作を継続させるための、レジスタ退避・復元方法を説明する。
【0021】
前述したように、外因による計算機、ソフトウェアの誤動作を回避するために、特に信頼性が必要な機能では、周期的にプロセッサをリセットして動作させることがある。
また、周期リセットを必要とする高信頼ソフトウェア機能と、周期リセットを必要としないOS機能を同一プロセッサで動作させる場合、OS機能に対して、その時点でのプログラムカウンタ値や各種レジスタ値(OS状態情報)を退避し復元することで、動作継続性を確保することができる。
ただし、何らかの外的要因でOS状態情報が破壊され、その状態のまま退避、あるいは、退避しているOS状態情報が破壊され、その状態で復元を行う場合、例えばレジスタ値不正によりCPU例外が発生しOS機能の処理が継続できなくなる可能性がある。
【0022】
本実施の形態では、このような課題を解決するために、任意の時点でのOS状態情報を退避し、そのOS状態情報をサーバ装置に送信するクライアント装置と、そのクライアント装置に対して、退避したOS状態情報を送信し、復元命令を送信するサーバ装置と、で構成することで、クライアント装置側においてCPU例外が発生した場合においても、OS機能の動作を継続させるための、レジスタ退避・復元方式を提供する。
つまり、本実施の形態では、周期的リセットを必要とする高信頼ソフトウェア機能と、周期リセットを必要としないOS機能を同一プロセッサで動作するクライアント装置において、プレリセットNMIなどのタイミングで退避したOS状態情報をサーバ装置に送信する。
そして、クライアント装置がCPU例外で動作継続不能に陥った場合に、サーバ装置にて、蓄積したOS状態情報から任意のOS状態情報を抽出し、クライアント装置に送信する。
次にクライアントは受信したOS状態情報を使用して復元することで、OS機能の動作継続性を確保する。
【0023】
図1は、実施の形態1におけるシステム構成例を示す。
本実施の形態に係るシステム構成は、クライアント装置100とサーバ装置200から構成される。
また、クライアント装置100とサーバ装置200との間は、通信路300により接続される。
通信路300は、有線通信路であっても無線通信路であってもよい。
本実施の形態において、クライアント装置100はプログラム実行装置の例であり、サーバ装置200は情報保管装置の例である。
【0024】
クライアント装置100は、周期リセットを必要とする機能と、周期リセットを必要としない機能を共存させた計算機である。
【0025】
101は周期リセットを必要とする機能で、高信頼ソフトウェア102で構成される。
【0026】
103は周期リセットを必要としない機能で、処理を継続させる必要がある機能である。
これはアプリケーション104とサーバ装置200にデータを送信するためのデータ送信手段105と、サーバ装置200からデータを受信するためのデータ受信手段106と、オペレーティングシステム107(以下、OS107ともいう)から構成されるOS機能である。
OS107は、例えば、リアルタイムOSである。
【0027】
108はブートローダである。
ブートローダ108には、S/W(ソフトウェア)起動手段109と、受信OS状態情報復元手段110と、自OS状態情報退避・復元手段111が含まれる。
S/W起動手段109は、高信頼ソフトウェア102とオペレーティングシステム107を起動するために用いられる。
受信OS状態情報復元手段110は、サーバ装置200から受信したOS状態情報を復元するために用いられる。
自OS状態情報退避・復元手段111は、オペレーティングシステム107の動作を継続するためにプレリセットNMIにてOS状態情報を退避し、リセット後高信頼ソフトウェアの動作終了後にそのOS状態情報を復元することでOS107の動作を継続する。
なお、OS状態情報は、前述したように、プログラムカウンタ値や各種レジスタ値である。
【0028】
受信OS状態情報保存領域112は、サーバ装置200から受信したOS状態情報を保存するための保存領域である。
自OS状態情報保存領域113は、自OS状態情報退避・復元手段111のOS状態情報を保存するための保存領域である。
【0029】
図1のクライアント装置100の構成要素のうち、受信OS状態情報保存領域112及び自OS状態情報保存領域113以外は、ソフトウェアである。
【0030】
サーバ装置200は、クライアント装置100との間でデータの送受信を行う。
201はデータ送信手段で、クライアント装置100に対してデータを送信するための手段である。
202はデータ受信手段で、クライアント装置100から送信されたデータを受信するための手段である。
203はOS状態情報保存領域で、クライアント装置100から受信したOS状態情報を保存するための領域で、複数のOS状態情報を蓄積することを目的としている。
204はOS状態情報解析手段で、OS状態情報保存領域203から任意のOS状態情報を抽出するためのデータ解析手段である。
【0031】
図1のサーバ装置200の構成要素のうち、OS状態情報保存領域203以外は、ソフトウェアである。
【0032】
図2は、実施の形態1におけるクライアント装置100の最小限のハードウェアの構成例を示す。
なお、図2の構成は、あくまでもクライアント装置100のハードウェア構成の一例を示すものであり、クライアント装置100のハードウェア構成は図2に記載の構成に限らず、他の構成であってもよい。
【0033】
図2において、1001はCPUで、高信頼ソフトウェア102、OS機能103、および、ブートローダ108の実行および各種機器の制御を行うための中央演算装置である。
1002はリセット回路で、リセット信号を発生させる機能のほか、そのリセット信号を発生させる前にプレリセットと呼ぶNMIをブートローダ108に対して発生させる手段である。
1003はRAM(Random Access Memory)で、高信頼ソフトウェア102やOS機能103、ブートローダ108が動作する上で使用する変数、レジスタ値などのデータを保存する手段である。
1004はROM(Read Only Memory)で、上述のソフトウェアのプログラムコードおよび変数の初期値を格納するためのメモリ領域である。
1005は各種センサーで、クライアント装置100自身の状態及び外界の状態を監視するための装置で、カメラ、温度計、圧力計、レーダー装置などがそれに当たる。
1006はサーバ装置200と通信を行う通信装置である。
【0034】
CPU1001は、高信頼ソフトウェア102の実行及び周期リセットを行うとともに、OS107を含むOS機能103の実行の中断と、中断されたOS機能103の実行の再開とを繰り返す。
より具体的には、CPU1001は、ブートローダ108を実行して、OS機能103の実行が中断される中断タイミングにおけるOS機能103の状態が記述されるOS状態情報を生成し、OS状態情報を退避領域である自OS状態情報保存領域113に退避させる。
また、通信装置1006は、CPU1001の指示により、生成されたOS状態情報をサーバ装置200に送信し、サーバ装置200にOS状態情報を保管させる。
CPU1001は、OS機能103を正常に再開できる正常時には、ブートローダ108を実行して、OS機能103の実行が再開される再開タイミングに、自OS状態情報保存領域113に退避されたOS状態情報を用いて、中断タイミングにおけるOS機能103の状態を復元する。
一方、OS機能103を正常に再開できない非正常時には、CPU1001は、再開タイミングに先立ちサーバ装置200にOS状態情報の送信を要求し、サーバ装置200から送信されたOS状態情報を通信装置1006に受信させ、再開タイミングに、通信装置1006によりサーバ装置200から受信されたOS状態情報を用いて、中断タイミングにおけるOS機能103の状態を復元する。
このように、本実施の形態では、CPU1001は、状態情報生成部と退避実行部とプログラム復元部の例に相当する。
また、本実施の形態では、通信装置1006は、状態情報送信部と状態情報受信部の例に相当する。
また、CPU1001による動作が、状態情報生成ステップと退避実行ステップとプログラム復元ステップの例に相当する。
また、通信装置1006による動作が、状態情報送信ステップと状態情報受信ステップの例に相当する。
【0035】
図3は、実施の形態1におけるサーバ装置200の最小限のハードウェアの構成例を示す。
なお、図3の構成は、あくまでもサーバ装置200のハードウェア構成の一例を示すものであり、サーバ装置200のハードウェア構成は図3に記載の構成に限らず、他の構成であってもよい。
【0036】
図3において、2001はCPUで、内蔵S/W(ソフトウェア)を動作させるための中央演算装置である。
2002はサーバ管理者がCPUに命令を実行させるための入力装置で、マウスやキーボードなどである。
2003はサーバ管理者がCPUの状況を把握するための出力装置で、ディスプレイなどである。
2004はRAM(Random Access Memory)で、内蔵S/Wが動作する上で使用する変数、レジスタ値などのデータを保存する手段である。
2005はROM(Read Only Memory)で、上述のソフトウェアのプログラムコードおよび変数の初期値を格納するためのメモリ領域である。
2006は大容量記憶装置で、ハードディスクなどで構成されるが、クライアント装置100から受信したOS状態情報を複数蓄積するための保存領域である。
2007はクライアント装置100と通信を行う通信装置である。
【0037】
通信装置2007は、CPU2001の制御により、クライアント装置100のOS状態情報を、クライアント装置100から受信する。
そして、大容量記憶装置2006は、クライアント装置100から受信したOS状態情報を記憶する。
また、通信装置2007は、CPU2001の制御により、クライアント装置100におけるOS機能103の再開タイミングに先立ち、クライアント装置100から、OS状態情報の送信要求を受信する。
CPU2001は、OS状態情報の送信要求が受信された場合に、OS状態情報解析手段204を実行して、OS状態情報を大容量記憶装置2006から抽出する。
そして、通信装置2007は、CPU2001の制御により、抽出されたOS状態情報をクライアント装置100に送信する。
このように、本実施の形態では、CPU2001は状態情報抽出部の例に相当し、大容量記憶装置2006は状態情報記憶部の例に相当し、通信装置2007は状態情報受信部と送信要求受信部と状態情報送信部の例に相当する。
また、CPU2001による動作が状態情報抽出ステップの例に相当し、大容量記憶装置2006による動作が状態情報記憶ステップの例に相当し、通信装置2007による動作が状態情報受信ステップと送信要求受信ステップと状態情報送信ステップの例に相当する。
【0038】
図4に、図6のS8及び図7のT6でクライアント装置100からサーバ装置200に送信するデータのデータフォーマット例を示す。
【0039】
図4において、例外発生有無401は、クライアント装置100においてCPU例外が発生しているか否かを判断するためのフラグ情報である。
分割OS状態情報403は、自OS状態情報保存領域113に保存されたOS状態情報そのもの、あるいは、1回のデータ送信で送信可能なサイズに分割されたOS状態情報である。
そして、分割番号402は、その分割されたOS状態情報を復元するため、分割された情報の何番目かを示す通し番号である。
センサー情報 観測データ404は、各種センサー1005から得られた観測データを格納する領域である。
【0040】
図5に、図7のT7でサーバ装置200からクライアント装置100に送信するデータのデータフォーマット例を示す。
【0041】
図5において、コマンド識別番号501は、そのコマンドの種別を識別するためのID番号である。
分割OS状態情報503は、OS状態情報解析手段204により抽出したOS状態情報そのもの、あるいは、1回のデータ送信で送信可能なサイズに分割されたOS状態情報である。
そして、分割番号502はその分割されたOS状態情報を復元するため、分割された情報の何番目かを示す通し番号である。
【0042】
実施の形態1のOS状態情報送信の処理シーケンスを図6を用いて説明する。
ここで前提として、高信頼ソフトウェア102、OS機能103が同一CPU1001上で動作しているものとする。
また、リセット回路1002は一定周期毎にリセット信号をブートローダ108に発信するが、その前にプレリセット信号を発信するものとする。
【0043】
まず、リセット回路1002はプレリセット信号をブートローダ108に送信する(S1)。
次に、ブートローダ108は自OS状態情報退避・復元手段111により現在のCPU1001のレジスタやRAM1003に格納したデータの一部をOS状態情報として抽出し、自OS状態情報保存領域113に保存する(S2)。
次に、一定の周期毎に設定されたリセットタイミングにてリセット回路1002はCPU1001をリセットする(S3)。
そして、ブートローダ108のS/W起動手段109が高信頼ソフトウェア102を起動する(S4)。
次に、高信頼ソフトウェア102の動作終了後、ブートローダ108のS/W起動手段109が、S2において自OS状態情報保存領域113に保存したOS状態情報を自OS状態情報保存領域113からCPU1001およびRAM1003に復元することで(S5)、OS機能103を起動する(S6)。
起動されたOS機能103は前状態からの継続処理を行う。
例えば、OS107で動作するアプリケーション104は、中断をしていた各種センサー1005による外界の環境測定の実施を再開する(S7)。
そして、アプリケーション104は、データ送信手段105によりその測定結果をサーバ装置200に送信する。
ここで、OS107は、自OS状態情報保存領域113からOS状態情報を取り出し、取り出したOS状態情報を測定結果と同時に送信する。
そして、サーバ装置200は、そのOS状態情報をOS状態情報保存領域203に保存・蓄積する(S8)。
なお、このとき、OS状態情報が1回の送信サイズを超える場合は複数周期で複数回に送信することも可能である。
そして、定期的にリセット回路1002より送信されるプレリセット信号により、ブートローダ108がS1の時と同様の処理を行い、OS状態情報を退避する(S10)。
【0044】
次に、CPU例外が発生した場合におけるOS機能103の復帰シーケンスを図7を用いて説明する。
【0045】
まず、クライアント装置100において、CPU例外が発生したと仮定する(T1)。
このときOS機能103はCPU例外ハンドラによりブートローダ108に対してCPU例外通知を送信する(T2)。
これによりブートローダ108はCPU例外が発生し、OS機能103が継続動作をできないことを判断する。
次に、リセット回路1002より周期的に送信されるリセット信号によりCPU1001をリセットする(T3)。
そして、ブートローダ108のS/W起動手段109により高信頼ソフトウェア102が起動され、所定時間の経過後に、高信頼ソフトウェア102の処理が終了する(T4)。
次に、ブートローダ108のS/W起動手段109はCPU例外が発生したと判断したため、OS機能103の処理の初期化を実施する(T5)。
これにより、クライアント装置100とサーバ装置200との間のデータ送信手段105とデータ受信手段106の動作を確保する。
次に、OS機能103はデータ送信手段105により、CPU例外が発生したことをサーバ装置200に通知する例外発生通知を送信する。
この例外発生通知は、サーバ装置200にOS状態情報の送信を要求する役割を有しており、送信要求の例に相当する。
サーバ装置200は、データ受信手段202により例外発生通知を受信する(T6)。
次に、サーバ装置200では管理者が例外発生通知を出力装置2003より確認し、入力装置2002と、OS状態情報解析手段204を使用し、OS状態情報保存領域203に格納されたOS状態情報を抽出する。
そして、データ送信手段201によりOS状態情報をクライアント装置100に送信する(T7)。
クライアント装置100はデータ受信手段106によりOS状態情報を受信し、受信したOS状態情報を受信OS状態情報保存領域112に保存する。
受信OS状態情報保存領域112はOS状態情報の保存後、OS状態情報受信完了通知をブートローダ108に通知する(T8)。
次に、リセット回路1002より周期的に送信されるリセット信号によりCPU1001がリセットされ(T9)、ブートローダ108のS/W起動手段109により再び高信頼ソフトウェア102が起動される(T10)。
次に、ブートローダ108のS/W起動手段109が、受信OS状態情報保存領域112に保存されたOS状態情報をCPU1001およびRAM1003に復元することで(T11)、OS機能103を起動する(T12)。
【0046】
以上の流れにより、サーバ装置200に格納されたOS状態情報から管理者が任意のOS状態情報を選択し、クライアント装置100に送信することで、クライアント装置100にCPU例外が発生したとしても、OS機能103の動作を継続することができる。
【0047】
なお、図6のシーケンス図では、S8において測定結果の送信とともに、S2で生成されたOS状態情報を送信することとしているが、これに代えて、例えば、測定結果の送信タイミングをS10の後とすることで、S10で生成されたOS状態情報を測定結果とともに送信するようにしてもよい。
【0048】
以上、本実施の形態では、
クライアント装置のOS状態情報をクライアント装置自身だけでなく、サーバ装置に退避し、蓄積し、OS状態情報が破壊されCPU例外が発生した場合に、サーバ装置に蓄積されたOS状態情報をクライアント装置に送信し、復元することで、退避したOS状態情報の時点に処理を戻しクライアント装置のOS機能の動作継続性を確保することを説明した。
【0049】
より具体的には、
周期的にリセットを行う、リセット回路と、
周期リセットを必要とする、高信頼ソフトウェアと、
周期リセットを必要としない、リアルタイムOS(以下、RTOS)と、
RTOS上で動作するアプリケーションと、
サーバ装置にデータを送信する、データ送信手段と、
サーバ装置からデータを受信する、データ受信手段と、
RTOSや高信頼ソフトウェアを起動する、S/W起動手段と、
受信OS状態情報復元手段と自OS状態情報退避・復元手段を備える、ブートローダと、
受信OS状態情報を保存するための、受信OS状態情報保存領域と、
自OS状態情報を保存するための、自OS状態情報保存領域と、
から構成されるクライアント装置と、
クライアント装置にデータを送信する、データ送信手段と、
クライアント装置からデータを受信する、データ受信手段と、
蓄積したOS状態情報から復元するためのOS状態情報を抽出するための、OS状態解析手段と、
クライアント装置から受信したOS状態情報を保存するための、OS状態情報保存領域と、
から構成されるサーバ装置と、
から構成されるシステムを説明した。
【符号の説明】
【0050】
100 クライアント装置、102 高信頼ソフトウェア、103 OS機能、104 アプリケーション、105 データ送信手段、106 データ受信手段、107 オペレーティングシステム、108 ブートローダ、109 S/W起動手段、110 受信OS状態情報復元手段、111 自OS状態情報退避・復元手段、112 受信OS状態情報保存領域、113 自OS状態情報保存領域、200 サーバ装置、201 データ送信手段、202 データ受信手段、203 OS状態情報保存領域、204 OS状態情報解析手段、1001 CPU、1002 リセット回路、1003 RAM、1004 ROM、1005 各種センサー、1006 通信装置、2001 CPU、2002 入力装置、2003 出力装置、2004 RAM、2005 ROM、2006 大容量記憶装置、2007 通信装置。
【特許請求の範囲】
【請求項1】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うプログラム実行装置であって、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成部と、
前記状態情報生成部により生成された状態情報を退避領域に退避させる退避実行部と、
前記状態情報生成部により生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信部と、
前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信部により前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信部と、
前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信部により前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元部とを有することを特徴とするプログラム実行装置。
【請求項2】
前記プログラム復元部は、
前記プログラムの実行を正常に再開できる正常時には、前記再開タイミングに、前記退避領域に退避された状態情報を用いて、前記中断タイミングにおける前記プログラムの状態を復元し、
前記プログラムの実行を正常に再開できない非正常時には、前記再開タイミングに先立ち前記情報保管装置に状態情報の送信を要求し、前記情報保管装置から送信された状態情報を前記状態情報受信部に受信させ、前記再開タイミングに、前記状態情報受信部により前記情報保管装置から受信された状態情報を用いて、前記中断タイミングにおける前記プログラムの状態を復元することを特徴とする請求項1に記載のプログラム実行装置。
【請求項3】
前記状態情報送信部は、
前記状態情報生成部により生成された状態情報を分割して、前記情報保管装置に送信し、
前記状態情報受信部は、
前記情報保管装置から、分割された状態情報を受信することを特徴とする請求項1又は2に記載のプログラム実行装置。
【請求項4】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返すプログラム実行装置と、通信を行う情報保管装置であって、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を、前記プログラム実行装置から受信する状態情報受信部と、
前記状態情報受信部により受信された、前記プログラム実行装置からの状態情報を記憶する状態情報記憶部と、
前記プログラムの実行が再開される再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信する送信要求受信部と、
前記送信要求受信部により状態情報の送信要求が受信された場合に、前記プログラム実行装置からの状態情報を前記状態情報記憶部から抽出する状態情報抽出部と、
前記状態情報抽出部により抽出された状態情報を、前記プログラム実行装置に送信する状態情報送信部とを有することを特徴とする情報保管装置。
【請求項5】
前記送信要求受信部は、
前記プログラム実行装置において前記プログラムの実行を正常に再開できない非正常時に、前記再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信することを特徴とする請求項4に記載の情報保管装置。
【請求項6】
前記状態情報受信部は、
前記プログラム実行装置から、分割された状態情報を受信し、
前記状態情報送信部は、
前記プログラム実行装置に、分割された状態情報を送信することを特徴とする請求項4又は5に記載の情報保管装置。
【請求項7】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うコンピュータが実施する情報処理方法であって、
前記コンピュータが、前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成ステップと、
前記コンピュータが、前記状態情報生成ステップにより生成された状態情報を退避領域に退避させる退避実行ステップと、
前記コンピュータが、前記状態情報生成ステップにより生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信ステップと、
前記コンピュータが、前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信ステップにより前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信ステップと、
前記コンピュータが、前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信ステップにより前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元ステップとを有することを特徴とする情報処理方法。
【請求項8】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返すプログラム実行装置と、通信を行うコンピュータが実施する情報処理方法であって、
前記コンピュータが、前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を、前記プログラム実行装置から受信する状態情報受信ステップと、
前記コンピュータが、前記状態情報受信ステップにより受信された、前記プログラム実行装置からの状態情報を記憶する状態情報記憶ステップと、
前記コンピュータが、前記プログラムの実行が再開される再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信する送信要求受信ステップと、
前記コンピュータが、前記送信要求受信ステップにより状態情報の送信要求が受信された場合に、前記状態情報記憶ステップにより記憶された状態情報のうち、前記プログラム実行装置からの状態情報を抽出する状態情報抽出ステップと、
前記コンピュータが、前記状態情報抽出ステップにより抽出された状態情報を、前記プログラム実行装置に送信する状態情報送信ステップとを有することを特徴とする情報処理方法。
【請求項9】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うコンピュータに、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成ステップと、
前記状態情報生成ステップにより生成された状態情報を退避領域に退避させる退避実行ステップと、
前記状態情報生成ステップにより生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信ステップと、
前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信ステップにより前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信ステップと、
前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信ステップにより前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元ステップとを実行させることを特徴とするコンピュータプログラム。
【請求項10】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返すプログラム実行装置と、通信を行うコンピュータに、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を、前記プログラム実行装置から受信する状態情報受信ステップと、
前記状態情報受信ステップにより受信された、前記プログラム実行装置からの状態情報を記憶する状態情報記憶ステップと、
前記プログラムの実行が再開される再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信する送信要求受信ステップと、
前記送信要求受信ステップにより状態情報の送信要求が受信された場合に、前記状態情報記憶ステップにより記憶された状態情報のうち、前記プログラム実行装置からの状態情報を抽出する状態情報抽出ステップと、
前記状態情報抽出ステップにより抽出された状態情報を、前記プログラム実行装置に送信する状態情報送信ステップとを実行させることを特徴とするコンピュータプログラム。
【請求項1】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うプログラム実行装置であって、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成部と、
前記状態情報生成部により生成された状態情報を退避領域に退避させる退避実行部と、
前記状態情報生成部により生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信部と、
前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信部により前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信部と、
前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信部により前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元部とを有することを特徴とするプログラム実行装置。
【請求項2】
前記プログラム復元部は、
前記プログラムの実行を正常に再開できる正常時には、前記再開タイミングに、前記退避領域に退避された状態情報を用いて、前記中断タイミングにおける前記プログラムの状態を復元し、
前記プログラムの実行を正常に再開できない非正常時には、前記再開タイミングに先立ち前記情報保管装置に状態情報の送信を要求し、前記情報保管装置から送信された状態情報を前記状態情報受信部に受信させ、前記再開タイミングに、前記状態情報受信部により前記情報保管装置から受信された状態情報を用いて、前記中断タイミングにおける前記プログラムの状態を復元することを特徴とする請求項1に記載のプログラム実行装置。
【請求項3】
前記状態情報送信部は、
前記状態情報生成部により生成された状態情報を分割して、前記情報保管装置に送信し、
前記状態情報受信部は、
前記情報保管装置から、分割された状態情報を受信することを特徴とする請求項1又は2に記載のプログラム実行装置。
【請求項4】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返すプログラム実行装置と、通信を行う情報保管装置であって、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を、前記プログラム実行装置から受信する状態情報受信部と、
前記状態情報受信部により受信された、前記プログラム実行装置からの状態情報を記憶する状態情報記憶部と、
前記プログラムの実行が再開される再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信する送信要求受信部と、
前記送信要求受信部により状態情報の送信要求が受信された場合に、前記プログラム実行装置からの状態情報を前記状態情報記憶部から抽出する状態情報抽出部と、
前記状態情報抽出部により抽出された状態情報を、前記プログラム実行装置に送信する状態情報送信部とを有することを特徴とする情報保管装置。
【請求項5】
前記送信要求受信部は、
前記プログラム実行装置において前記プログラムの実行を正常に再開できない非正常時に、前記再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信することを特徴とする請求項4に記載の情報保管装置。
【請求項6】
前記状態情報受信部は、
前記プログラム実行装置から、分割された状態情報を受信し、
前記状態情報送信部は、
前記プログラム実行装置に、分割された状態情報を送信することを特徴とする請求項4又は5に記載の情報保管装置。
【請求項7】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うコンピュータが実施する情報処理方法であって、
前記コンピュータが、前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成ステップと、
前記コンピュータが、前記状態情報生成ステップにより生成された状態情報を退避領域に退避させる退避実行ステップと、
前記コンピュータが、前記状態情報生成ステップにより生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信ステップと、
前記コンピュータが、前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信ステップにより前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信ステップと、
前記コンピュータが、前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信ステップにより前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元ステップとを有することを特徴とする情報処理方法。
【請求項8】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返すプログラム実行装置と、通信を行うコンピュータが実施する情報処理方法であって、
前記コンピュータが、前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を、前記プログラム実行装置から受信する状態情報受信ステップと、
前記コンピュータが、前記状態情報受信ステップにより受信された、前記プログラム実行装置からの状態情報を記憶する状態情報記憶ステップと、
前記コンピュータが、前記プログラムの実行が再開される再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信する送信要求受信ステップと、
前記コンピュータが、前記送信要求受信ステップにより状態情報の送信要求が受信された場合に、前記状態情報記憶ステップにより記憶された状態情報のうち、前記プログラム実行装置からの状態情報を抽出する状態情報抽出ステップと、
前記コンピュータが、前記状態情報抽出ステップにより抽出された状態情報を、前記プログラム実行装置に送信する状態情報送信ステップとを有することを特徴とする情報処理方法。
【請求項9】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返す、情報保管装置と通信を行うコンピュータに、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を生成する状態情報生成ステップと、
前記状態情報生成ステップにより生成された状態情報を退避領域に退避させる退避実行ステップと、
前記状態情報生成ステップにより生成された状態情報を前記情報保管装置に送信し、前記情報保管装置に状態情報を保管させる状態情報送信ステップと、
前記プログラムの実行が再開される再開タイミングに先立ち、前記状態情報送信ステップにより前記情報保管装置に送信された状態情報を前記情報保管装置から受信する状態情報受信ステップと、
前記再開タイミングに、前記退避領域に退避された状態情報及び前記状態情報受信ステップにより前記情報保管装置から受信された状態情報の少なくともいずれかを用いて、前記中断タイミングにおける前記プログラムの状態を復元するプログラム復元ステップとを実行させることを特徴とするコンピュータプログラム。
【請求項10】
実行中のプログラムの中断と、中断された前記プログラムの実行の再開とを繰り返すプログラム実行装置と、通信を行うコンピュータに、
前記プログラムの実行が中断される中断タイミングにおける前記プログラムの状態が記述される状態情報を、前記プログラム実行装置から受信する状態情報受信ステップと、
前記状態情報受信ステップにより受信された、前記プログラム実行装置からの状態情報を記憶する状態情報記憶ステップと、
前記プログラムの実行が再開される再開タイミングに先立ち、前記プログラム実行装置から、状態情報の送信要求を受信する送信要求受信ステップと、
前記送信要求受信ステップにより状態情報の送信要求が受信された場合に、前記状態情報記憶ステップにより記憶された状態情報のうち、前記プログラム実行装置からの状態情報を抽出する状態情報抽出ステップと、
前記状態情報抽出ステップにより抽出された状態情報を、前記プログラム実行装置に送信する状態情報送信ステップとを実行させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2012−198728(P2012−198728A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2011−61848(P2011−61848)
【出願日】平成23年3月21日(2011.3.21)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願日】平成23年3月21日(2011.3.21)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]