(57)【特許請求の範囲】
【請求項１】
データの完全性を保守するための方法であって、
ソフトウェアアプリケーションが、揮発性メモリ内のデータブロック上で物理的なチェックサム計算を行なうことによってチェックサムデータを生成する、コンピュータによって実現されるステップと、
前記ソフトウェアアプリケーションが前記チェックサムデータを生成した後、かつ、前記生成されたチェックサムデータに基づく任意の物理的なチェックサム検証の実行の前に、前記ソフトウェアアプリケーションが、前記データブロックの完全性を検証するために、データブロック内に含まれるデータ上で論理チェックを行なう、コンピュータによって実現されるステップと、
データブロックが前記論理チェックをパスするならば、前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませる、コンピュータによって実現されるステップとを含む、方法。
【請求項２】
チェックサムデータを生成するステップと論理チェックを行なうステップとは、前記データブロックを不揮発性メモリに書込む要求に応答して行なわれる、請求項１に記載の方法。
【請求項３】
前記ソフトウェアアプリケーションが、前記データブロックを不揮発性メモリに書込むステップに関連して、チェックサムデータを不揮発性メモリに書込むことを引き起こすステップをさらに含む、請求項１に記載の方法。
【請求項４】
データブロックを不揮発性メモリに書込んだ後、
前記ソフトウェアアプリケーションが、データブロックおよび前記チェックサムデータを不揮発性メモリから読出すステップと、
前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記チェックサムデータに基づいて前記データブロック上で物理的なチェックサム検証手順を行なうステップとをさらに含み、物理的なチェックサム検証手順は、データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかを表わす、請求項３に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませる前に、前記ソフトウェアアプリケーションが、前記データブロックに関連付けて前記チェックサムデータを格納するステップをさらに含み、
前記データブロックを不揮発メモリに書込ませることは、データブロックを不揮発性メモリに書込む前に１つ以上の物理的なチェックサム検証手順の実行を引き起こし、
１つ以上の物理的なチェックサム検証手順を引き起こすことは、前記データブロックに関連付けられるソフトウェアアプリケーションによって格納される前記チェックサムデータに基づいており、
１つ以上の物理的なチェックサム検証手順は、前記チェックサムデータの生成後にデータブロックが破損したかを表わす、請求項１に記載の方法。
【請求項６】
前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記データブロック上で行われる物理的なチェックサム検証手順に基づいて、前記ソフトウェアアプリケーションが、前記データブロック内に含まれるデータ上で追加の論理チェックを行なうことなく、前記データブロック内に含まれるデータの論理的な完全性を検証するステップをさらに含む、請求項４に記載の方法。
【請求項７】
前記データブロック上で物理的なチェックサム検証手順を行なうステップは、前記ソフトウェアアプリケーションが、前記データブロック上で物理的なチェックサム検証手順を行なうステップを含む、請求項４に記載の方法。
【請求項８】
前記１つ以上の物理的なチェックサム検証手順は、前記ソフトウェアアプリケーション以外の１つ以上の要素によって行なわれ、前記ソフトウェアアプリケーション以外の前記１つ以上の要素は、ボリュームマネジャーと、ディスクドライバと、ディスクコントローラと、ディスクアレイとを少なくとも含む一組の要素から選択される、請求項５に記載の方法。
【請求項９】
前記データブロック上で物理的なチェックサム検証手順を行なった後に、データブロックをデータブロックのバックアップバージョンとして記憶するステップをさらに含み、データブロックのバックアップバージョンは、前記不揮発性メモリ内の前記データブロックとは別に維持される、請求項４に記載の方法。
【請求項１０】
データの完全性を保守するための装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な媒体であって、前記プログラムは前記コンピュータのプロセッサに、
ソフトウェアアプリケーションが、揮発性メモリ内のデータブロック上で物理的なチェックサム計算を行なうことによってチェックサムデータを生成するステップと、
前記ソフトウェアアプリケーションが前記チェックサムデータを生成した後、かつ、前記生成されたチェックサムデータに基づく任意の物理的なチェックサム検証の実行の前に、前記ソフトウェアアプリケーションが、前記データブロックの完全性を検証するために、データブロック内に含まれるデータ上で論理チェックを行なうステップと、
データブロックが前記論理チェックをパスするならば、前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませるステップとを実行させる、コンピュータ読み取り可能な記録媒体。
【請求項１１】
チェックサムデータを生成するステップと論理チェックを行なうステップとは、前記データブロックを不揮発性メモリに書込む要求に応答して行なわれる、請求項１０に記載のコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記プログラムは、前記プロセッサに、データブロックを不揮発性メモリに書込むステップに関連して、チェックサムデータを不揮発性メモリに書込むステップを実行させる、請求項１０に記載のコンピュータ読み取り可能な記録媒体。
【請求項１３】
データブロックを不揮発性メモリに書込んだ後、
データブロックおよび前記チェックサムデータを不揮発性メモリから読出すステップと、
前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記チェックサムデータに基づいて前記データブロック上で物理的なチェックサム検証手順を行なうステップとをさらに含み、物理的なチェックサム検証手順は、データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかを表わす、請求項１２に記載のコンピュータ読み取り可能な記録媒体。
【請求項１４】
前記プログラムは、前記プロセッサに、データブロックを不揮発性メモリに書込ませる前に、前記ソフトウェアアプリケーションによって、前記データブロックに関連付けて前記チェックサムデータを格納するステップを実行させ、
前記データブロックを不揮発メモリに書込ませることは、データブロックを不揮発性メモリに書込む前に１つ以上の物理的なチェックサム検証手順の実行を引き起こし、
１つ以上の物理的なチェックサム検証手順を引き起こすことは、前記データブロックに関連付けられるソフトウェアアプリケーションによって格納される前記チェックサムデータに基づいており、
１つ以上の物理的なチェックサム検証手順は、前記チェックサムデータの生成後にデータブロックが破損したかを表わす、請求項１０に記載のコンピュータ読み取り可能な記録媒体。
【請求項１５】
前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記データブロック上で行われる物理的なチェックサム検証手順に基づいて、前記ソフトウェアアプリケーションが、前記データブロック内に含まれるデータ上で追加の論理チェックを行なうことなく、前記データブロック内に含まれるデータの論理的な完全性を検証するステップをさらに含む、請求項１３に記載のコンピュータ読み取り可能な記録媒体。
【請求項１６】
前記データブロック上で物理的なチェックサム検証手順を行なうステップは、前記ソフトウェアアプリケーションが、前記データブロック上で物理的なチェックサム検証手順を行なうステップを含む、請求項１３に記載のコンピュータ読み取り可能な記録媒体。
【請求項１７】
前記１つ以上の物理的なチェックサム検証手順は、前記ソフトウェアアプリケーション以外の１つ以上の要素によって行なわれ、前記ソフトウェアアプリケーション以外の前記１つ以上の要素は、ボリュームマネジャーと、ディスクドライバと、ディスクコントローラと、ディスクアレイとを少なくとも含む一組の要素から選択される、請求項１４に記載のコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記データブロック上で物理的なチェックサム検証手順を行なった後に、データブロックをデータブロックのバックアップバージョンとして記憶するステップをさらに含み、データブロックのバックアップバージョンは、前記不揮発性メモリ内の前記データブロックとは別に維持される、請求項１３に記載のコンピュータ読み取り可能な記録媒体。
【請求項１９】
データの完全性を保守するための装置であって、
揮発性メモリと、
不揮発性メモリと、
ソフトウェアアプリケーションによって、前記揮発性メモリ内のデータブロック上で物理的なチェックサム計算を行なうことによってチェックサムデータを生成するための生成手段と、
前記チェックサムデータが前記ソフトウェアアプリケーションによって生成された後、かつ、前記生成されたチェックサムデータに基づく任意の物理的なチェックサム検証の実行の前に、前記データブロックの完全性を検証するために、前記ソフトウェアアプリケーションによって、前記データブロック内に含まれるデータ上で論理チェックを行なうためのチェック手段と、
前記データブロックが前記論理チェックをパスすると、前記ソフトウェアアプリケーションによって、前記データブロックを前記不揮発性メモリに書込ませるための手段とを備
える、装置。
【請求項２０】
前記生成手段は、前記データブロックを不揮発性メモリに書込む要求に応答して、前記チェックサムデータを生成する、請求項１９に記載の装置。
【請求項２１】
前記データブロックを前記不揮発性メモリに書き込むことに関連して、前記チェックサムデータを前記不揮発性メモリに書き込むための手段をさらに備える、請求項１９に記載の装置。
【請求項２２】
前記データブロックを前記不揮発性メモリに書込んだ後に、前記データブロックおよび前記チェックサムデータを前記不揮発性メモリから読み出すための手段と、
前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記チェックサムデータに基づいて前記データブロック上で物理的なチェックサム検証手順を行なうための検証手段とをさらに備え、
前記チェックサム検証手順は、前記データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかを表わす、請求項１９に記載の装置。
【請求項２３】
前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませる前に、前記ソフトウェアアプリケーションが、前記データブロックに関連付けて前記チェックサムデータを格納するための手段をさらに備え、
前記データブロックを不揮発メモリに書込ませることは、データブロックを不揮発性メモリに書込む前に１つ以上の物理的なチェックサム検証手順の実行を引き起こし、
１つ以上の物理的なチェックサム検証手順を引き起こすことは、前記データブロックに関連付けられるソフトウェアアプリケーションによって格納される前記チェックサムデータに基づいており、
１つ以上の物理的なチェックサム検証手順は、前記チェックサムデータの生成後にデータブロックが破損したかを表わす、請求項１９に記載の装置。
【請求項２４】
前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記データブロック上で行われる物理的なチェックサム検証手順に基づいて、前記ソフトウェアアプリケーションは、前記データブロック内に含まれるデータ上で追加の論理チェックを行なうことなく、前記データブロック内に含まれるデータの論理的な完全性を検証する、請求項２２に記載の装置。
【請求項２５】
前記検証手段は、前記ソフトウェアアプリケーションを実行することによって、前記データブロック上で物理的なチェックサム検証手順を行なう、請求項２２に記載の装置。
【請求項２６】
前記１つ以上の物理的なチェックサム検証手順は、前記ソフトウェアアプリケーション以外の１つ以上の要素によって行なわれ、前記ソフトウェアアプリケーション以外の前記１つ以上の要素は、ボリュームマネジャーと、ディスクドライバと、ディスクコントローラと、ディスクアレイとを少なくとも含む一組の要素から選択される、請求項２３に記載の装置。
【請求項２７】
前記データブロック上で物理的なチェックサム検証手順を行なった後に、データブロックをデータブロックのバックアップバージョンとして記憶するための手段をさらに含み、データブロックのバックアップバージョンは、前記不揮発性メモリ内の前記データブロックとは別に維持される、請求項２２に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般に、コンピュータアプリケーションにおけるデータの完全性に関し、より具体的には、データ完全性検証メカニズムに関する。
【背景技術】
【０００２】
社会はコンピュータに非常に大きく依存するようになった。今日の世界では、コンピュータは、ファイナンシャルプラニングから企業の給料支払システム、航空機誘導装置に至るまで、あらゆることのために用いられる。コンピュータシステムが広く用いられるため、データ破損は、ほとんどの個人に影響を及ぼし得る問題であり、コンピュータハードウェア産業とコンピュータソフトウェア産業との両方を悩まし続ける問題である。
【０００３】
たとえば、データベースアプリケーション等のソフトウェアアプリケーションは、それらのデータの完全性の保守に非常に大きく依存している。データベースアプリケーションに関連するデータが破損すると、ユーザは、正確ではない結果を、場合によってはシステムクラッシュを経験する恐れがある。
【０００４】
データ破損は、さまざまな理由により、さまざまな異なるソースから結果として起こり得る。たとえば、データベースアプリケーションにおけるソフトウェア「バグ」それ自体によって、拒絶されるような社会保障番号または無効なポインタアドレス等の無効なデータが表またはデータ構造に記憶され得る。加えて、オペレーティングシステムそのものを含んだ、同じコンピュータシステム上で実行される他のプログラムが、特定の変数、表、データ構造、または他の同様の種類の情報に誤って上書きする恐れがあり、したがって、ある特定のソフトウェアアプリケーションに関連したデータを破損する。さらに、アプリケーションがデータブロックをディスクに書込むとき、データは、通例、多くのソフトウェアおよびハードウェア中間層を通ってから実際にディスクに記憶される。したがって、データブロックがディスクに書込まれる前に、またはそれがディスクに書込まれているときに、データブロックが破損するさらなる恐れさえもある。
【０００５】
たとえば、データブロックをディスクに書込むとき、データは、ソフトウェアアプリケーションからボリュームマネージャへと、ボリュームマネージャからデバイスドライバへと、デバイスドライバからディスクコントローラへと、さらにはディスクコントローラからディスクアレイへと進んでディスクに記憶され得る。データブロックが後にディスクから読出されるとき、データがソフトウェアアプリケーションによって用いられ得る前に、データは再び同じソフトウェアおよびハードウェア層セットを通らなければならない。したがって、これらの層のいずれかにおけるバグによって、データが破損する恐れがある。加えて、ディスクが不安定であって、したがって、データがディスクに書込まれた後にエラーがデータに導入されると、たとえ他の層がデータを誤って変更しなくても、データの完全性が損なわれ得る。
【０００６】
従来、データロッキング方式は、ある特定のアプリケーションに関連するデータの完全性を保守するための１つの方法を提供する。他のアプリケーションによるアクセスを拒絶するためにデータをロッキングすることによって、オペレーティングシステムは、一般に、あるアプリケーションに関連したデータが別のアプリケーションによって上書きされないこと、または破損しないことを保証することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来のロッキング方式には、ディスクドライバまたは他のローレベルファームウェアにおける媒体の故障またはバグ等の問題に対する備えがない。さらに、オペレーティングシステムそのものが、データが誤って上書きおよび／または破損されることを引き起こすバグを含む恐れもある。したがって、従来のロッキング方式は、データの完全性が常に保守されること、または破損データが決してディスクに記憶されないことを堅実に保証することはできない。
【０００８】
ディスクに記憶された破損データを識別するための１つの方法は、論理チェックおよび物理的なチェックサムを用いることによる。論理チェックは、データを、データ値に関連するであろうと予想される特定の予め定められた特徴と比較することによってデータの完全性が判断されるメカニズムである。たとえば、表Ａ内の列が、表Ｂのある特定の行にインデックスをつけるべき１組のポインタを含み、ポインタのいずれかが、表Ｂの行に関連しないアドレス値を有するならば、そのポインタは、破損アドレス値を有するものとして識別され得る。同様に、表内のある特定の列が従業員の電話番号を記憶するように構成され、その列のいずれかの行内の値がネガティブであると判断されるならば、その値は破損していると識別され得る。
【０００９】
図１は、アプリケーションによってディスクから取出されるデータの完全性を判断するための１つの方法を例示する。この例では、ユーザは、アプリケーション１０４と対話してアプリケーション１０４に関連するデータのブロックを生成および／または更新した。たとえば、データブロックは、特定のデータベース表のための更新された情報を含み得る。データブロックをディスクに記憶するために、論理チェック１２０が、まずデータ上で実行されてその完全性を検証する。次に、物理的なチェックサム計算１２２が行なわれてチェックサム値を計算し、データブロック内に記憶する。物理的なチェックサム計算１２２は、データがディスクから読出されたときに、データブロックのビットパターンに対する後続の変更が識別され得るメカニズムを提供する。たとえば、チェックサム値は、計算され、データブロック内に記憶され得、排他的論理和（ＸＯＲ）演算等の論理演算がデータブロック内のビットに適用されると、ゼロ等のチェックサム定数が計算される。その後、データブロックは、ディスクコントローラ１０６に送られ、次に、場合によってはネットワーク１０８を介してディスクコントローラ１０６からディスクアレイ１１０へと送られ、１つ以上のディスク１１４−１１８に記憶される。
【００１０】
その後、アプリケーション１０４がデータブロック内に含まれる更新情報を再び必要とするならば、それがアプリケーション１０４によって用いられ得る前に、データブロックは、いくつかの層を（つまり、１つ以上のディスク１１４−１１８からディスクアレイ１１０へと、ディスクアレイ１１０からネットワーク１０８を通してディスクコントローラ１０６へと）再び進まなければならない。データブロックの完全性を判断するために、物理的なチェックサム検証プロセスが行なわれて、データブロックが依然として正しいチェックサム定数値を有することが検証される。データブロックが依然として正しいチェックサム定数値を有すると判断されると、論理チェック１２６がデータ上で行なわれて、論理チェック１２０が行なわれた時間と、物理的なチェックサム計算１２２が行なわれた時間との間でデータブロックが破損しなかったことが検証される。
【００１１】
しかし、データブロックの完全性を検証するための、この説明された方法に関する欠点は、データブロック内の情報上で論理チェックを行なうことが、かなりの量の時間およびリソース（オーバーヘッド）を必要とすることである。多数のデータブロックが連続的に書込まれ、ディスクから読出されることを必要とする多くのアプリケーション、たとえば、データベースアプリケーションにとって、追加的なオーバーヘッドは、アプリケーションの効率性および応答時間に大きな影響を及ぼし得る。
【００１２】
加えて、説明された方法に関する別の欠点は、それによって破損データがディスクに書込まれることが可能になってしまうことである。たとえば、論理チェック１２０が行なわれた後にデータが破損した場合、データは、物理的なチェックサム計算１２２が行なわれた後に依然としてディスクに書込まれる。しかし、多くのアプリケーション、具体的には、ノントランザクションベースのアプリケーションにとって、破損データをディスクに書込むことは、破局的な効果を持つ恐れがある。なぜならば、無効な変更を容易にバックアウトできないためである。
【００１３】
上に基づくと、データの記憶およびディスクからのデータの取出に通例付随するオーバーヘッドを減じるためのメカニズムが必要とされる。
【００１４】
破損データがディスクに書込まれる恐れを減じるメカニズムも必要とされる。
加えて、データがディスク上の正しい領域に書込まれる可能性を高めるメカニズムも必要とされる。
【課題を解決するための手段】
【００１５】
この発明の１つの局面に従うと、データの完全性を保守するための技術が提供される。１つの技術によると、物理的なチェックサム計算がデータブロック上で行なわれる。物理的なチェックサム計算を行なった後、データブロック内に含まれるデータ上で論理チェックが行われる。データブロックが論理チェックをパスすると、データブロックは不揮発性メモリに書込まれ得る。
【００１６】
１つの特徴によると、データブロックが不揮発性メモリに書込まれるか、またはそこから読出されるとき、物理的なチェックサム検証手順がデータブロック上で行なわれて、データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかが判断される。物理的なチェックサム検証手順は、ある特定のアプリケーションの要件に応じて、記憶装置または他の場所で行なわれ得る。
【００１７】
この発明は、コンピュータ読出可能な媒体、搬送波で具体化されるコンピュータデータ信号、および上述のステップを行なうように構成される装置も含む。他の特徴および局面は、以下の説明および添付の請求項から明らかとなるだろう。
【００１８】
この発明は、同じ参照番号が同様の要素を示す添付の図において、限定としてではなく、例として示される。
【図面の簡単な説明】
【００１９】
【図１】アプリケーションによってディスクから取出されるデータの完全性を判断するための従来の方法を例示するブロック図である。
【図２】この発明が用いられ得るデータ完全性確認メカニズムのブロック図である。
【図３Ａ】この発明が用いられ得る多レベルデータ検証システムのブロック図である。
【図３Ｂ】この発明が用いられ得る別のデータ検証システムのブロック図である。
【図４Ａ】不揮発性メモリに書込まれるべきデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。
【図４Ｂ】不揮発性メモリから読出されるデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。
【図５】ブロックが不揮発性メモリに書込まれるべき位置を検証するためのメカニズムを例示する図である。
【図６】この発明が用いられ得るバックアップシステムのブロック図である。
【図７】実施例が実施され得るコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００２０】
アプリケーションに関連したデータの完全性を確認するためのデータ確認メカニズムが提供される。以下の説明では、この発明の完全な理解を提供するために、説明上、多くの具体的な詳細事項が示される。しかし、この発明は、これらの具体的な詳細事項なしに実施され得ることは当業者には明らかであろう。他の例では、この発明を不必要に曖昧なものにしないために、周知の構造および装置がブロック図の形で示される。
【００２１】
動作状況
アプリケーションに関連したデータの完全性を確認するためのデータ確認メカニズムが提供される。１つの実施例では、データブロックをディスクに書込む前に、物理的なチェックサム計算プロセスがデータブロック上で行なわれる。物理的なチェックサム計算プロセスは、後続の物理的なチェックサム検証プロセスが行なわれてデータブロックが後に変更されたかが判断され得るメカニズムを提供する。たとえば、物理的なチェックサム計算プロセスは、データブロック内のデータ上で論理演算を行なってチェックサム値を決定することと、チェックサム値をデータブロックに挿入することとを含み得、したがって、一定のチェックサム値をデータブロックと関連させる。一方で、物理的なチェックサム検証プロセスは、データブロック上で論理演算を後に行なうことと、結果を予め計算されたチェックサムと比較してデータブロックが依然として正しい一定のチェックサム値を有することを検証することとを含み得る。
【００２２】
物理的なチェックサム計算プロセスが行なわれた後、データブロックをディスクに記憶する前に、論理チェックがデータブロック内のデータ上で行なわれて、特定の予め定められた特徴がデータ値に関連していることを検証する。論理チェックによって、特定の予め定められた特徴がデータに関連していることが示される場合、その場合にのみ、データブロックはディスクに書込まれ得る。その後は、物理的なチェックサム計算プロセスが論理チェックの前に行なわれたため、データブロックがアプリケーションによって再び必要とされる場合、物理的なチェックサム検証プロセスのみが必要とされてデータブロックの完全性を検証する。
【００２３】
図２は、この発明が用いられ得るデータ確認メカニズム２００のブロック図を示す。一般に、データ確認メカニズム２００は、ホストコンピュータ２０２、ネットワーク１０８、およびデータ記憶装置１１２を含む。
【００２４】
ネットワーク１０８は、ホスト２０２とデータ記憶装置１１２との間の通信のための通信媒体を提供するネットワークシステムである。ネットワーク１０８は、さまざまな異なる形の通信媒体を表わし得るが、これらは、直列または並列媒体接続、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネットとして知られているグローバルパケット交換網、ワイヤレス送信媒体、またはパーティシパント間で情報を交換するためのいずれかの他の媒体を含むが、これらに限定されているわけではない。ネットワーク１０８は、ＳＣＳＩまたはファイバチャネル等の通信プロトコルを用いるディスクアレイ１００への直接のケーブル接続、または異なるネットワーク媒体の組合せ、たとえば、ディスクコントローラ１０６とディスクアレイ１１０とが通信することを可能にするように構成されたワイヤレス通信ネットワークとＬＡＮとの組合せを表わす。
【００２５】
データ記憶装置１１２は、アプリケーション２０４のためのデータを記憶するために用いられる１つ以上の不揮発性メモリ構成要素を表わす。データ記憶装置１１２は、特定のいずれかの種類の記憶媒体に限定されない。特に、ここで用いられるような不揮発性メモリという用語は、情報を持続的に記憶するために用いられ得るいずれの種類の持続的な記
憶装置または持続的な媒体として広く定義される。この例では、データ記憶装置１１２は、ディスクアレイユニット２１０および１つ以上のディスク１１４−１１８を含む、独立したディスクまたはドライブの重複したアレイ（Redundant Array of Independent Disks
or Drives）（ＲＡＩＤ）を表わす。
【００２６】
ホストコンピュータ２０２は、コンピュータであるか、または１つ以上のコンピュータシステム内で共働または実行するハードウェアまたはソフトウェア構成要素またはプロセスのグループである。この例では、ホストコンピュータ２０２は、アプリケーション２０４、物理的なチェックサム計算プロセス２２０、論理チェックプロセス２２２、論理的なチェックサム検証プロセス２２４、およびディスクコントローラ２０６を含む。
【００２７】
アプリケーション２０４は、データを操作し、さらにはデータを記憶し、データ記憶装置１１２からデータを取出すように構成されるさまざまな異なるソフトウェアアプリケーションを表わし得る。たとえば、アプリケーション２０４は、データベースアプリケーション、ワードプロセシングアプリケーション、ＣＡＤ設計アプリケーション、またはファイナンシャルプラニングアプリケーションを含むが、それらに限定されていない種々のアプリケーションを表わし得る。物理的なチェックサム計算プロセス２２０、論理チェックプロセス２２２、および物理的なチェックサム検証プロセス２２４は、アプリケーション２０４内の埋込まれたコードを表わし得るか、またはアプリケーション２０４に静的または動的にリンクされ得る別個のプロセス、タスク、またはプログラムであり得る。
【００２８】
１つの実施例では、データブロックがデータ記憶装置１１２に書込まれる前に、アプリケーション２０４は、物理的なチェックサム計算プロセス２２０を開始してデータブロックへの挿入のためのチェックサム値を生成する。１つの実施例では、チェックサム値を生成するために、ＸＯＲまたはＡＤＤ演算等の論理演算が、データブロック内に含まれるデータ上で行なわれる。論理演算を行なうことから結果として得られるベクトル、および所望のチェックサム定数に基づいて、チェックサム値が、選択され、データブロックに挿入される。その後、データブロックの完全性は、データブロック上で同じ論理演算を行ない、結果をデータブロックに記憶されたチェックサム値と比較することによって、判断され得る。
【００２９】
物理的なチェックサム計算プロセス２２０が行なわれた後、論理チェック２２２がデータブロック内のデータ上で行なわれて、特定の予め定められた特徴がデータ値と関連していることが検証される。論理チェックによって、特定の予め定められた特徴がデータに関連していないことが表わされると、リカバリシーケンスが行なわれてデータブロック内の正確でない、または破損したデータを訂正および／または除去し得る。
【００３０】
代替的には、論理チェックによって、特定の予め定められた特徴がデータと関連していることが表わされると、データブロックは、次に、ディスクコントローラ２０６に送られる。ディスクコントローラ２０６は、次に、ネットワーク１０８を介してディスクアレイユニット２１０と通信して、データブロックを１つ以上のディスク１１４−１１８に記憶する。
【００３１】
その後、データブロックがアプリケーション２０４によって再び必要とされると、データブロックは、データ記憶装置１１２から取出され、ディスクコントローラ２０６に送られる。次に、物理的なチェックサム検証プロセス２２４がデータブロック上で行なわれて、物理的なチェックサム計算プロセス２２０が行なわれてからデータが破損していないことが検証される。１つの実施例では、物理的なチェックサム検証プロセス２２４を実行するために、物理的なチェックサム計算プロセス２２０が用いる論理演算がデータブロック上で行なわれる。論理演算の結果は、次に、データブロックに記憶されたチェックサムと
比較されて、物理的なチェックサム計算プロセス２２０が行なわれてからデータブロックの完全性が保守されているかが判断される。有利なことには、物理的なチェックサム計算２２０は論理チェック２２２の前に行なわれたため、データブロックの完全性を検証するために追加の論理チェックは必要とされない。したがって、従来のシステムでは通例必要とされるデータ取出オーバーヘッドが、大きく減じられ得る。
【００３２】
多レベルデータ検証
特定の実施例では、データブロックの完全性は、ディスクへの記憶の前に多数のレベルで検証される。図３Ａは、データブロックの完全性がディスクへの記憶の前に多数のレベルで検証される多レベルデータ検証システムの例を示す。図３Ａは、図２と同様であり、したがって、同様の構成要素には同じ番号が付けられた。
【００３３】
この例では、オペレーティングシステム３０６は、ボリュームマネージャ３０２およびデバイスドライバ３０４を含む。ボリュームマネージャ３０２は、アプリケーション２０４等のアプリケーションプログラムとインターフェイスをとるように、さらには不揮発性メモリ（ディスク１１４−１１８）へのデータの記憶および不揮発性メモリ（ディスク１１４−１１８）からのデータの取出を管理するように構成される。デバイスドライバ３０４は、オペレーティングシステム３０６とディスクコントローラ２０６との間で通信するためのインターフェイスを提供する。１つの実施例では、ボリュームマネージャ３０２および／またはデバイスドライバ３０４は、物理的なチェックサム検証プロセスを実行して、物理的なチェックサム計算プロセス２２０（たとえば、物理的なチェックサム検証手順２２４）を行なってからデータブロックが破損していないことを検証するように構成される。アプリケーションプロセス３０８とディスク１１４−１１８との間の異なる処理レベルで物理的なチェックサム検証プロセスを行なうことによって、データが実際にディスクに書込まれる前に、データの完全性をさらに検証することができる。加えて、説明される多レベル検証方式は、データがどこで破損したかを識別する助けとなり得る。なぜならば、多レベル検証テストは、データがどこで破損したのかを特定する助けとなるためである。さらに、特定の実施例では、多レベル検証方式は、破損データを、それがディスクに書込まれる前に検出し、それがディスクに書込まれる前に破損データを訂正する能力をアプリケーションまたは他のプロセスに提供するように構成される。たとえば、破損していると識別されたデータがディスクに書込まれ得ると、次にアプリケーションが破損データをディスクから読出す時、それは、何日か後、何ヵ月か後、さらには何年か後でさえあり得るが、アプリケーションは、破損データを訂正するための情報および／または能力を有さないかもしれない。しかし、破損していると識別されたデータをディスクに書込ませないことによって、アプリケーションが破損データをディスクから読出す恐れを減じる検証方式が提供される。
【００３４】
特定の実施例では、多レベルデータ検証システムは、アプリケーション２０４とディスク１１４−１１８との間の経路に沿った他の構成要素でのデータ完全性チェックの実行を含み得る。たとえば、１つの実施例では、ディスクコントローラ２０６およびディスクアレイ２１０は、アプリケーション２０４に関連したデータ上でデータ完全性チェックを行なうように構成され得る。たとえば、特定の実施例では、ディスクコントローラ２０６は、物理的なチェックサム検証プロセスを実行して、物理的なチェックサム計算プロセス２２０が行なわれてからデータブロックが破損していないことを検証するように構成される。ディスクコントローラ２０６で物理的なチェックサム検証プロセスを行なうことによって、検証システムは、アプリケーション２０４以外の構成要素、たとえば、オペレーティングシステム３０６が、データの完全性を破損しなかったことを検証することができる。加えて、物理的なチェックサム検証プロセスを実行するようにディスクアレイ２１０を構成することによって、検証システムは、ネットワーク１０８を含む他のいずれかの構成要素によってデータが破損されなかったことを検証することができる。さらに、物理的なチ
ェックサム検証プロセスを実行するようにディスクアレイ２１０を構成することによって、検証システムは、破損データがディスク１１４−１１８上に記憶される恐れを大きく減じることができる。
【００３５】
たとえば、図３Ｂは、データブロックをディスクに記憶する前に物理的なチェックサム検証手順を行なうことによってデータブロックの完全性が検証される多レベルデータ検証システム３５０の例を示す。図３Ｂは、図３Ａと同様であるため、同様の構成要素には同じ番号が付けられる。この例では、アプリケーション２０４が物理的なチェックサム計算２２０を行なった後、データブロック内のデータ上で論理チェックを行なうことなく、データブロックは、ディスクコントローラ２０６に送られる。ディスクコントローラ２０６は、次に、データブロックをネットワーク１０８を介してディスクアレイ２１０に送って、データ記憶装置１１２内に記憶する。この例では、データブロックの受信時に、ディスクアレイ２１０は物理的なチェックサム検証プロセス３５２を行なって、物理的なチェックサム計算２２０がアプリケーション２０４によって行なわれてからデータが破損していないことが検証される。データブロックが破損していないと判断されると、データブロックはディスクに書込まれる。代替的には、データブロックが破損していたと判断されると、誤りフラグがセットされ、データブロックはディスクに書込まれない。物理的なチェックサム検証プロセスをディスクアレイ２１０で行なうことによって、検証システム３５０は、データブロックをディスクに記憶する直前にデータの完全性を検証することができる。特に、検証システム３５０は、データブロックをディスクに記憶する前に、アプリケーション２０４以外の構成要素、たとえば、オペレーティングシステム３０６またはディスクコントローラ２０６がデータを破損しなかったことを検証することができる。
【００３６】
加えて、上で図３Ａにおいて説明されたように、追加のデータ完全性チェックは、アプリケーション２０４とディスク１１４−１１８との間の経路に沿った他の構成要素において行なわれ得る。たとえば、ボリュームマネージャ３０２、デバイスドライバ３０４、およびディスクコントローラ２０６はまた、ディスクに記憶されるべきデータブロック上でデータ完全性チェックを行なうように構成され得る。さらに、データブロックが後にディスクから取出されるとき、アプリケーション２０４は、任意で、物理的なチェックサム検証２２４を行なってもよい。
【００３７】
データを不揮発性メモリに書込むための検証シーケンス
図４Ａは、この発明の特定の実施例に従った、不揮発性メモリに書込まれるべきデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。説明のため、図４Ａは、図３Ａに関連して説明される。
【００３８】
ブロック４０２では、不揮発性メモリに書込まれるべきデータのブロックが識別される。たとえば、アプリケーション２０４によって更新されたデータのブロックが、１つ以上のディスク１１４−１１８に書込まれることが必要となり得る。
【００３９】
ブロック４０４では、物理的なチェックサム計算プロセスがデータブロック上で行なわれる。たとえば、物理的なチェックサム計算プロセス２２０が開始されて、データブロックへの挿入のためのチェックサム値が決定され得る。
【００４０】
ブロック４０６では、論理チェックが、任意で、データブロック内のデータ上で行なわれる。たとえば、論理チェックがデータ上で行なわれて、特定の予め定められた特徴がデータ値と関連していることが検証され得る。
【００４１】
ブロック４０８では、論理チェックが行なわれたと仮定すると、データブロック内のデータが論理チェックをパスしたかについての判断がなされる。データが論理チェックをパ
スするならば、プロセスはブロック４１０へと進む。代替的には、データが論理チェックをパスしなかった場合には、プロセスはブロック４１８に進む。
【００４２】
ブロック４１０では、データが送られて不揮発性メモリに記憶される。たとえば、データブロックは、オペレーティングシステム３０６に送られて１つ以上のディスク１１４−１１６上に記憶され得る。
【００４３】
ブロック４１２では、１つ以上の構成要素が、任意で、物理的なチェックサム検証手順を行なってデータブロック内のデータの完全性を検証し得る。たとえば、ボリュームマネージャ３０２、デバイスドライバ３０４、ディスクコントローラ２０６、およびディスクアレイ２１０等の構成要素が、物理的なチェックサム検証手順を行なってチェックサム値に基づいてデータの完全性を検証するように構成され得る。
【００４４】
任意の物理的なチェックサム検証手順が１つ以上の構成要素によって行なわれる場合、ブロック４１４で、実行される各チェックサム検証手順について、データブロック内のデータが物理的なチェックサム検証テストをパスしたかについての判断がなされる。データが任意の物理的なチェックサム検証テストをパスするならば、ブロック４１６で、データブロックは不揮発性メモリに書込まれる。代替的には、データが任意の物理的なチェックサム検証テストのうちの１つ以上をパスしなかった場合、ブロック４１８で、データブロックには、破損データを含むというフラグが立てられ、したがって、データブロックはディスクに書込まれない。
【００４５】
不揮発性メモリからデータを取出すための検証シーケンス
図４Ｂは、この発明の特定の実施例に従った、不揮発性メモリから読出されるデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。説明のため、図４Ｂも、図３Ａと関連して説明される。
【００４６】
ブロック４５２では、不揮発性メモリに記憶されるデータのブロックが識別される。たとえば、以前にアプリケーション２０４によって更新されたデータのブロックが、１つ以上のディスク１１４−１１８から読出されることが必要となり得る。
【００４７】
ブロック４５４では、データブロックが見つけられ、不揮発性メモリから取出される。
ブロック４５６では、１つ以上の構成要素が任意で物理的なチェックサム検証手順を実行して、取出されたデータブロックの完全性を検証し得る。たとえば、ディスクアレイ２１０、ディスクコントローラ２０６、デバイスドライバ３０４、およびボリュームマネージャ３０２等の構成要素は、物理的なチェックサム検証手順を行なって、既知のチェックサム定数値に基づいて取出されたデータの完全性を検証するように構成され得る。
【００４８】
１つ以上の構成要素が任意の物理的なチェックサム検証手順を行なって取出されたデータの完全性を検証する場合、ブロック４５８で、実行された各チェックサム検証手順について、データブロック内のデータが物理的なチェックサム検証テストをパスしたかについての判断がなされ得る。データが任意の物理的なチェックサム検証テストのうちの１つ以上をパスしなかった場合、プロセスはブロック４６８に進む。
【００４９】
代替的には、データが任意の物理的なチェックサム検証テストをパスするならば、ブロック４６０で、データブロックは、要求を行なっているアプリケーションに送られる。
【００５０】
ブロック４６２では、要求を行なっているアプリケーションは、物理的なチェックサム検証手順を行なって、取出されたデータブロックの完全性を検証する。たとえば、アプリケーション２０４は、物理的なチェックサム検証手順２２４を実行して、取出されたデー
タの完全性を既知のチェックサム定数値に基づいて検証するように構成され得る。
【００５１】
特定の実施例では、取出されたデータブロックが、不揮発性メモリから読出されてから任意の物理的なチェックサム検証テストのうちの１つ以上をパスしたことがわかった場合、要求を行なっているアプリケーションは、ブロック４６２での物理的なチェックサム検証手順を任意でスキップし得る。
【００５２】
ブロック４６４では、データブロックが、アプリケーションによって行なわれたチェックサム検証手順２２４をパスしたかについての判断がなされる。データが物理的なチェックサム検証テストをパスしなかった場合、ブロック４６８で、データブロックには、破損データを含んでいるというフラグが立てられる。
【００５３】
代替的には、データが物理的なチェックサム検証手順２２４をパスする場合、ブロック４６６で、データブロック内のデータは、要求を行なっているアプリケーションによって用いられ得る。
【００５４】
ブロック位置検証
特定の実施例では、ある特定のデータブロックを不揮発性メモリに記憶するために用いられるべきブロック位置（「所望のブロックアドレス」）を識別するためのメカニズムが提供される。たとえば、所望のブロックアドレスは、各データブロック内に記憶されて、データブロックが不揮発性メモリ内で記憶されるべき物理アドレスが識別され得る。図５は、ブロック位置識別子５０４がブロック５００内で維持されるメカニズムを例示する。１つの実施例では、ブロック位置識別子５０４は、データブロック５００が不揮発性メモリ内でどこに記憶されるべきかについての物理アドレスを表わす。ブロック５００内にブロック位置識別子５０４を記憶することによって、ディスクアレイ２１０等の構成要素は、データブロックが不揮発性メモリ内の正しい位置に記憶されることを検証することができる。
【００５５】
特定の実施例では、アプリケーション２０４、またはアプリケーション２０４に関連した構成要素は、１つ以上のディスク１１４−１１８のトポロジーのマッピングを保守する。マッピングを用いることによって、ブロックが記憶されるべき物理アドレスが、識別され、ブロック内に記憶され得る。データブロックの受信時、ディスクアレイ２１０は、ブロック位置識別子５０４に関連した物理アドレスが、ブロックが不揮発性メモリ内で記憶されるべき位置に正確に対応することを検証する。特定の実施例では、ブロック位置識別子５０４が、ブロックが記憶されるべき位置に正確に対応していない場合、エラーにフラグが立てられ、したがって、ブロックは不揮発性メモリに記憶されない。たとえば、ブロック位置識別子５０４が、ブロックが記憶されるべき位置に正確に対応していない場合、オペレーティングシステム３０６および／またはアプリケーション２０４に通知され得る。１つの実施例では、ブロック位置識別子５０４を用いて、ブロックが不揮発性メモリ内の正しい位置から読出されることが検証される。たとえば、ブロック位置識別子５０４をデータが取出されたメモリ内の物理的な位置と比較することによって、ディスクアレイ２１０は、データブロックが不揮発性メモリ内の正しい位置から取出されたことを検証することができる。
【００５６】
特定の実施例では、多数のブロック位置識別子がブロック内に記憶され得、これらは、ブロックが記憶されるべき多数の位置を識別する。たとえば、ミラーリングデータベースシステムに備えるために、多数のブロック位置識別子が各データブロックに記憶されて、データブロックが不揮発性メモリ内で記憶されるべき多数の位置が識別され得る。代替的には、単一のブロック位置識別子５０４が各ブロック内に含まれ得、ディスクアレイ２１０は、アドレスを検証し、不揮発性メモリ内でデータブロックをミラーリングするために
１つ以上の他のアドレスを決定するように構成され得る。
【００５７】
バックアップ実行時の検証シーケンス
特定の実施例では、１つ以上のアプリケーションプログラムに関連したデータをバックアップするためのデータ確認メカニズムが提供される。図６は、データブロックをバックアップ装置６０４に記憶する前にバックアッププロセス６０２が物理的なチェックサム検証手順を行なうバックアップシステム６００を例示する。この例では、バックアップ装置６０４は、特定のいずれの種類のバックアップメカニズムまたは媒体にも限定されておらず、したがって、テープ駆動装置、ＺＩＰ駆動装置、ＤＶＤまたはＣＤ  ＲＯＭユニット、およびフロッピー（登録商標）ディスクユニットを含み得るが、これらに限定されないさまざまな異なる種類のバックアップ構成要素を含み得る。
【００５８】
１つの実施例では、１つ以上のデータブロックをバックアップするとき、バックアッププロセス６０２は、データブロックをデータ記憶装置１１２から取出し、各ブロック上で物理的なチェックサム検証手順を行なってデータの完全性を検証する。上で既に示されたように、論理チェック２２２の前に物理的なチェックサム計算２２０が行なわれたため、データブロックの完全性を検証するために追加の論理チェックは必要とされない。したがって、従来のバックアップシステムで通例必要とされるオーバーヘッドが大きく減じられ得る。加えて、バックアッププロセス６０２で物理的なチェックサム検証プロセスを行なうことによって、破損データがバックアップ装置６０４上に記憶される恐れを大きく減じることのできるバックアップ検証システムが提供される。
【００５９】
特定の実施例では、データが破損したと判断される時、バックアッププロセス６０２は、破損データをバックアップ装置６０４に書込ませない。バックアッププロセス６０２は、代わりに、アプリケーション２０４または他のプロセスと通信して、破損データを、それがバックアップ装置６０４に書込まれ得る前に、訂正し得る。破損データをバックアップ装置６０４に書込ませないことによって、破損データがバックアップ装置６０４に記憶される恐れを減じる検証方式が提供される。加えて、図６は論理チェック２２２を表わすが、特定の実施例では、システム６００は、論理チェック２２２の実行を含まない場合もある。たとえば、１つの実施例では、システム６００は、論理チェック２２２を含まず、代わりに、１つ以上の物理的なチェックサム検証プロセスに依存して、データ記憶装置１１２に書込まれ、かつデータ記憶装置１１２から取出されるデータ上でデータ完全性チェックを行なう。
【００６０】
また、特定の実施例では、ディスクコントローラ２０６または他のオペレーティングシステム構成要素から直接データブロックを受け取る代わりに、バックアッププロセス６０２は、アプリケーション２０４と通信してデータブロックを受け取るように構成され得る。データブロックを受け取るとき、バックアッププロセス６０２は依然として、物理的なチェックサム手順２２４を行なってバックアップ装置６０４への書込の前にデータが破損していないことを保証するように構成され得る。
【００６１】
ハードウェア例
図７は、この発明の実施例が実現され得るコンピュータシステム７００を例示したブロック図である。コンピュータシステム７００は、情報の通信を行なうためのバス７０２または他の通信メカニズム、および、情報を処理するための、バス７０２に結合されるプロセッサ７０４を含む。コンピュータシステム７００はまた、プロセッサ７０４によって実行されるべき情報および命令の記憶のための、バス７０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置等のメインメモリ７０６を含む。メインメモリ７０６はまた、プロセッサ７０４によって実行されるべき命令の実行中に一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム７００はさらに、プ
ロセッサ７０４のための命令および静的情報を記憶するための、バス７０２に結合される読出専用メモリ（ＲＯＭ）７０８または他の静的記憶装置を含む。磁気ディスクまたは光学ディスク等の記憶装置７１０が、設けられ、情報および命令を記憶するためにバス７０２に結合される。
【００６２】
コンピュータシステム７００は、コンピュータユーザに情報を表示するための、陰極線管（ＣＲＴ）等のディスプレイ７１２にバス７０２を介して結合され得る。英数字および他のキーを含む入力装置７１４がバス７０２に結合されて、情報およびコマンド選択をプロセッサ７０４に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ７０４に伝達し、さらにはディスプレイ７１２上でのカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キー等のカーソル制御７１６である。この入力装置は、典型的には、２つの軸、第１の軸（たとえば、ｘ）と第２の軸（たとえば、ｙ）とにおいて２自由度を有し、これによって、装置が平面で位置を特定することが可能となる。
【００６３】
この発明は、データ完全性検証メカニズムを実現するためのコンピュータシステム７００の用途に関連する。この発明の１つの実施例に従うと、プロセッサ７０４が、メインメモリ７０６内に含まれる１つ以上の命令の１つ以上のシーケンスを実行することに応答して、データ完全性検証メカニズムがコンピュータシステム７００によって提供される。このような命令は、記憶装置７１０等の別のコンピュータ読出可能な媒体からメインメモリ７０６へと読出され得る。メインメモリ７０６内に含まれる命令シーケンスの実行によって、プロセッサ７０４がここで説明されるプロセスステップを実行させられる。多重処理構成における１つ以上のプロセッサを用いてメインメモリ７０６内に含まれる命令シーケンスを実行することもできる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せてハードワイヤード回路を用いてこの発明を実現することもできる。したがって、この発明の実施例は、ハードウェア回路とソフトウェアとの特定のいずれかの組合せに限定されない。
【００６４】
ここで用いられるような用語「コンピュータ読出可能な媒体」は、実行のために命令をプロセッサ７０４に提供するいずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含むがそれらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置７１０等の光学ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ７０６等のダイナミックメモリを含む。送信媒体は、バス７０２を含むワイヤを含んだ、同軸ケーブル、銅ワイヤ、および光ファイバを含む。送信媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形をとり得る。
【００６５】
コンピュータ読出可能な媒体の一般的な形は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光学媒体、パンチカード、ペーパーテープ、ホールパターンを備えた他のいずれかの物理的な媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、他のいずれかのメモリチップまたはカートリッジ、以下で説明されるような搬送波、またはコンピュータが読出可能な他のいずれかの媒体を含む。
【００６６】
種々の形のコンピュータ読出可能な媒体は、実行のために１つ以上の命令の１つ以上のシーケンスをプロセッサ７０４に搬送することに関与し得る。たとえば、命令は、最初リモートコンピュータの磁気ディスク上で搬送され得る。リモートコンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線上で命令を送信し得る。コンピュータシステム７００にとってローカルなモデムは、電話線上のデータを受信し、赤外線トランスミッタを用いてデータを赤外線信号に変換し得る。バス７０２に結合される赤
外検出器が、赤外線信号で搬送されたデータを受信し、データをバス７０２上に置き得る。バス７０２は、データをメインメモリ７０６へと搬送し、ここから、プロセッサ７０４は命令を取出し、実行する。メインメモリ７０６が受取る命令は、任意で、プロセッサ７０４による実行の前に、またはその後に、記憶装置７１０上に記憶され得る。
【００６７】
コンピュータシステム７００はまた、バス７０２に結合される通信インターフェイス７１８を含む。通信インターフェイス７１８は、ローカルネットワーク７２２に接続されるネットワークリンク７２０に結合される双方向データ通信を提供する。たとえば、通信インターフェイス７１８は、統合サービスデジタル通信網（ＩＳＤＮ）カードまたはモデムであってデータ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス７１８は、ローカルエリアネットワーク（ＬＡＮ）カードであってデータ通信接続を適合したＬＡＮに提供し得る。ワイヤレスリンクも実現され得る。このようないずれの実現例でも、通信インターフェイス７１８は、種々の種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
【００６８】
ネットワークリンク７２０は、典型的には、１つ以上のネットワークを通して他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク７２０は、ローカルネットワーク７２２を通してホストコンピュータ７２４へと、またはインターネットサービスプロバイダ（ＩＳＰ）７２６によって動作されるデータ装置へと、接続を提供し得る。ＩＳＰ７２６は、次に、現在「インターネット」７２８と通例呼ばれるワールドワイドパケットデータ通信ネットワークを通してデータ通信サービスを提供する。ローカルネットワーク７２２およびインターネット７２８の両方は、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号を用いる。コンピュータシステム７００へと、およびコンピュータシステム７００からデジタルデータを搬送する、ネットワークリンク７２０上にあり通信インターフェイス７１８を通る信号および種々のネットワークを通る信号は、情報を運ぶ搬送波の例示的な形である。
【００６９】
コンピュータシステム７００は、ネットワーク、ネットワークリンク７２０、および通信インターフェイス７１８を通して、プログラムコードを含むメッセージを送信し、プログラムコードを含むデータを受信し得る。インターネットの例では、サーバ７３０は、インターネット７２８、ＩＳＰ７２６、ローカルネットワーク７２２、および通信インターフェイス７１８を通して、アプリケーションプログラムのための要求されるコードを送り得る。この発明に従うと、アプリケーションをダウンロードしたものが、ここで説明されるようなデータ完全性検証に備える。
【００７０】
受信されたコードは、それが受信される時にプロセッサ７０４によって実行され得、および／または、後の実行のために記憶装置７１０に、または他の不揮発性記憶装置に記憶され得る。この様態で、コンピュータシステム７００は、搬送波の形のアプリケーションコードを得ることができる。
【００７１】
代替例、発展例
この発明の特定の実施例を説明するとき、いくつかの図が説明目的のために用いられた。しかし、この発明は、図示されたような特定のいずれのコンテキストにも限定されておらず、この発明の思想および範囲は、ここで説明されたメカニズムおよびプロセスが他のメカニズム、方法、プログラム、およびプロセスにとって利用可能である他のコンテキストおよびアプリケーションを含む。したがって、この明細書および図は、限定的な意味ではなく例示的な意味で認識されるべきである。
【００７２】
加えて、この開示では、特定のプロセスステップがある特定の順序で示され、アルファベットおよび英数字ラベルを用いて特定のステップを識別する。開示の中で特に指示され
ない限り、この発明の実施例は、このようなステップを行なうためのいずれかの特定の順序に限定されない。特に、ラベルは、便宜的なステップ識別のためだけに用いられ、このようなステップを実行するある特定の順序を暗示、特定、または必要とすることを意図しない。
【図１】
0004647021.tif 000002
【図２】
0004647021.tif 000003
【図３Ａ】
0004647021.tif 000004
【図３Ｂ】
0004647021.tif 000005
【図４Ａ】
0004647021.tif 000006
【図４Ｂ】
0004647021.tif 000007
【図５】
0004647021.tif 000008
【図６】
0004647021.tif 000009
【図７】
0004647021.tif 000010