JP2008003940A - 保護制御装置、保護制御方法及び保護制御プログラム - Google Patents

保護制御装置、保護制御方法及び保護制御プログラム Download PDF

Info

Publication number
JP2008003940A
JP2008003940A JP2006174328A JP2006174328A JP2008003940A JP 2008003940 A JP2008003940 A JP 2008003940A JP 2006174328 A JP2006174328 A JP 2006174328A JP 2006174328 A JP2006174328 A JP 2006174328A JP 2008003940 A JP2008003940 A JP 2008003940A
Authority
JP
Japan
Prior art keywords
program
check
sum value
storage means
ram
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006174328A
Other languages
English (en)
Inventor
Manabu Shimoo
学 下尾
Hironori Sakashita
寛憲 坂下
Takeya Tominaga
雄也 冨永
Yuji Ishihara
祐二 石原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006174328A priority Critical patent/JP2008003940A/ja
Publication of JP2008003940A publication Critical patent/JP2008003940A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】第1の記憶手段から第2の記憶手段にロードするアドレスが予め予測できない場合であっても、故障確率の低い簡素な構造としながら、メモリの破壊検出による異常動作の未然防止が可能な保護制御技術を提供する。
【解決手段】プログラムを記憶するためのハードディスク1及びRAM2、ハードディスク1からRAM2に、実行するプログラムをロードするローダ51、ローダ51がプログラムをロードした時に、当該プログラムのチェックサム値を計算するサム値演算部51a、チェックサム値を格納するプログラムチェックサムテーブル22、サム値演算部51aに対して、チェックサム値の再計算を指示する再計算指示部51c、プログラムチェックサムテーブル22に格納されたチェックサム値と、再計算されたチェックサム値とを比較することにより、プログラム破壊による異常の有無をチェックするサム値チェック処理部53を有する。
【選択図】図1

Description

本発明は、例えば、ハードディスクからRAMにロードして動作させるプログラムの信頼性の向上を図った保護制御装置、保護制御方法及び保護制御プログラムに関する。
従来、電力系統の監視などに用いられる保護制御装置用ソフトウェアは、機能が限定されていたため、プログラム自体のサイズはそれほど大きくなかった。このため、ROM(Read Only Memory)にプログラムを保存しておき、動作時にROMからRAM(Random Access Memory)にコピーして動作させていた。このようにRAMにコピーされたプログラムが破壊されているか否かは、ROMとRAMの内容が一致しているか否かによって判断できた。
そこで、予めROMに保存していたチェックサム値と、RAMにロードした後のプログラムのチェックサム値とを比較することにより、プログラムの破壊の有無を確認していた。これにより、RAM上のプログラム破壊の検出とそれによる異常動作の防止を図ることができた。また、異常があった時に、その原因がRAM上のプログラム破壊であることの確認も可能であった。
例えば、特許文献1には、予めプログラムのチェックサム値をROMに記憶しておき(請求項5)、RAMにコピーしたプログラムについて定期的にチェックサム値計算を行い、ROMに記憶されたチェックサム値と比較(請求項6)する技術が開示されている。このように、単純にROMからRAMにプログラムをコピーするシステムでは、チェックサム値が、プログラムの内容で決まる固定的な内容である。したがって、事前に計算したチェックサム値とRAM上のプログラムのチェックサム値とを比較することにより、プログラムが壊れているか否かを判断することができた。
ところで、従来の組み込みシステムでは、プログラムサイズが小さいため、ROMとRAMがほぼ1対1に対応しており、ROMのどの部分がRAMの何処へロードされるかが事前に分かっていた。しかしながら、プログラムをRAMにコピーする時、コピー先のRAMのアドレスが、事前に分からないシステムが存在する。
例えば、一般的に普及している汎用OS(Operating System)等のシステムにおいては、プログラムのサイズが大きく、動的なプログラム管理を行うため、プログラムがRAMの何処にロードされるかは、事前には分からない。
つまり、アプリケーションからプログラムの実行要求があると、OSはハードディスクに格納されたプログラムを探し、プログラムを格納するのに十分なRAMの領域を確保する。これは、通常、メモリプールから未使用領域の一部を切り出す(割り当てる)ことで確保されるため、動的な割り当てとなる。次に、このように動的に割り当てられた領域へ、ハードディスクからプログラムを読み出し(ロード)、プログラムの先頭アドレスにジャンプすることで実行される。
このようなシステムにおいては、プログラムが装置の動作状態によって何処にロードされるかが予測できない動的なロードがなされ、その時に、プログラムやデータの場所を参照するためのアドレス情報が書き換えられるため、プログラムのチェックサム値を予め計算することができない。したがって、従来装置のように事前に計算したサム値を使って、RAMのプログラムが壊れているか否かを判断することができない。
これに対処するため、特許文献2に示すように、RAMの破壊を検出できるECC(Error Correction Coding)などの機構を備えたCPUとRAMを採用することにより、ハードウェアによってプログラムが破壊されたことを検出し、異常動作を防止する技術が提案されている。
図11は、RAMの破壊検出機構を備えた従来の制御装置の一例を示す機能ブロック図である。すなわち、従来の制御装置1は、RAM2、RAM破壊検出機構3、ハードディスク4、OS5を備えている。RAM2は、アプリケーションプログラム21のコード及びデータがコピーされるメモリである。RAM破壊検出機構3は、アプリケーションプログラム21のコードが動作している最中に、RAM2の破壊が起こると、これをECC機能によって検出する手段であり、ハードウェアで構成されている。
ハードディスク4は、アプリケーションプログラム21を含む各種プログラム41を格納した大容量記憶媒体である。OS5は、コンピュータを管理する基本ソフトであり、ハードディスク4に格納されたプログラム41のうち、要求されたアプリケーションのプログラム41(アプリケーションプログラム21)を、RAM2にロードするローダ51と、RAM破壊検出機構3でRAMの破壊が検出された場合に、コードの強制的な中断や、システムの再起動を行うRAM破壊対策処理部52を有している。
図12は、上記のような制御装置1における一般的なプログラム41のロード処理を示すフローチャートである。まず、動作するプログラム41を、OS5がハードディスク4からRAM2にロードする手順は次の通りである。すなわち、アプリケーションを開始するためのプログラム41を指定することにより、ロード要求を行う(ステップ1201)。
ローダ51は、指定されたプログラム41が格納されているハードディスク4のファイル名を探し(ステップ1202)、当該ファイル名から当該ファイル名が格納されている場所を特定するアドレスに基づき、ハードディスク4上のプログラム格納場所を求め(ステップ1203)、ハードディスク4上のプログラム格納場所から、プログラム41を読み出す(ステップ1204)。ハードディスク4から読み出されたプログラム41はプログラムコード以外の情報を含むため、ローダ51は、不要な情報を取り除いてRAM2にロードする(ステップ1205)。
RAM2にロードされたコードは、OS5によって実行権が与えられて、実行される。このように、コードが動作している最中に、RAM2の破壊が起こった場合には、その破壊がRAM破壊検出機構3によって検出される。すると、RAM破壊対策処理部52が、コードの強制的な中断をするか、システムの再起動を行うことにより、RAM2の破壊による異常動作が起きないような処理を行う。
特開2001−339840号公報 特開2001−111435号公報
しかし、上記のように、RAMの破壊をハードウェアで検出できるECC(Error Correcting Code)機構は、CPU及びRAMの構造、さらにCPUとRAM間のインタフェースが複雑となり、故障する可能性が高くなる。また、ECC機構のCPUやRAMは、その分発熱が多くなり、これによっても故障の確率が高くなる。
したがって、ハードディスクに代表される大容量記憶媒体に、サイズの大きなプログラムを保存しておき、そこからOSがプログラムをRAMの任意のアドレスに動的にロードして、アプリケーションやドライバーなどのプログラムを連続して長時間稼動させる保護制御装置においては、CPUやRAM、その間のインタフェースの複雑化、CPUやインタフェースからの発熱等を少しでも抑え、故障する可能性を減らす必要があった。
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、プログラムをハードディスク等の記憶手段からメモリ等の記憶手段にロードするアドレスが予め予測できない場合であっても、故障確率の低い簡素な構造としながら、メモリ等の記憶手段の破壊検出による異常動作の未然防止が可能な保護制御装置、保護制御方法及び保護制御プログラムを提供することにある。
上記のような目的を達するため、本発明の保護制御装置は、プログラムを記憶する第1の記憶手段と、実行するプログラムを記憶するための第2の記憶手段と、前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードするロード手段と、前記ロード手段がプログラムをロードした時に、当該プログラムのチェックサム値を計算するサム値演算手段と、前記チェックサム値を記憶するサム値記憶手段と、前記サム値演算手段に対して、チェックサム値の再計算を指示する再計算指示手段と、前記サム値記憶手段に記憶されたチェックサム値と、再計算されたチェックサム値とを比較することにより、プログラム破壊による異常の有無をチェックするサム値チェック処理手段と、を有することを特徴とする。なお、本発明は、上記の保護制御装置の機能をコンピュータにより実現するための保護制御方法及び保護制御プログラムとして捉えることもできる。
以上のような本発明では、プログラムが第2の記憶手段にロードされた時に、各プログラムのチェックサム値を計算し、記憶しておく。そして、各プログラムのチェックサム値を再計算し、ロードされた時に計算し記憶しておいたチェックサム値と比較することにより、プログラムが壊れていないかどうかを確認する。これにより、ハードウェア等の構造を複雑化することなく、プログラムの破壊による異常動作を未然に防止できる。
以上のような本発明によれば、第1の記憶手段から第2の記憶手段にロードするアドレスが予め予測できない場合であっても、故障確率の低い簡素な構造としながら、第2の記憶手段の破壊検出による異常動作の未然防止が可能な保護制御装置、保護制御方法及び保護制御プログラムを提供することができる。
本発明を実施するための形態(以下、実施形態とする)を、図面を参照して説明する。
本発明の第1の実施形態を、図1の機能ブロック図を参照して説明する。なお、本発明は、保護制御装置としても、また、後述する手順で保護を行う制御方法としても把握できるとともに、かかる手順でコンピュータを動作させるコンピュータプログラムおよびこれを記録した記録媒体として把握することもできる。
すなわち、制御装置1は、RAM2、ハードディスク4、OS5、タイマーハードウエア6を有している。RAM2は、システムが動作する時に、アプリケーションプログラム21のコードやデータが置かれるメモリである(第2の記憶手段)。ハードディスク4は、各種プログラム41を格納しており、OS5がアプリケーションプログラム21に対応するプログラム41を検索したり、コードやデータをRAM2にコピーするために、プログラム41のファイルを読み出したりする時に使用される(第1の記憶手段)。
OS5は、ローダ51、RAM破壊対策処理部52、RAMサム値チェック処理部53、タイマー処理部54を有している。ローダ51は、アプリケーションによって指定されたプログラム41をハードディスク4から検索し、検索したプログラムのファイルをハードディスク4から読み出し、ファイルに格納されているコードとデータを選択してRAM2にコピーする手段(請求項のロード手段)である。
また、ローダ51は、サム値演算部51a、格納処理部51b及び再計算指示部51cを有している。サム値演算部51aは、コードの先頭からそのサイズまでのチェックサム値を計算する手段である。格納処理部51bは、コードをRAM2にコピーする時、プログラムを識別するIDと、RAM2にコピーしたコードの開始アドレスと、コードのサイズと、サム値演算部51aによって計算されたチェックサム値とを、RAM2のプログラムチェックサムテーブル22に格納する手段である。請求項のサム値記憶手段は、RAM2におけるプログラムチェックサムテーブル22の記憶領域に対応する。再計算指示部51cは、定期的にサム値演算部51aにチェックサム値の再計算を指示する手段である。
なお、OS5は、一般的な装置と同様に、RAM2にコピーされたコードを実行するため、複数のプログラム41のコードの中から最も優先度の高いコードを選択し、そこに実行権を渡しプログラム41を実行する機能も有している。優先度の高低の判断は、通常は、各プログラム41の重要度に応じた任意の優先度の値が割り振られており、その値の大小により優先度の高い低いを判断する。
RAMサム値チェック処理部53は、ローダ51が作成したプログラムチェックサムテーブル22を参照し、サム値演算部51aによる再計算結果と照合して、RAM2にコピーされたコードが破壊されているか否かを確認する手段である。タイマー処理部54は、アプリケーションプログラム21が動作している最中、タイマーハードウェア6から発生する定期的な割り込みにより呼び出され、定期的にRAMサム値チェック処理部53を動作させる手段である。
以上のような本実施形態の作用を、図2及び図3にしたがって説明する。なお、図2はプログラムのロード処理を示すフローチャート、図3はRAMサム値チェック処理を示すフローチャートである。
[プログラムのロード処理]
動作するアプリケーションプログラム21を、ハードディスク4からRAM2にロードするロード処理を、図2を参照して説明する。まず、入力装置からの入力に応じて、OS5が、アプリケーションが開始するためのプログラム41を指定することにより、ロード要求を行う(ステップ201)。
ローダ51は、指定されたプログラム41が格納されているハードディスク4のファイル名を探し(ステップ202)、ファイル名から、ハードディスク4上のプログラム格納アドレスを求め(ステップ203)、ハードディスク4上のプログラム格納アドレスから、プログラム41を読み出す(ステップ204)。ハードディスク4から読み出されたプログラム41は、プログラムのコードやデータ以外の情報を含むため、不要な情報が取り除かれてRAM2にロードされる(ステップ205)。
サム値演算部51aは、RAM2にロードされたプログラムのチェックサムを計算する(ステップ206)。格納処理部51bは、計算されたチェックサムを、ID、開始アドレス、サイズとともに、RAM2の記憶領域(プログラムチェックサムテーブル22)に格納する(ステップ207)。以上のように、RAM2にロードされたコードは、OS5によって実行権が与えられて、実行される。
[RAMサム値チェック処理]
続いて、RAMサム値チェック処理部53の動作を、図3を参照して説明する。まず、RAMサム値チェック処理部53は、予め設定された一定時間だけプログラムの実行を中止するスリープを行う(ステップ301)。そして、タイマー処理部54からスリープを解除され、チェック処理を開始する。スリープとは、一時的に処理を中断して他のプログラムを実行できるようにするもので、スリープ時間は、一時的に中断する時間を指す。したがって、ここではスリープ時間を利用して他のプログラムを動かすようにする。
RAMサム値チェック処理部53は、最初に、プログラムチェックサムテーブル22にプログラムが登録されているかどうか検索を行う(ステップ302)。登録されていれば、再計算指示部51cの指示に応じて、サム値演算部51aが、プログラムチェックサムテーブル22の開始アドレスとサイズからチェックサム値を再計算する。RAMサム値チェック処理部53は、再計算されたチェックサム値と、プログラムチェックサムテーブル22に登録されたチェックサム値とを比較する(ステップ304)。
RAM2が正常であれば、チェックサム値がプログラムチェックサムテーブル22に登録された値と一致するため、そうであれば(ステップ305)、プログラムチェックサムテーブル22に登録された次のプログラムを、同様にチェックする(ステップ302〜305)。プログラムチェックサムテーブル22にある全てのプログラムをチェックして処理が終わると(ステップ303)、一定時間のスリープに入る(ステップ301)。
一方、再計算したチェックサム値とプログラムチェックサムテーブル22に登録されたチェックサム値とが一致しない場合には(ステップ305)、RAM2の破壊があったと判断され、これがRAM破壊対策処理部52に通知される(ステップ306)。RAM破壊対策処理部52は、上述のように、プログラムコードの強制的な中断をするか、システムの再起動を行い、RAMの破壊によって異常動作が起きないような処理を行う(ステップ307)。
以上のような本実施形態によれば、制御プログラムをハードディスクからRAM2にロードして動作させる際に、ロードするアドレスが予め予測できないシステムにおいて、ハードウェアによるRAM2の高度な監視機能を持たなくても、ロード時のチェックサム値と定期的な再計算時のチェックサム値との比較により、RAM2の破壊を検出できる。したがって、故障確率の低い簡素な構造としながらも、RAM2の破壊によるプログラムの異常動作を未然に防ぐことができ、制御プログラムの信頼性向上が実現できる。
本発明の保護制御装置の第2の実施形態を、図4の機能ブロック図を参照して説明する。本実施形態は、基本的には、図1に示した第1の実施形態と同様の構成を有している。但し、本実施形態は、アプリケーションプログラム21が、プログラム41をロードする時、コードをチェックするか否かの指定を行うロード指定選択機構7(請求項のチェック指定手段)が追加されている点に特徴を有している。
この指定は、アプリケーションプログラム21において予め設定されているか、若しくは入力装置からの入力によって、任意に設定することができる。例えば、優先度の高いプログラム41だけについて、コードをチェックするように指定すると、指定されたプログラムがローダ51によってロードされる時に、チェックサム値を計算し、プログラムチェックサムテーブル22に登録をする。
一方、コードをチェックする指定がされなかったプログラム41については、ローダ51によってロードされる時に、単にコードとデータをRAMにコピーする処理だけを行い、チェックサム値の計算やプログラムチェックサムテーブル22への登録は行わない。
なお、RAMサム値チェック処理部53によるチェック処理は、プログラムチェックサムテーブル22に登録されたプログラムだけを定期的にチェックするため、第1の実施形態と同様の処理となる。
以上のような本実施形態によれば、特定の重要なプログラムのコードを指定することにより、指定されたコードのみを監視して、RAM破壊によるプログラムの破壊やデータの破壊をチェックし、重要でない機能に対してはRAM破壊のチェックを行わない。したがって、RAM破壊による重要な機能の異常動作や誤動作を未然に防止しながら、第1の実施形態と比較して、システム全体の負担を軽減することができ、性能低下を最低限に抑えて、緊急時の処理を速やかに実行できる。
本発明の保護制御装置の第3の実施形態を以下に説明する。本実施形態は、基本的には、図1の第1の実施形態と同様の構成である。但し、本実施形態では、タイマー処理部54が、チェック周期が設定された周期設定部(請求項のチェック周期設定手段)を有し、この周期設定部に設定される時間を、入力装置によって入力することにより、任意の時間に変えることができる。
以上のような本実施形態の作用を説明する。なお、プログラムのロード処理は、上記の第1の実施形態と同様なため、RAMサム値チェック処理の手順を、図5を参照して説明する。すなわち、RAMサム値チェック処理部53は、スリープをする直前に、予め周期設定部に設定された時間を取得し、これに基づいてスリープ時間を決める(ステップ501)。
RAMサム値チェック処理部53は、決定された一定のスリープ時間だけ、プログラムの実行を中止するスリープを行う(ステップ502)。そして、タイマー処理部54からスリープを解除され、チェック処理を開始する。
最初に、プログラムチェックサムテーブル22にプログラムが登録されているかどうか検索を行い(ステップ503)、登録されていれば、上記の第1の実施形態と同様に、チェックサム値の再計算と、プログラムチェックサムテーブル22に登録されたチェックサム値との比較が行われる(ステップ505)。
RAM2が正常であれば、チェックサム値が一致し(ステップ506)、同様の手順で次のプログラムをチェックする(ステップ503〜505)。プログラムチェックサムテーブル22にある全てのプログラムをチェックして処理が終わると(ステップ504)、設定時間を取得し(ステップ501)、一定時間のスリープに入る(ステップ502)。
一方、チェックサム値が一致しないと(ステップ506)、RAM2の破壊があったと判断され、RAM破壊対策処理部52に通知される(ステップ507)。RAM破壊対策処理部52は、上述のように、プログラムコードの強制的な中断をするか、システムの再起動を行い、RAMの破壊によって異常動作が起きないような処理を行う(ステップ508)。
以上のような本実施形態によれば、プログラムをチェックする周期を任意に指定できるので、同じ制御装置において、異常動作の検出を優先させる高信頼度のシステムと性能優先のシステムを実現できる。
例えば、システムを、破壊と異常動作により致命的な影響を与える可能性がある非常に重要な制御装置として実現する場合には、チェック周期を短く設定し、異常が発生してそれを検出するまでの時間を短くすることにより信頼性の高い動作を保障する。一方、システムを、非常に高速な処理を求められるような性能を優先させるべき制御装置として実現する場合には、チェック周期を長く設定し、システムの性能を優先させる。
このように、チェック周期を変更できるようにすることにより、高い信頼性を必要とするシステムであっても、性能を優先するシステムであっても、いずれに対しても対応できる制御装置を構成できる。
本発明の保護制御装置の第4の実施形態を、図6の機能ブロック図を参照して説明する。本実施形態は、基本的には、図1に示した第1の実施形態と同様の構成を有している。但し、本実施形態は、プログラムチェックサムテーブル22にプログラムのID、開始アドレス、サイズ、チェックサム値に加えて、チェック周期を登録するロード指定選択機構7(請求項のチェック周期設定手段)を有している点が異なる。
このロード指定選択機構7は、プログラムチェックサムテーブル22におけるプログラム41ごとに、高信頼度を要求する機能か、処理性能を要求する機能かに応じて、異なるチェック周期を指定することができる。このチェック周期は、信頼度優先か性能優先かに応じて、入力装置によって入力された任意のものとすることができる。予めデフォルトで、信頼度優先のチェック周期と性能優先のチェック周期とが設定されたものを用いてもよい。
なお、高信頼度を要求する場合とは、例えば、システムの制御を行うケースが考えられる。一方、処理性能を要求する場合には、系統の状態を監視する目的で、大量のデータを計測するケースが考えられる。前者は、誤操作により電気が止まることを防止するため、高い信頼性が必要である。後者では計測そのもので電気が止まることは無いため、高信頼度で無くとも構わないが、大量のデータを処理するため、処理性能を求められるシステムとなる。
以上のような本実施形態の作用を説明する。
[プログラムのロード処理]
プログラムのロード処理は、基本的には、上記の第1の実施形態と同様であるが、次の点が異なる。すなわち、アプリケーションプログラム21から実行するプログラムを指定する時、ロード指定選択機構7に対して、高信頼度を要求する機能か、あるいは、処理性能を要求する機能かをパラメータとして与える。
ロード指定選択機構7では、ローダ51がプログラムをロードした後、プログラムチェックサムテーブル22に、プログラムのID、開始アドレス、サイズ、チェックサム値に加えて、パラメータに応じて異なるチェック周期を登録する。
[RAMサム値チェック処理]
RAMサム値チェック処理は、基本的には、上記の第3の実施形態と同様であるが、プログラムチェックサムテーブル22に登録されたチェック周期に従ったチェックを行うために、プログラムのコードをチェックする前に、コードをチェックするタイミングであるかどうかを比較する処理が追加される。このRAM値チェック処理の手順を、図7を参照して説明する。
すなわち、上述の通り、プログラムが動作している最中、タイマーハードウェア6から定期的に割り込みが発生して、OS5のタイマー処理部54が呼び出され、定期的にRAMサム値チェック処理部53が動作する。RAMサム値チェック処理部53は、予め設定された一定のスリープ時間を取得して(ステップ701)、その時間だけ実行を中止するスリープを行う(ステップ702)。そして、タイマー処理部54からスリープを解除され、チェック処理を開始する。
RAMサム値チェック処理部53は、最初に、プログラムチェックサムテーブル22にプログラムが登録されているかどうか検索を行う(ステップ703)。登録されていれば、現在時刻とプログラムチェックサムテーブル22に追加されたチェック周期とを比較して、コードをチェックするタイミングであるかどうかの比較を行う(ステップ705)。ここで、そのタイミングで無いならば(ステップ706)、プログラムチェックサムテーブル22の次のプログラムの検索へ移行する(ステップ703)。
一方、そのタイミングであれば(ステップ706)、プログラムチェックサムテーブル22の開始アドレスとサイズから、チェックサムを再計算し、プログラムチェックサムテーブル22に登録されたチェックサム値と比較する(ステップ707)。チェックサム値が一致すれば(ステップ708)、正常であるとして、次のプログラムの検索へ移行する(ステップ703)。
チェックサム値が一致しなければ(ステップ708)、RAM2の破壊があったと判断され、RAM破壊対策処理部52に通知される(ステップ709)。RAM破壊対策処理部52は、上述のように、プログラムコードの強制的な中断をするか、システムの再起動を行い、RAMの破壊によって異常動作が起きないような処理を行う(ステップ710)。
以上のような本実施形態によれば、システム単位でプログラムのチェック周期を長くしたり、短くするのではなく、プログラム毎に、RAM破壊をチェックする周期を、任意に設定することができる。
このため、信頼性の高い機能を持ったプログラムの場合は、コードをチェックする周期を短く設定し、性能を優先させる機能を持ったプログラムの場合は、コードをチェックする周期を長く設定することにより、同一の制御装置の中に重要な機能と性能を優先させた機能を混在することができる。これにより、信頼性が高く性能も向上させた制御装置を実現することが可能となる。
本発明の保護制御装置の第5の実施形態について以下に説明する。本実施形態は、基本的には、図6の第4の実施形態と同様の構成である。但し、本実施形態では、通常、OS5が有しているCPUの負荷状況の検出機能(以下、負荷状況検出部とする)を用いる。そして、検出された負荷状況に応じて、RAMサム値チェック処理部53に設定されたスリープ時間調整部が、予め設定されたスリープ時間を調整することにより、システムの負荷に応じて信頼性と性能のバランスをとる。
例えば、多くのOS5は、CPUをアプリケーションがどの位占有しているか検出する手段を持っており、所定のプログラムがOS5に要求を出してこれを読み出すことができる。これは負荷率と呼ばれるが、この場合には負荷率を負荷状況として扱う。また、CPUの温度を計測できるようなシステムの場合には、CPUの温度状態を負荷状況として検出することができる。この場合には、温度上昇に応じてスリープ時間を調整可能な構成となる。
以上のような本実施形態の作用を、図8を参照して説明する。なお、プログラムのロード処理は、上記の第1の実施形態と同様であるため、説明を省略する。本実施形態のRAMサム値チェック処理は、基本的には、図7の処理と同様であるが、スリープ時間を取得して、これを元にスリープする処理の間に、負荷状況に応じた係数をかける処理が追加されている。
すなわち、RAMサム値チェック処理部53は、予め設定されている一定のスリープ時間を取得する(ステップ801)。そして、スリープ時間調整部が、スリープを実行する前に、負荷状況検出部から検出される負荷状況を取得して、その割合に応じて、次のような係数をかける(ステップ802)。スリープを実行する時は、この係数をかけたスリープ時間だけスリープする(ステップ803)。例えば、負荷状況検出部が、負荷状況として、CPUの負荷率を検出して用いる場合には、以下のような係数とすることが考えられる。
負荷30%以下 係数=1
負荷30〜65% 係数=2
負荷65〜90% 係数=4
負荷90%以上 係数=4
これに加えて、負荷が90%を越えている場合は、プログラムのコードチェックそのものを行わないようにする(ステップ804)。負荷状態が90%の場合に、コードチェックを省略するのは、次のような理由による。負荷状態が90%ということは、例えば、多くのプログラムが動作しているため、CPUの処理能力の限界に近い状態にある。この時、本来の制御とは関係ないコードチェックを行うと、制御自体ができなくなる可能性があるため、制御処理に専念させる。保護制御のアプリケーションあるいはシステム構成毎に負荷の状況を計測し、90%未満は係数=1、90%以上は係数=4というように設定してもよい。
また、負荷状況検出部が、CPUの温度を計測できるようなCPUを使ったシステムにおいて、CPUの温度状態を監視し、温度上昇に応じてスリープ時間にかける係数を変える。一例として、CPUの動作温度範囲が20℃から100℃までとすると、スリープ時間にかける係数を次のように設定することが考えられる。
CPU温度が50℃未満 係数=1
CPU温度が50〜70℃ 係数=2
CPU温度が70〜95℃ 係数=4
CPU温度が95℃以上 係数=8
以上のように、CPUの負荷率が高くなったり、CPUの温度が高くなった場合には、CPUの負荷が高くなったとして、アプリケーションの処理そのものを優先して実行するようにする。これにより、CPUの負荷を減らし、CPUからの発熱を抑え、CPU温度を下げ、故障の確率を減らすことが可能となる。その後の処理は、図7と同様であるため、説明を省略する(ステップ805〜812)。
以上のような本実施形態によれば、システムの負荷が低い場合には全てのプログラムをチェックし、負荷が中程度になった場合には優先度の低いプログラムのチェックを行わず、最も信頼性を求められるプログラム(例えば、周期を短く設定したプログラム)のチェックだけを実施し、負荷が高くなった場合にはチェックを省略することができる。
これにより、システム負荷が低い時は最も信頼性が高く、システム負荷が上昇すると徐々に最低限の信頼性を確保しつつ処理を優先させることにより、動的に高い信頼性と高い性能を持ったシステムを構築することが可能となる。また、CPUの温度を監視した場合には、装置の故障の可能性を減らすことも可能となる。
本発明の保護制御装置の第6の実施形態について以下に説明する。本実施形態は、基本的には、図1の第1の実施形態と同様の構成である。但し、本実施形態では、図9に示すように、RAM2にロードされるアプリケーションが二重化したデータA1,A2を持っている。また、RAM2には、データチェック範囲テーブル23が記憶される。このデータチェック範囲テーブル23は、プログラムを識別するID、二重化したデータA1,A2の開始アドレス、データのサイズ、チェック周期から成るテーブルである。
そして、制御装置1は、データチェック範囲テーブル23におけるプログラム41ごとに、高信頼度を要求する機能か、処理性能を要求する機能かに応じて、異なるチェック周期を指定するRAMチェック範囲指定選択機構8を有している。このRAMチェック範囲指定選択機構8は、請求項のチェック周期設定手段として機能する。
また、OS5は、データ登録処理部55、データ範囲チェック処理部56を有している。データ登録処理部55は、データチェック範囲テーブル23に、プログラムのID、二重化したデータA1,A2の開始アドレス、データのサイズ、チェック周期を登録する手段である。データ範囲チェック処理部56は、データチェック範囲テーブル23を参照して、二重化されたデータA1,A2を比較して、破壊がないかどうかを確認する手段である。
以上のような本実施形態の作用を説明する。
[プログラムのロード処理]
プログラムのロード処理は、基本的には、上記の第1の実施形態と同様である。但し、本実施形態においては、アプリケーションプログラム21のコードが実行を開始すると、最初にRAMチェック範囲指定選択機構8を経由してOS5のデータ登録処理部55が呼び出される。RAMチェック範囲指定選択機構8は、パラメータとして指定された高信頼度を要求する機能か、あるいは処理性能を要求する機能かを受け取り、それに応じたチェック周期をデータ登録処理部55に渡す。
データ登録処理部55は、データA1とデータA2の開始アドレスと、サイズと、RAMチェック範囲指定選択機構8によって決められたチェック周期を、データチェック範囲テーブル23に登録する。続いて、アプリケーションは、それ本来の処理を開始し、データを書き込む時は、データA1とデータA2に同じデータを書き込む。
[データ範囲チェック処理]
本実施形態のデータ範囲チェック処理を、図10のフローチャートを参照して説明する。データ範囲チェック処理における負荷状況に応じて、チェックをする周期若しくはチェックの有無を決める処理は、上記の第5の実施形態と同様である。すなわち、データ範囲チェック処理部56が実行されると、スリープ時間を取得し(ステップ1001)、負荷状況により係数をかけてスリープ時間を決定する(ステップ1002)。
これに基づいてスリープを行い(ステップ1003)、続いて、現在の負荷を取得し、それが90%以上の場合は(ステップ1004)、チェック処理を実行せず、スリープ時間の取得、スリープ時間の係数演算、スリープの実行をする(ステップ1001〜1003)。負荷が90%未満の時は(ステップ1004)、データ範囲チェック処理部56によるチェック処理を行う。
まず、データチェック範囲テーブル23に登録されたデータが検索され(ステップ1005)、全てを処理した場合は(ステップ1006)、スリープ時間の取得、スリープ時間の係数演算、一定時間のスリープの処理に戻る(ステップ1001〜1003)。
また、データチェック範囲テーブル23に、まだ処理していないデータが登録されている場合は(ステップ1006)、タイマー処理部54によって、データ範囲チェック処理部56が呼び出され、データチェック範囲テーブル23に登録された各アプリケーションプログラムのデータA1とデータA2の範囲が比較される(ステップ1009)。
この処理は、テーブルのデータA1の開始アドレスとデータA1の開始アドレスから、そのテーブルに登録されたサイズ分を比較し、データが全て一致しているかそうでないかをチェックすることにより行う。データが一致していた場合は、データチェック範囲テーブル23に登録された次のデータの処理を行う(ステップ1005〜1009)。
データA1とデータA2に不一致があった場合には(ステップ1010)、RAM2の破壊があったと判断され、RAM破壊対策処理部52に通知される(ステップ1011)。RAM破壊対策処理部52は、上述のように、プログラムコードの強制的な中断をするか、システムの再起動を行い、RAMの破壊によって異常動作が起きないような処理を行う(ステップ1012)。
以上のような本実施形態によれば、コードのチェックサム値ではなく、二重化させたデータA1,A2の比較により、RAMの破壊を検出するので、データ破壊、データ化けによる異常動作や誤動作を未然に防止することが可能となる。
また、システムの重要度、各アプリケーションプログラムの重要度、システムの負荷状況により、RAM破壊によるデータ破壊、データ化けをチェックする周期を調整することにより、信頼性の高いシステムを構築することが可能となる。
[他の実施形態]
本発明は、上記の実施形態に限定されるものではない。例えば、設定値、設定時間、係数等の具体的な値は自由であり、特定の数値には限定されない。また、請求項では、プログラムのチェックサム値を計算するとしているが、チェックサム値の演算対象についても、プログラムのどの部分とするかは自由である。記憶する媒体の種類についても、プログラムを記憶する大容量記憶媒体、実行時に使用するメモリとして利用可能なものであればよい。また、上記の各実施形態を適宜組み合わせて実施することもできる。例えば、チェックサム値の比較によるチェックと、二重化したデータの比較によるチェックを選択的に若しくはともに行うことができる構成としてもよい。
本発明の保護制御装置の第1の実施形態を示すソフトウェアを含む機能ブロック図 図1の実施形態におけるプログラムロード処理の手順を示すフローチャート 図1の実施形態におけるRAMサム値チェック処理の手順を示すフローチャート 本発明の保護制御装置の第2の実施形態におけるソフトウェアを含む機能ブロック図 本発明の保護制御装置の第3の実施形態におけるRAMサム値チェック処理の手順を示すフローチャート 本発明の保護制御装置の第4の実施形態におけるソフトウェアを含む機能ブロック図 図6の実施形態におけるRAMサム値チェック処理の手順を示すフローチャート 本発明の保護制御装置の第5の実施形態におけるRAMサム値チェック処理の手順を示すフローチャート 本発明の保護制御装置の第6の実施形態におけるソフトウェアを含む機能ブロック図 図9の実施形態におけるデータチェック処理を示すソフトウェアを含む機能ブロック図 従来の保護制御装置の一例を示す機能ブロック図 従来の保護制御装置のプログラムロード処理の一例を示すフローチャート
符号の説明
1…制御装置
2…RAM
3…RAM破壊検出機構
4…ハードディスク
5…OS
6…タイマーハードウェア
7…ロード指定選択機構
8…チェック範囲指定選択機構
21…アプリケーションプログラム
22…プログラムチェックサムテーブル
23…データチェック範囲テーブル
41…プログラム
51…ローダ
51a…サム値演算部
51b…格納処理部
51c…再計算指示部
52…破壊対策処理部
53…サム値チェック処理部
54…タイマー処理部
55…データ登録処理部
56…データ範囲チェック処理部

Claims (11)

  1. プログラムを記憶する第1の記憶手段と、
    実行するプログラムを記憶するための第2の記憶手段と、
    前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードするロード手段と、
    前記ロード手段がプログラムをロードした時に、当該プログラムのチェックサム値を計算するサム値演算手段と、
    前記チェックサム値を記憶するサム値記憶手段と、
    前記サム値演算手段に対して、チェックサム値の再計算を指示する再計算指示手段と、
    前記サム値記憶手段に記憶されたチェックサム値と、再計算されたチェックサム値とを比較することにより、プログラム破壊による異常の有無をチェックするサム値チェック処理手段と、
    を有することを特徴とする保護制御装置。
  2. 前記プログラムに含まれるコードに対して、サム値チェック処理手段によるチェックを行うか否かを指定するチェック指定手段を有することを特徴とする請求項1記載の保護制御装置。
  3. サム値チェック処理手段によるチェック周期を設定するチェック周期設定手段を有することを特徴とする請求項1又は請求項2記載の保護制御装置。
  4. 装置の負荷状況を検出する負荷状況検出手段を有し、
    前記負荷状況検出手段によって検出された負荷状況に応じて、サム値チェック処理手段によるチェックを変更することを特徴とする請求項1〜3のいずれか1項に記載の保護制御装置。
  5. プログラムを記憶する第1の記憶手段と、
    実行するプログラムを記憶するための第2の記憶手段と、
    前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードするロード手段と、
    を有し、
    前記第2の記憶手段に記憶されるプログラムは、多重化されたデータを含み、
    多重化されたデータを比較することにより、プログラム破壊による異常の有無をチェックするデータチェック処理手段を有することを特徴とする保護制御装置。
  6. 前記データチェック処理手段によるチェック周期を設定するチェック周期設定手段を有することを特徴とする請求項5記載の保護制御装置。
  7. 装置の負荷状況を検出する負荷状況検出手段を有し、
    前記負荷状況検出手段によって検出された負荷状況に応じて、データチェック処理手段によるチェックを変更することを特徴とする請求項5又は請求項6に記載の保護制御装置。
  8. プログラムを記憶した第1の記憶手段及び第2の記憶手段を備えたコンピュータが、ロード手段、サム値演算手段、サム値記憶手段、再計算指示手段、サム値チェック処理手段を有し、
    前記ロード手段が、前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードし、
    前記サム値演算手段が、ロードする当該プログラムのチェックサム値を計算し、
    前記サム値記憶手段が、前記チェックサム値を記憶し、
    前記再計算指示手段が、前記サム値演算手段に対して、チェックサム値の再計算を指示し、
    前記サム値チェック処理手段が、前記サム値記憶手段に記憶されたチェックサム値と、再計算されたチェックサム値とを比較することにより、プログラム破壊による異常の有無をチェックすることを特徴とする保護制御方法。
  9. プログラムを記憶した第1の記憶手段及び第2の記憶手段を備えたコンピュータが、ロード手段、データチェック処理手段を有し、
    前記ロード手段が、前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードし、
    前記第2の記憶手段に記憶されるプログラムは、多重化されたデータを含み、
    前記データチェック処理手段が、多重化されたデータを比較することにより、プログラム破壊による異常の有無をチェックすることを特徴とする保護制御方法。
  10. プログラムを記憶した第1の記憶手段及び第2の記憶手段を備えたコンピュータにより実行可能なプログラムであって、
    前記コンピュータに、
    前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードする処理と、
    ロードする当該プログラムのチェックサム値を計算する処理と、
    前記チェックサム値を記憶する処理と、
    チェックサム値の再計算を指示する処理と、
    記憶されたチェックサム値と、再計算されたチェックサム値とを比較することにより、プログラム破壊による異常の有無をチェックする処理と、
    を実行させることを特徴とする保護制御プログラム。
  11. プログラムを記憶した第1の記憶手段及び第2の記憶手段を備えたコンピュータにより実行可能なプログラムであって、
    前記コンピュータに、
    前記第1の記憶手段から前記第2の記憶手段に、実行するプログラムをロードする処理と、
    前記第2の記憶手段に記憶されるプログラムを、多重化する処理と、
    多重化されたデータを比較することにより、プログラム破壊による異常の有無をチェックする処理と、
    を実行させることを特徴とする保護制御プログラム。
JP2006174328A 2006-06-23 2006-06-23 保護制御装置、保護制御方法及び保護制御プログラム Pending JP2008003940A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006174328A JP2008003940A (ja) 2006-06-23 2006-06-23 保護制御装置、保護制御方法及び保護制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006174328A JP2008003940A (ja) 2006-06-23 2006-06-23 保護制御装置、保護制御方法及び保護制御プログラム

Publications (1)

Publication Number Publication Date
JP2008003940A true JP2008003940A (ja) 2008-01-10

Family

ID=39008257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006174328A Pending JP2008003940A (ja) 2006-06-23 2006-06-23 保護制御装置、保護制御方法及び保護制御プログラム

Country Status (1)

Country Link
JP (1) JP2008003940A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221751A (ja) * 2010-04-08 2011-11-04 Hitachi Ltd 情報処理装置および情報処理方法
JP2020123137A (ja) * 2019-01-30 2020-08-13 ラピスセミコンダクタ株式会社 半導体装置、周辺装置制御システム、および周辺装置制御方法
CN113676795A (zh) * 2021-08-28 2021-11-19 芯河半导体科技(无锡)有限公司 基于gpon路由器的bosa自动校准及数据存储系统
CN116126576A (zh) * 2023-01-10 2023-05-16 奉加微电子(上海)有限公司 数据的校验方法、电子设备和存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221751A (ja) * 2010-04-08 2011-11-04 Hitachi Ltd 情報処理装置および情報処理方法
JP2020123137A (ja) * 2019-01-30 2020-08-13 ラピスセミコンダクタ株式会社 半導体装置、周辺装置制御システム、および周辺装置制御方法
JP7350488B2 (ja) 2019-01-30 2023-09-26 ラピスセミコンダクタ株式会社 周辺装置制御システム、および周辺装置制御方法
CN113676795A (zh) * 2021-08-28 2021-11-19 芯河半导体科技(无锡)有限公司 基于gpon路由器的bosa自动校准及数据存储系统
CN113676795B (zh) * 2021-08-28 2024-03-05 芯河半导体科技(无锡)有限公司 基于gpon路由器的bosa自动校准及数据存储系统
CN116126576A (zh) * 2023-01-10 2023-05-16 奉加微电子(上海)有限公司 数据的校验方法、电子设备和存储介质

Similar Documents

Publication Publication Date Title
JP4060322B2 (ja) アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体
US8583960B2 (en) Processor device and program
JP5093259B2 (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
US7882277B2 (en) Processor, data transfer unit, multicore processor system
US10789184B2 (en) Vehicle control device
JP5359601B2 (ja) ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法
JP2013225208A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2008003940A (ja) 保護制御装置、保護制御方法及び保護制御プログラム
JP5035227B2 (ja) 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム
JP2016066139A (ja) 車両制御装置
JP2000322264A (ja) 電子機器
JP2004338883A (ja) エレベーターの制御装置
JP5561791B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP6218652B2 (ja) 計算機、障害処理方法及びプログラム
US9176806B2 (en) Computer and memory inspection method
US10540222B2 (en) Data access device and access error notification method
JP5978873B2 (ja) 電子制御装置
JP5095241B2 (ja) データ処理装置及びプログラム起動方法
JP5018140B2 (ja) マルチプロセッサシステム、タスクスケジューリング方法およびタスクスケジューリングプログラム
JP7091853B2 (ja) 電子制御装置
JP2019160080A (ja) 制御装置および異常検出方法
JP5316148B2 (ja) 情報処理装置およびデータ修復方法
JP6252321B2 (ja) メモリ制御方法及び情報処理装置
JP2005284925A (ja) コンピュータシステムおよびプログラム更新方法
JP2009093393A (ja) データ処理装置及びデータ処理装置の自己診断方法