(57)【特許請求の範囲】
【請求項１】
オペレーティング・システム実行モードまたはシステム・マネジメント・モードでの動作が可能なプロセッサを搭載するコンピュータに、
メイン・メモリに保護領域を確保するステップと、
オペレーティング・システムが有するブルースクリーン表示後の自動再起動機能を停止するステップと、
前記オペレーティング・システム実行モードにおいて監視プログラムが所定の動作をするステップと、
プロセッサが周期的に前記オペレーティング・システム実行モードから前記システム・マネジメント・モードに移行したときに前記監視プログラムが所定の動作をしているか否かを判断するステップと、
ハングアップの発生を認識したユーザの操作により前記オペレーティング・システム実行モードから前記システム・マネジメント・モードに強制的に移行したときに前記監視プログラムが所定の動作をしているか否かを判断するステップと、
前記監視プログラムが所定の動作をしていないと判断したときに前記システム・マネジメント・モードで動作している間に前記保護領域に記憶されたデータを不揮発性の記憶装置に保存するステップと、
データの保存後に前記コンピュータを再起動するステップと
を含む処理を実行させるコンピュータ・プログラム。
【請求項２】
前記システム・マネジメント・モードに周期的に移行したときに判断するステップ、前記システム・マネジメント・モードに強制的に移行したときに判断するステップ、前記保存するステップ、および前記再起動するステップをＢＩＯＳが実行する請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記所定の動作をするステップが、前記監視プログラムが監視フラグを設定するステップを含み、
前記判断するステップが、
前記監視フラグが設定されているか否かを判断するステップと、
前記監視フラグが設定されていると判断したときに前記監視フラグを解除するステップと、
前記監視フラグを解除したあとに前記オペレーティング・システム実行モードに遷移するステップと
含む請求項１または請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記保護領域がＲＡＭディスク領域である請求項１から請求項３のいずれかに記載のコンピュータ・プログラム。
【請求項５】
前記コンピュータの起動時に前記不揮発性の記憶装置から前記ＲＡＭディスク領域にイメージ・ファイルをリストアするステップと、
前記コンピュータをシャットダウンする操作に応答して前記ＲＡＭディスク領域に記憶されたイメージ・ファイルを前記不揮発性の記憶装置に保存するステップと
を含む請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記保護領域が前記オペレーティング・システム実行モードで動作するアプリケーション・プログラムの作業領域である請求項１から請求項５のいずれかに記載のコンピュータ・プログラム。
【請求項７】
前記確保するステップが、前記保護領域を前記オペレーティング・システムが直接アドレス指定できる論理アドレス空間を超えている領域に確保するステップを含む請求項１から請求項６のいずれかに記載のコンピュータ・プログラム。
【請求項８】
前記監視プログラムがオペレーティング・システムのサービスを受けて動作するアプリケーション・プログラムである請求項１から請求項７のいずれかに記載のコンピュータ・プログラム。
【請求項９】
請求項１から請求項８のいずれかに記載するコンピュータ・プログラムを格納する記憶装置を搭載するコンピュータ。
【請求項１０】
コンピュータに搭載が可能なメイン・メモリのデータ保護システムであって、
オペレーティング・システム実行モードまたはシステム・マネジメント・モードで動作することが可能なプロセッサと、
保護領域が確保されたメイン・メモリと、
不揮発性の記憶装置と、
システムがハングアップしたときにブルースクリーンの画面を表示することが可能な表示装置と、
前記ブルースクリーンが表示されたときに前記コンピュータが自動再起動する機能を停止する停止手段と、
前記オペレーティング・システム実行モードで所定の動作をする監視プログラムを前記システム・マネジメント・モードに移行して監視する監視手段と、
周期的に前記プロセッサを前記システム・マネジメント・モードで動作させる第１のＳＭＭ制御手段と、
ハングアップの発生を認識したユーザの操作により前記プロセッサを強制的に前記システム・マネジメント・モードで動作させる第２のＳＭＭ制御手段と、
前記監視プログラムが所定の動作をしていないと判断したときに、前記システム・マネジメント・モードで前記保護領域に記憶されているデータを前記不揮発性の記憶装置に保存して前記コンピュータを再起動するバックアップ手段と
を有するデータ保護システム。
【請求項１１】
前記監視手段、前記第１のＳＭＭ制御手段、前記第２のＳＭＭ制御手段、および前記バックアップ手段が、ＢＩＯＳを実行する前記プロセッサにより構成されている請求項１０に記載のデータ保護システム。
【請求項１２】
前記第１のＳＭＭ制御手段が、前記プロセッサを前記オペレーティング・システム実行モードと前記システム・マネジメント・モードとの間を遷移させるために前記プロセッサに対して周期的にシステム・マネジメント割り込みを実行するチップ・セットである請求項１０または請求項１１に記載のデータ保護システム。
【請求項１３】
前記監視プログラムの所定の動作が監視フラグを設定する動作であり、前記監視手段は、前記監視プログラムが監視フラグを設定したか否かを判断し、前記監視フラグが設定さていると判断した場合に前記監視フラグを解除してから前記プロセッサを前記オペレーティング・システム実行モードに遷移させる請求項１０から請求項１２のいずれかに記載のデータ保護システム。
【請求項１４】
前記第２のＳＭＭ制御手段が、ハングアップしたときにキーボードからの信号を前記プロセッサから独立した動作で処理して前記プロセッサを前記システム・マネジメント・モードに遷移させるコントローラである請求項１０から請求項１３のいずれかに記載のデータ保護システム。
【請求項１５】
前記保護領域が前記コンピュータの起動時に前記不揮発性の記憶装置からイメージ・ファイルがリストアされるＲＡＭディスク領域である請求項１０から請求項１４のいずれかに記載のデータ保護システム。
【請求項１６】
前記バックアップ手段は、オペレーティング・システムが認識できない前記不揮発性の記憶装置の記憶領域に前記データを保存する請求項１０から請求項１５のいずれかに記載のデータ保護システム。
【請求項１７】
請求項１０から請求項１６のいずれかに記載されたデータ保護システムを有するコンピュータ。
【請求項１８】
オペレーティング・システム実行モードまたはシステム・マネジメント・モードでの動作が可能なプロセッサを搭載するコンピュータが、メイン・メモリに記憶されたデータを不揮発性の記憶装置にバックアップする方法であって、
オペレーティング・システムが有するブルースクリーン表示後の自動再起動機能を停止するステップと、
前記オペレーティング・システム実行モードで監視プログラムが所定の動作をするステップと、
システムが前記プロセッサを周期的に前記システム・マネジメント・モードに移行させるステップと、
前記システムが前記プロセッサを前記システム・マネジメント動作に移行できないときにユーザの入力を受け取って前記プロセッサを強制的に前記システム・マネジメント・モードに移行させるステップと、
前記システム・マネジメント・モードに移行したときに前記監視プログラムが所定の動作をしているか否かを判断するステップと、
前記監視プログラムが所定の動作をしていないと判断したときに前記システム・マネジメント・モードで動作している間に前記メイン・メモリに記憶されたデータを前記不揮発性の記憶装置に保存してから前記コンピュータを再起動するステップと
を有する方法。
【請求項１９】
前記所定の動作をするステップが監視フラグを設定するステップを含み、
前記システム・マネジメント・モードにおいて前記監視フラグが設定されていると判断した場合に前記監視フラグを解除して前記オペレーティング・システム実行モードに遷移するステップを有する請求項１８に記載の方法。
【請求項２０】
前記オペレーティング・システム実行モードに遷移したことに応答して前記監視フラグを設定するステップを有する請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのメイン・メモリに記憶されたデータを保護する技術に関し、さらに詳細にはコンピュータにシャットダウンを伴うようなハングアップが生じたときにメイン・メモリに記憶されたデータを保護する技術に関する。
【背景技術】
【０００２】
コンピュータには、中央演算装置（ＣＰＵ）が直接アクセスするメイン・メモリ（一次記憶装置または主記憶装置ともいう。）として、一般に揮発性のＲＡＭが使用される。またコンピュータには通常、オペレーティング・システム（ＯＳ）、デバイス・ドライバ、アプリケーション・プログラム（以下、アプリケーションという。）およびアプリケーションが作成したファイルなどを格納する不揮発性の補助記憶装置（二次記憶装置ともいう。）が搭載される。補助記憶装置としてはハードディスク・ドライブ（ＨＤＤ）、ソリッド・ステート・ドライブ（ＳＤＤ）、ハイブリッドＨＤＤ、または光学ディスク・ドライブ（ＯＤＤ）などが採用されている。
【０００３】
メイン・メモリにはアプリケーションが作成したデータが一時的に記憶されている。メイン・メモリに記憶されたデータは、コンピュータの電源が遮断されると消えてしまうのでユーザはコンピュータを停止する前に作成中のデータをＨＤＤに保存する。プロセッサは動作中にハードウエアやソフトウエアの不具合に起因して、ハングアップ（フリーズまたはクラッシュともいわれる。）する。
【０００４】
プロセッサがハングアップするとコンピュータは動作を停止して、キーボードやマウスによる外部からの操作ができなくなり、ディスプレイにいわゆるブルースクリーンが表示される。ブルースクリーンが表示されるとＯＳがコンピュータを自動的にシャットダウンまたは再起動する。本明細書においては、シャットダウンと再起動はメイン・メモリのデータが消失する点で同義として扱う。自動的にシャットダウンしない場合であっても、ユーザが電源ボタンを押下して強制的にシャットダウンする以外にコンピュータの動作を回復することができなくなる。
【０００５】
このようにハングアップに伴ってシャットダウンが発生すると、メイン・メモリに記憶されている未保存のデータは消失してしまい回復することができない。ユーザは、メイン・メモリに記憶した作業中のデータを意図しないシャットダウンから保護するために、定期的にＨＤＤに保存するようにアプリケーションを設定したり、自らが随時アプリケーションに対して保存操作をしたりしている。
【０００６】
近年メイン・メモリの価格が低下したこととも相まって、コンピュータに搭載されるメイン・メモリの容量は増加する傾向にある。メイン・メモリの容量はビット・サイズに関するコンピュータのアーキテクチャや利用するアプリケーションの種類などにより定まる一定値に達すると、あまりパフォーマンスの増大を期待することができなくなり、一定値以上の領域は余剰の記憶領域になりがちである。メイン・メモリの余剰な記憶領域をソフトウエアで仮想化して二次記憶装置として活用する方法がある。
【０００７】
仮想化されたメイン・メモリの特定の記憶領域をＲＡＭディスク領域または単にＲＡＭディスクという。ＲＡＭディスクは高速なアクセスができるため、メイン・メモリの容量を有効に活用する方策の１つである。キャッシュ・メモリとＳＳＤを組み合わせることでもファイル・アクセスの高速化が可能であるが、ビット単価が高額なＳＳＤが必要になったりＳＳＤへの負荷が集中して全体のパフォーマンスの低下を招いたりするという問題が残る。
【０００８】
特許文献１は、ＯＳが管理するメイン・メモリの管理領域が所定領域に制限されているコンピュータ・システムにおいて、制限された所定領域以外の領域である管理外領域をＲＡＭディスクとして利用するプログラムを開示する。同文献のプログラムはＰＡＥ（Physical Address Extension）モードを有効にして、ディスク・イメージ上の読み書きしたい箇所にあたるメモリ領域をＲＡＭディスク・ドライバが仮想アドレス空間にマッピングし、ＯＳがＲＡＭディスク・ドライバを介して、４ＧＢを超えるＯＳ管理外領域に対するアクセスを可能にする。また、同文献には、管理外領域に記憶されたデータシステムがシャットダウン、再起動、または休止状態に移行するタイミングで外部記憶装置にバックアップすることが記載されている。
【０００９】
特許文献２は、故障や不意の電源断が生じても、主記憶手段上のＲＡＭティスクの内容が消去されない情報処理装置を開示する。情報処理装置に再起動を必要とするような故障が発生するとＯＳの故障検出手段が故障を検出する。故障検出手段は、故障内容の把握を行い、情報処理装置を再起動しなければならないと判断した場合、ＯＳで構成した保存手段を起動し、保存手段に主記憶手段上のＲＡＭティスク領域の内容を二次記憶装置内のＲＡＭディスク保存ファイルに保存するよう指示をする。保存手段が主記憶手段上のＲＡＭティスク領域の内容を二次記憶装置内のＲＡＭディスク保存ファイルに保存した後に情報処理装置の電源が遮断される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−４４５０３号公報
【特許文献２】特開２００３−１２２６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
メイン・メモリに記憶されたデータをハングアップから保護するために、メイン・メモリのデータをアプリケーションが自動的にバックアップする場合には、ＨＤＤへのアクセスが頻発してアプリケーションを利用する上での作業性が低下する。また、ＨＤＤへのアクセスが競合してコンピュータ全体のパフォーマンスが低下する場合がある。さらには、自動バックアップの機能を備えていないアプリケーションには適用できない。また、ユーザが必要に応じて保存操作をする場合には、ユーザにとって煩雑さが増すとともに、前回の保存のタイミングからハングアップが発生するまでのデータは保護されないことになるため、保存されていないデータの増分が多くなると損失が増大する。これは自動バックアップでも同じことである。
【００１２】
コンピュータがハングアップしたときに、メイン・メモリのデータを確実に保護できれば、作業データの安全性を高めることができるとともにＲＡＭディスクとしてのメイン・メモリの利便性が向上する。しかし、コンピュータには、特定のアプリケーションのプロセスを停止するだけで他のアプリケーションは動作を継続できるような軽微な異常から、シャットダウンする以外に対応できない重大なハングアップまでさまざまな状態が存在する。また、アプリケーションには当該アプリケーションだけが停止したような場合は、当該アプリケーションを再起動するとデータを回復できるような機能を備えているものもあるが、コンピュータがシャットダウンしたような場合には回復することができない。
【００１３】
コンピュータを安全方向で動作させるために軽微な異常でもバックアップするとなると、バックアップ動作が頻発してコンピュータのパフォーマンスが低下する。したがって、異常状態を特定してシャットダウンに至るような異常のときだけバックアップ処理を行うことが望ましいが、コンピュータが異常動作をしたときシステムを構成するプログラムがその異常を検出することは容易ではない。
【００１４】
図１０は、ハードウエアまたはソフトウエアに異常が発生してからシャットダウンするまでのコンピュータの状態遷移を説明する図である。ステップ１では、アプリケーション、ＯＳ、デバイス・ドライバ、およびハードウエアがすべて正常に動作している。ステップ２で、コンピュータのハードウエアまたはソフトウエアに何らかの異常が発生しステップ３でそれが進行する。また、ステップ３からステップ１に戻る場合もある。ステップ４でついにＣＰＵがハングアップしてコンピュータが制御権を失い、マウスおよびキーボードを通じて行う操作もできなくなる。
【００１５】
通常はユーザがコンピュータの異常を認識するのはステップ４である。しかし、現在のコンピュータ・システムでは、ステップ４まで到達するとコンピュータが自動的に電源を遮断してシャットダウンをするか、またはユーザが電源ボタンを操作して強制的にシャットダウンをするしか制御権を回復する方法はなく、データを保護することはできない。したがって、メイン・メモリが記憶しているデータをシャットダウンする前にバックアップするためには、ステップ２からステップ４までの間にステップ３からステップ１に戻るような場合を含む軽微な異常を除いて、シャットダウンを伴う異常を正確に検出する必要がある。
【００１６】
さらに、異常を検出したあとにはステップ５に到達する前にバックアップ作業を終了する必要がある。特許文献２の発明は、ＯＳが情報処理装置の故障を検出してＯＳがバックアップ処理をしているが、シャットダウンを必要とする異常にはＯＳ自体の異常も含まれる。したがって、特許文献２の発明で対象とする情報処理装置の異常は、ハードウエアやアプリケーションなどのようなＯＳ以外の要素の異常に限られ、ＯＳやＨＤＤのデバイス・ドライバなどに起因して発生するハングアップの対策としては十分ではない。また、異常を検出してからバックアップ処理をするまでの間にシャットダウンする可能性も残る。本発明は、このような背景および課題を解決するものである。
【００１７】
そこで本発明の目的は、メイン・メモリに記憶されたデータをハングアップから保護することができるメイン・メモリのデータ保護システムを提供することにある。さらに本発明の目的は、信頼性の高いＲＡＭディスクを実現するデータ保護システムを提供することにある。さらに本発明の目的は、そのようなデータ保護システムを搭載するコンピュータ、データのバックアップ方法およびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１８】
本発明は、メイン・メモリに記憶されたデータをコンピュータがハングアップしたときにシャットダウンする前に不揮発性の記憶装置に保存することができるメイン・メモリのデータ保護システムを提供する。プロセッサは、少なくともＯＳ実行モードまたはＳＭＭで動作する。ＯＳ実行モードは、ＯＳが動作するときのプロセッサの動作モードでプロテクト・モードということもできる。不揮発性の記憶装置は、メイン・メモリが実装されるコンピュータと同一の筐体に実装されていても異なる筐体に実装されていてもよい。
【００１９】
メイン・メモリには、データを保護する保護領域が確保される。バックアップの対象とするデータの範囲を容易に特定するために、保護領域はＯＳが自由にアクセスできない専用の記憶領域として定義することができる。監視プログラムはＯＳ実行モードで動作しているコンピュータがハングアップしていない限り所定の動作をする。ＳＭＭに移行した後に監視プログラムが所定の動作をしているか否かを所定のプログラムが判断する。監視プログラムが所定の動作をしていないと判断したときに所定のプログラムがＳＭＭで動作している間にメイン・メモリに記憶されたデータを不揮発性の記憶装置に保存する。
【００２０】
このような構成により、コンピュータがＯＳ実行モードにおいてシャットダウンを伴うようなハングアップをしたときであっても、それをＳＭＭで実行される所定のプログラムが検出することができる。また、ＳＭＭに移行するとプロセッサはＯＳ実行モードでの動作を停止するため、ＯＳによるシャットダウン処理が停止するため、不揮発性の記憶装置に保存する前にシャットダウンする確率を低くすることができる。よって、ＳＭＭに移行してから保存処理を行うことで、シャットダウン前に確実にメイン・メモリに記憶されたデータをバックアップすることができる。
【００２１】
ＢＩＯＳは、ＯＳから独立して動作し、かつ、不揮発性の記憶装置のデバイス・ドライバがハングアップしている場合でもそこにアクセスすることができるため、監視プログラムの動作の判断およびデータの保存はＢＩＯＳが行うことが望ましい。また、ＢＩＯＳはシングル・タスクで動作するために、ハングアップする可能性が低いので、ハングアップの検出と保存処理の信頼性が高い。
【００２２】
プロセッサを周期的にＳＭＭとＯＳ実行モードの間を遷移させることで、ＯＳ実行モードでの動作を維持しながらＳＭＭで周期的にハングアップしているか否かを監視して、ハングアップを検出したときにバックアップ処理をすることができる。このとき、システム・マネジメント割り込み（ＳＭＩ）をハードウエアであるチップ・セットが行うようにすれば、ソフトウエアへの依存度の低い方法でＳＭＩを発行できるためハングアップしたあとであっても、高い確率でＳＭＭに移行できる。
【００２３】
監視プログラムが正常に動作しているか否かを所定のプログラムが判断するために、ＯＳ実行モードにおいて監視プログラムに監視フラグを設定する動作をさせることができる。所定のプログラムはＳＭＭに移行してから、監視フラグが設定されているか否かを判断し、監視フラグが設定されていると判断したときには、ハングアップしていないと判断して監視フラグを解除した後にＯＳ実行モードに遷移させることができる。その後、ハングアップしなければ監視プログラムは再度監視フラグを設定することができる。
【００２４】
保護領域をＲＡＭディスク領域として利用する場合は、コンピュータの起動時にバックアップ領域から保護領域にイメージ・ファイルをリストアし、かつ、コンピュータをシャットダウンする操作に応答して保護領域に記憶されたイメージ・ファイルをバックアップ領域に保存するように構成することができる。ＲＡＭディスク領域は、メイン・メモリの電源が突然停止した場合には、不揮発性の記憶装置にバックアップされているデータ以外は消失する。電池パックを標準として搭載する携帯式コンピュータに本発明のデータ保護システムを搭載すると、メイン・メモリの電源が突然停止することはほとんどなくこのような問題は生じないので都合がよい。
【００２５】
保護領域はまたＯＳ実行モードで動作するアプリケーションの作業領域として利用することもできる。この場合のファイルは、不揮発性の記憶装置に保存される。このような利用形態では、重要な作業をしているときに突然ハングアップしても、不揮発性の記憶装置に保存する前のデータを回復することができる。保護領域をＯＳがビット数に基づいて直接アドレス指定できる論理アドレス空間を超えている領域に確保するようにすれば、通常では使用できないアドレス範囲にあるメイン・メモリの記憶領域を有効に活用することができる。
【００２６】
監視プログラムは、ＯＳのサービスを受けて動作するアプリケーションとすることができる。この場合、監視プログラムは、その下層で動作するＯＳやデバイス・ドライバのハングアップに伴って動作を停止するので、その動作を監視することで多くのハングアップまたはそれに準ずる異常状態を検出することができる。また、アプリケーションは、システム・プログラムに比べて動作状態を容易に監視することができるので監視プログラムとして都合がよい。
【００２７】
ハングアップしたときに、プロセッサがＳＭＭに移行しない場合も予想される。この場合、本発明では、ソフトウエアへの依存が少ないコントローラを使用して、外部からの信号で強制的にＳＭＭに移行させるように構成することもできる。また、ハングアップしたときに自動的にシャットダウンするＯＳの機能を停止するようにプログラムが設定すれば、シャットダウン前のバックアップをより確実に行うことができる。
【発明の効果】
【００２８】
本発明により、メイン・メモリに記憶されたデータをハングアップから保護することができるメイン・メモリのデータ保護システムを提供することができた。さらに本発明により、信頼性の高いＲＡＭディスクを実現するデータ保護システムを提供することができた。さらに本発明により、そのようなデータ保護システムを搭載するコンピュータ、データのバックアップ方法およびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００２９】
【図１】本実施の形態にかかるコンピュータの主要な構成を示す機能ブロック図である。
【図２】メイン・メモリ上に形成された保護領域を説明する図である。
【図３】データ保護システムの構成を示す機能ブロック図である。
【図４】ブートが完了したときのメイン・メモリにロードされたファイルのデータ構造を示す図である。
【図５】メイン・メモリに記憶されたデータをハングアップから保護する手順を説明するフローチャートである。
【図６】メイン・メモリに記憶されたデータをハングアップから保護する手順を説明するフローチャートである。
【図７】他のデータ保護システムの構成を示す機能ブロック図である。
【図８】メイン・メモリに記憶されたデータをハングアップから保護する手順を説明するフローチャートである。
【図９】メイン・メモリに記憶されたデータをハングアップから保護する手順を説明するフローチャートである。
【図１０】異常が発生してからシャットダウンするまでのコンピュータの状態の遷移を説明する図である。
【発明を実施するための形態】
【００３０】
［コンピュータの構成］
図１は、本実施の形態にかかるコンピュータ１０の主要な構成を示す機能ブロック図である。本明細書の全体に渡って、同一の要素には同一の参照番号を付与する。コンピュータ１０は、電池パック（図示せず。）および充電器（図示せず。）を搭載する携帯式コンピュータとすることができる。ＣＰＵ１１は、インテル（登録商標）のＸ８６シリーズのアーキテクチャを採用し、保護仮想アドレス・モード（Protected Virtual Address Mode）とＳＭＭで動作することができる。保護仮想アドレス・モードは単にプロテクト・モードということもある。
【００３１】
メモリ・コントローラ・ハブ（ＭＣＨ）１３は、メイン・メモリ１５へのアクセス動作を制御するためのメモリ・コントローラ機能、およびＣＰＵ１１と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能を含むチップ・セットである。ＭＣＨ１３にはＣＰＵ１１、メイン・メモリ１５、グラフィック・プロセッシング・ユニット（ＧＰＵ）１７、およびアイオー・コントローラ・ハブ（ＩＣＨ）２１が接続されている。
【００３２】
メイン・メモリ１５は、ＣＰＵ１１が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用する揮発性のＲＡＭである。メイン・メモリ１５には、一般領域に加えてＣＰＵ１１がＳＭＭで動作するときに実行するコードをロードするための領域であるＳＭＲＡＭ領域が定義されている。メイン・メモリ１５には本発明により、ハングアップから保護するデータを記憶する領域として保護領域も定義される。ＧＰＵ１７にはＬＣＤ１９が接続されている。ＧＰＵ１７は、ＣＰＵ１１から受け取った描画命令に基づいてＶＲＡＭにイメージを書き込み、所定のタイミングでＬＣＤ１９に画像イメージのデータを送るための専用プロセッサで、グラフィックス・アクセラレータともいう。
【００３３】
ＩＣＨ２１は周辺入出力デバイスに関するデータ転送を処理するチップ・セットである。ＩＣＨ２１は、ＵＳＢ（Universal Serial Bus）、シリアルＡＴＡ（AT Attachment）、ＳＰＩ (Serial Peripheral Interface)バス、 ＰＣＩ（Peripheral Component Interconnect）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス、およびＬＰＣ（Low Pin Count）などのポートを備え、ＨＤＤ２３、ＵＳＢコネクタ２５、およびＬＰＣバス２７などが接続されている。ＩＣＨ２１はＳＭＩの発生要因を設定するＳＭＩレジスタを含む。
【００３４】
ＣＰＵ１１がプログラムを実行したり、マザーボードに実装されたハードウエアが温度や電源に関するイベントを生成したりしてＳＭＩレジスタを設定することでＩＣＨ２１はＳＭＩ信号をＣＰＵ１１のＳＭＩピンに送りＣＰＵ１１をＳＭＭで動作させる。ＣＰＵ１１はＳＭＩＡＣＴピンを通じてＩＣＨ２１にＳＭＭでの動作を開始したことを通知する。
【００３５】
ＭＣＨ１３はＣＰＵ１１がＳＭＭに移行したことの通知をＩＣＨ２１から受け取ることで、メイン・メモリ１５に対するアクセスをハードウエアにより制御してＳＭＭ環境を構築する。ＩＣＨ２１は、ＣＰＵ１１がＳＭＭで動作している間は、ＳＭＲＡＭ領域にロードされたコードがＯＳやアプリケーション・プログラムにより書き換えられないように保護する。
【００３６】
ＨＤＤ２３はブートディスクで、コンピュータ１０が起動するときのブート・イメージを格納している。ＬＰＣバス２７には、エンベデッド・コントローラ（ＥＣ）２９およびＢＩＯＳ＿ＲＯＭ３３などの高速なデータ転送を要求しないデバイスが接続される。ＥＣ２９は、ＣＰＵ１１から独立して動作するマイクロ・コンピューターでコンピュータ１０の電源および温度を制御する。ＥＣ２９には、ＣＰＵ１１とは別系統で電源が供給されて、サスペンド状態でＣＰＵ１１が動作を停止している間やＣＰＵ１１がハングアップしたときも動作することができる。ＥＣ２９はキーボード・コントローラを備えており、キーボード３１が接続されている。
【００３７】
ＢＩＯＳ＿ＲＯＭ３３は不揮発性で記憶内容の電気的な書き替えが可能なメモリであり、入出力デバイスを制御するためのデバイス・ドライバ、ＡＣＰＩ（Advanced Configuration and Power Interface）の規格に適合し電源およびシステム筐体内の温度などを管理したりハードウエアにアクセスしたりするシステムＢＩＯＳ、ベクタ・テーブル、コンピュータ１０の起動時にハードウエアの試験や初期化を行うＰＯＳＴ（Power-On Self Test）コード、およびパスワード認証を行うための認証コードなどを格納する。
【００３８】
［保護領域］
図２は、メイン・メモリ上に定義された保護領域を説明する図である。保護領域に記憶されたデータは、コンピュータ１０がハングアップしたときに本発明の方法によりＨＤＤ２３にバックアップされる。保護領域は、ＲＡＭディスク領域５７および特定領域５９またはそのいずれか一方として構成することができる。
【００３９】
ＲＡＭディスク領域５７は、専用のデバイス・ドライバによりＯＳがＨＤＤ２３を利用するのと同様のファイル・システムで利用できるように構成されている。本発明にかかるプログラムは、ＲＡＭディスク領域５７に記憶されたデータを、メイン・メモリ１５の電源を停止する際にＨＤＤ２３にバックアップし、コンピュータを起動してメイン・メモリ１５に電源を供給する際にＲＡＭディスク領域５７にリストアする。
【００４０】
特定領域５９は、ハングアップから保護する必要なファイルを処理するために、一時的にアプリケーションが使用できるようにした作業領域で、ＲＡＭディスク領域５７とはメイン・メモリ１５の電源の停止および供給に伴ってバックアップやリストアが行われない点で異なる。特定領域５９に記憶されたデータはメイン・メモリの電源が停止すると消失するので、ファイルは永続的な保存場所としてのＨＤＤ２３に保存される。
【００４１】
図２（Ａ）〜（Ｃ）は、３２ビット・アーキテクチャに基づいて保護領域を形成する例を示す。３２ビット・アーキテクチャでは、ＯＳが直接アドレス指定できるメイン・メモリ１５の論理アドレス空間５１は４ＧＢに制限される。しかし、メイン・メモリ１５の物理アドレス空間が４ＧＢを越える場合には、物理アドレス空間にＯＳが直接認識できない論理アドレス空間５３が生じる。図２（Ａ）は論理アドレス空間５３にＲＡＭディスク領域５７を設けた例を示す。
【００４２】
なお、図２（Ａ）のように、論理アドレス領域５３に保護領域を形成する際には、ＯＳの物理アドレス拡張機能であるＰＡＥをイネーブルに設定する。ＰＡＥは、３２ビット・アーキテクチャのアドレス・ラインを３６ビット以上のアドレス・ラインに拡張する周知の拡張機能である。図２（Ｂ）は、ＯＳが直接認識できる論理アドレス空間５１にＲＡＭディスク領域５７を設けた例を示す。図２（Ｃ）は、論理アドレス空間５１に特定領域を設けた例を示す。
【００４３】
図２（Ｄ）、（Ｅ）は、６４ビット・アーキテクチャに基づいて保護領域を形成する例を示す。６４ビット・アーキテクチャでは、ＯＳが直接アドレス指定できるメイン・メモリ１５の論理アドレス空間は膨大になり、現実にはＯＳが８ＧＢ〜１２８ＧＢ程度のメイン・メモリ１５の物理アドレス空間を認識することができるようになっている。図２（Ｄ）、（Ｅ）では、物理アドレス空間に対してＯＳが認識できる論理アドレス空間５５には制限がないと想定している。
【００４４】
図２（Ｄ）、（Ｅ）はそれぞれ論理アドレス空間５５にＲＡＭディスク領域５７または特定領域５９を設ける例を示している。なお、本発明においては、ＲＡＭディスク領域５７と特定領域５９を同時に設けることもできる。特定領域５９は、アプリケーションがＯＳを通じてアクセスできる必要があるので、３２ビット・アーキテクチャの論理アドレス空間５１または６４ビット・アーキテクチャの論理アドレス空間５５に形成する。
【００４５】
［メモリ・データ保護システム］
図３は、本実施の形態にかかるメイン・メモリのデータ保護システム１００の構成を示す機能ブロック図である。データ保護システム１００は、コンピュータ１０に実装されたソフトウエアとハードウエアで構成されている。新規なソフトウエアは、メモリ管理アプリケーション１０１、システムＢＩＯＳ１０７、および専用ドライバ１１３の一部である。メモリ管理アプリケーション１０１は、データ保護システム１００の中心的な処理をするためのＯＳ１０５上で動作するプログラムである。
【００４６】
メモリ管理アプリケーション１０１は、メイン・メモリ１５にＲＡＭディスク領域５７および特定領域５９またはいずれか一方を設けたり、ＨＤＤ２３にバックアップ領域を設けたりするための処理をする。メモリ管理アプリケーション１０１は、コンピュータ１０がハングアップしたことをシステムＢＩＯＳ１０７が監視するための所定の動作をする。本実施の形態では所定の動作として監視フラグを設定する動作を採用することができるが、コンピュータ１０がハングアップしているか否かの状態をシステムＢＩＯＳ１０７に対して表明できるような他の動作または処理を採用してもよい。
【００４７】
文書作成アプリケーション１０３は、ＲＡＭディスク領域５７または特定領域５９を利用して文書を作成するプログラムである。ＯＳ１０５は、Ｗｉｎｄｏｗｓ（登録商標）、または、ＭＡＣ＿ＯＳ（登録商標）などを採用することができる。図２（Ａ）のように論理アドレス領域５３に保護領域を形成する際には、ＯＳ１０５はＰＡＥを備えているものとする。システムＢＩＯＳ１０７は、メイン・メモリ１５に本発明の保護領域を確保したり、コンピュータ１０がハングアップしたときに保護領域のデータをＨＤＤ２３にバックアップしたりする新規なコードを含む。システムＢＩＯＳ１０７はメモリ管理アプリケーション１０１により監視フラグが設定されているときはコンピュータ１０がハングアップしていないと判断し、監視フラグが設定されていないときはハングアップしたと判断する。
【００４８】
システムＢＩＯＳ１０７は、ＩＮＴ１３ｈの割り込みまたはその他のＨＤＤ２３に対するアクセスをするためのサービス・ルーチンを利用して、ＲＡＭディスク領域５７に格納されたデータをＨＤＤ２３にバックアップしり、ＨＤＤ２３からデータを読み取ってＲＡＭディスク領域５７にリストアしたりする。
【００４９】
デバイス・ドライバ１１１は、ＨＤＤ２３の動作を制御したりＯＳ１０５とＨＤＤ２３との間のデータ転送を制御したりするプログラムである。専用ドライバ１１３は、ＲＡＭディスク領域５７を仮想的にＨＤＤ２３と同等のディスク・ドライブとして動作させるためのプログラムである。専用ドライバ１１３は、ＲＡＭディスク領域５７が論理アドレス空間５３に形成される場合は、ＲＡＭディスク領域５７のアドレスをＯＳが認識する論理アドレス空間にマッピングする。専用ドライバ１１３は、ＯＳ１０５がＨＤＤ２３を管理するファイル・システムと同等のファイル・システムを備えており、ＯＳ１０５およびシステムＢＩＯＳ１０７に対してサービスを提供する新規なインターフェースを備えている。
【００５０】
ＩＣＨ２１はＳＭＩレジスタ２２を備え、ＣＰＵ１１にＳＭＩピンおよびＳＭＩＡＣＴピンで接続されている。ＩＣＨ２１は、ＣＰＵ１１が実行するプログラムの動作から独立して、数ミリ秒といった一定の周期でＳＭＩピンをアサートしてＳＭＩを発行する。ＩＣＨ２１は、ＳＭＩを発行する際に、ＳＭＩレジスタ２２にＳＭＩを発行する要因を設定する。ＣＰＵ１１は、ＳＭＩピンがアサートされるとＳＭＭで動作し、ＳＭＩＡＣＴピンをアサートしてＩＣＨ２１に通知する。
【００５１】
ＣＰＵ１１は、ＳＭＭに移行すると最初に必ずＳＭＩハンドラを実行する。ＳＭＩハンドラは、ＳＭＩが発行されたときにＩＣＨ２１のＳＭＩレジスタ２２を参照してＳＭＩの発生要因を調べ、システムＢＩＯＳ１０７による監視フラグの確認作業およびバックアップ処理が要求されていることを認識すると制御をシステムＢＩＯＳ１０７に移す。ＣＰＵ１１がＳＭＭで動作している間、ＭＣＨ１３はＳＭＲＡＭ領域のアドレスに対するアクセスは許容するが、ＳＭＭで動作していないときはＳＭＲＡＭ領域のアドレスに対するアクセスは、メイン・メモリ１５の他のアドレスへのアクセスとして処理する。
【００５２】
ＥＣ２９はＬＰＣバス２７から独立したラインでＩＣＨ２１のＳＭＩリクエスト・ピン（ＳＭＩＲＥＱ）に接続されており、ＳＭＩリクエスト・ピンをアサートすることでＩＣＨ２１にＳＭＩの発行を要求することができる。ＣＰＵ１１にハードウエア的な障害が発生した場合はＳＭＩを発行してもＳＭＭに遷移させることはできないが、ＥＣ２９はキーボード３１の入力をＣＰＵ１１から独立した動作で処理するため、ソフトウエアやＩＣＨ２１の誤作動でＳＭＩを発行できない場合には、キーボード３１に割り当てられた専用のキーからの入力に基づいてＳＭＩリクエスト・ピンをアサートできる。
【００５３】
［メイン・メモリのデータ構造］
図４は、コンピュータに電源が投入されブートが完了したときのメイン・メモリ１５にロードされたファイルのデータ構造を示す図である。メイン・メモリ１５には、一般領域１３１とＳＭＲＡＭ領域１３５とＡＣＰＩ＿ＮＶＳ領域１３７がＰＯＳＴコード１０９により形成されている。一般領域１３１はＯＳ１０５がアクセスできる論理アドレス空間で、内部に図２（Ｂ）、（Ｄ）に示したようにＲＡＭディスク領域５７が形成されている。
【００５４】
ＲＡＭディスク領域５７はＯＳ１０５がアクセスできずシステムＢＩＯＳ１０７だけがアクセスできるようにＰＯＳＴコードにより設定された論理アドレス空間である。ＡＣＰＩ＿ＮＶＳ領域１３７はＯＳ１０５およびシステムＢＩＯＳ１０７のいずれもアクセスできる論理アドレス空間である。ＡＣＰＩ＿ＮＶＳ領域１３７には、コンピュータ１０がハングアップしたか否かをシステムＢＩＯＳ１０７が監視するためにメモリ管理アプリケーション１０１により監視フラグ１２９が設定される。
【００５５】
一般領域１３１には、ＢＩＯＳ＿ＲＯＭ３３に格納されたプログラムおよびＨＤＤ２３に格納された専用ドライバ１１３、ＰＯＳＴコード１０９、システムＢＩＯＳ１０７、メモリ管理アプリケーション１０１、文書作成アプリケーション１０３およびＯＳ１０５などがロードされる。ＳＭＲＡＭ領域１３５には、ＳＭＩハンドラ１１３がロードされ、さらにＳＳＭ（State Save Map）１２７という領域が確保される。ＳＭＭ１２７は、ＣＰＵ１１がＳＭＭに移行する直前のレジスタやポインタなどのコンテキストを格納する記憶領域である。
【００５６】
［メモリ・データを保護する手順］
図５、図６は、データ保護システム１００がメイン・メモリに記憶されたデータをハングアップから保護する手順を説明するフローチャートである。ここでは、ＲＡＭディスク領域５７を図２（Ｂ）、（Ｄ）に示した論理アドレス空間５１に形成する場合を例にして説明するが、図５（Ａ）に示した論理アドレス空間５３に形成する場合は、ＯＳ１０５のＰＡＥを有効にすることで同様に実現することができる。ブロック２０１でコンピュータ１０の電源が投入されると、ブロック２０３でＣＰＵ１１は、最初にＢＩＯＳ＿ＲＯＭ３３の所定のアドレスにアクセスしてＰＯＳＴコード１０９を実行しブートを開始する。
【００５７】
ＰＯＳＴコード１０９はＣＰＵ１１のレジスタ、ＭＣＨ１３、メイン・メモリ１５などの検査と初期化を行い、メイン・メモリ１５が利用可能な状態になると、ＢＩＯＳ＿ＲＯＭ３３に格納されたプログラムおよびベクタ・テーブル１２１を図４に示したようにメイン・メモリ１５にロードする。このとき、ＰＯＳＴコード１０９は、メイン・メモリ１５上にＯＳ１０５がアクセスできる一般領域１３１、システムＢＩＯＳ１０７がアクセスできるＲＡＭディスク領域５７およびＳＭＲＡＭ領域１３７、およびＯＳ１０５とシステムＢＩＯＳ１０７がアクセスすることができるＡＣＰＩ＿ＮＶＳ領域１３７を形成する。
【００５８】
ブロック２０５でＯＳ１０５は、ＡＸレジスタにＥ８２０ｈを設定してＩＮＴ１５ｈ命令を発行し、自らがアクセスできる一般領域１３１およびＡＣＰＩ＿ＮＶＳ領域１３７とアクセスできないＲＡＭディスク領域５７およびＳＭＲＡＭ領域１３５を認識する。このとき、ＯＳ１０５は、ＲＡＭディスク領域５７の開始アドレスとサイズを認識して、メモリ管理アプリケーション１０１に知らせる。ブロック２０７では、メモリ管理アプリケーション１０１が専用ドライバ１１３にパラメータを設定して初期化する。
【００５９】
ブロック２０５では、システムＢＩＯＳ１０７によりＲＡＭディスク領域５７として利用可能な範囲が設定されたが、ブロック２０７では、メモリ管理アプリケーション１０１はその範囲内で実際にＲＡＭディスク領域５７として使用する範囲の開始アドレスとサイズを設定する。そして、メモリ管理アプリケーション１０１は、ＲＡＭディスク領域５７に対して固有のドライブ番号を付与する。文書作成アプリケーション１０３は、ドライブ番号が付与されたＲＡＭディスク領域５７を、ＨＤＤ２３の記憶領域の一部と同じように認識してデータの書き込みまたは読み出しを行うことができる。
【００６０】
ブロック２０９では、メモリ管理アプリケーション１０１が、ＨＤＤ２３のマスター・ブート・レコードに定義して形成したＨＤＤ２３の専用の記憶領域にバックアップ領域を確保してＯＳ１０５に通知する。通知を受けたＯＳ１０５は、バックアップ領域にはアクセスしないため、バックアップ領域はＲＡＭディスク領域５７に対する専用の記憶領域になる。メモリ管理アプリケーション１０１は、バックアップ領域をＯＳ１０５が認識できない別のパティションに形成することもできる。なお、バックアップ領域は、ＨＤＤ２３のマスター・ブート・レコードに一度設定しておけば、メモリ管理アプリケーション１０１がコンピュータ１０の起動ごとに作成する必要はない。
【００６１】
ブロック２１１では、メモリ管理アプリケーション１０１がシステムＢＩＯＳ１０７に、メイン・メモリ１５のＲＡＭディスク領域５７およびＨＤＤ２３のバックアップ領域のサイズ、開始アドレス、ドライブ番号などのアクセス情報を通知する。ブロック２１３では、システムＢＩＯＳ２１３が、バックアップ領域に保存されていたイメージ・ファイルをＲＡＭディスク領域５７にリストアする。このように、バックアップ領域とＲＡＭディスク領域５７との間では、記憶されている完全なディスク・イメージが転送される。
【００６２】
ブロック２１５では、メモリ管理アプリケーション１０１が、ブルースクリーンが表示されたあとのＯＳ１０５による自動再起動機能を停止するように設定する。この設定により、コンピュータ１０の異常がブルースクリーンを伴うものである場合に、バックアップ処理が完了する前にシャットダウンすることをより確実に防ぐことができる。ブロック２１７では、メモリ管理アプリケーション１０１がＡＣＰＩ＿ＮＶＳ領域１３７に監視フラグ１２９が設定されていればそれを解除する。ブートしてからここまでの手順では、監視フラグ１２９が設定されることはないので、これは念のための手順であり省くこともできる。
【００６３】
ブロック２１９では、ブート・ファイルがすべてロードされてブートが完了する。このときＣＰＵ１１は、プロテクト・モードで動作している。プロテクト・モードでは、ＯＳ１０５が動作してメモリ管理アプリケーション１０１および文書作成アプリケーション１０３にさまざまなサービスを提供する。なお、ブロック２０７からブロック２１７までの処理は、ブート完了後に文書作成アプリケーション１０３がＲＡＭディスク領域５７を使用する際にメモリ管理アプリケーション１０１を起動して行うようにしてもよい。
【００６４】
ブロック２２１では、ユーザが文書作成アプリケーション１０３を実行して文書作成作業を行う。文書作成アプリケーション１０３が、作業に利用するメイン・メモリ１５上の領域は、ＲＡＭディスク領域１１３とは異なる一般領域１１３の一部である。その領域は、ＯＳ１０５により割り当てられるが、コンピュータ１０がハングアップしたときに保護はされない。文書作成アプリケーション１０３はＲＡＭディスク領域５７をＨＤＤ２３と同じような１つの独立したディスク・ドライブとして認識し、ＯＳ１０５および専用ドライバ１１３を通じてＲＡＭディスク領域５７からファイルを一般領域１３１に読み出したり、ファイルをＲＡＭディスク領域５７に保存したりすることができる。
【００６５】
ユーザが自動または手動で一般領域１１３のファイルをＲＡＭディスク領域５７に保存しながら文書作成アプリケーション１０３による作業をしている間に、図６のブロック２５１に移行する。ブロック２５１はコンピュータ１０が実行する処理手順の一部ではなく、本実施の形態にかかるデータ保護の特徴を説明するために挿入したコンピュータ１０の動作状態を示している。ブロック２５１は、メモリ管理アプリケーション１０１が正常に動作しているか否かの２つの状態を示している。
【００６６】
この時点でのメモリ管理アプリケーション１０１の作業は、ブロック２５３で監視フラグ１２９を設定することであり、メモリ管理アプリケーション１０１が正常に動作するということは監視フラグ１２９を設定したことを意味している。メモリ管理アプリケーション１０１が監視フラグ１２９を設定するには、自らが正常に動作するだけでなく、メモリ管理アプリケーション１０１の正常な動作に影響を与えるＯＳ１０５、デバイス・ドライバ、およびハードウエアなども正常に動作していることが前提になる。
【００６７】
カーネル・モードで動作するＯＳ１０５やデバイス・ドライバがハングアップして未処理例外を引き起こしたり、ハードウエア・エラーが発生したりして、ＬＣＤ１９にブルースクリーンを表示するような状態に至ると、コンピュータ１０はその状態で動作を停止し、シャットダウンしない限り正常な動作状態に戻すことができない。シャットダウンすると、ＨＤＤ２３にバックアップされていないＲＡＭディスク領域５７のデータは消失することになる。
【００６８】
ブルースクリーンを表示する状態になるとメモリ管理アプリケーション１０１は、監視フラグ１２９の設定をすることができない。ブルースクリーンの表示は、ＯＳ１０５が行う。したがって、デバイス・ドライバがハングアップしてＯＳ１０５が制御権を取得できなくなったような場合は、ブルースクリーンが表示されないでコンピュータ１０またはＣＰＵ１１が動作を停止することもある。この場合もメモリ管理アプリケーション１０１は監視フラグ１２９を設定できない。
【００６９】
メモリ管理アプリケーション１０１が正常に動作する場合はブロック２５３で監視フラグ１２９を設定してブロック２５５に移行する。コンピュータ１０のハードウエアまたはソフトウエアにメモリ管理アプリケーション１０１が監視フラグ１２９を設定できないような異常が生じている場合は、メモリ管理アプリケーション１０１が監視フラグ１２９を設定しないで直接ブロック２５５に移行する。
【００７０】
ブロック２５５では、ＩＣＨ２１が数ミリ秒の周期で周期的にＣＰＵ１１に対してＳＭＩを発行している。このときＩＣＨ２１は、ＳＭＩレジスタ２２に、システムＢＩＯＳ１０７にブロック２６１から２６９までの処理をさせることを示す発生要因を設定する。ＩＣＨ２１がすでにＳＭＭで動作している場合は、当該ＳＭＩの発行は無視される。ブロック２５５ではＣＰＵ１１がプロテクト・モードで動作しているときに発行されたＳＭＩだけが実行される。
【００７１】
ＳＭＩは、ＩＣＨ２１が専用のＳＭＩピンを利用して発行しているので、ＣＰＵ１１がハングアップしても高い確率でＣＰＵ１１をＳＭＭに遷移させることができる。しかし、ＩＣＨ２１の動作不良がハングアップの原因になっているような特殊な事情のときには、ＳＭＩを発行できない状態でコンピュータ１０がハングアップすることもあり得る。
【００７２】
ブロック２５７もコンピュータ１０の処理手順の一部ではなく、コンピュータ１０の動作状態を示している。ブロック２５７は、コンピュータ１０がＳＭＩを発行できない状態でハングアップしたか、それ以外の状態かの２つの状態のいずれかを示している。それ以外の状態は、ハングアップしていない状態と、ハングアップしたがＩＣＨ２１がＳＭＩを発行できる状態を含んでいる。
【００７３】
コンピュータ１０がハングアップするときは、ブルースクリーンを表示する場合と表示しない場合がある。ユーザがブルースクリーンの表示またはコンピュータ１０の動作状態に基づいてコンピュータ１０がハングアップしたと判断したときは、ブロック２５９に移行してキーボード３１の特定のキーを押下して強制的にＳＭＩを発行させブロック２６１に移行する。ただし、ハングアップしてもブロック２６１、２６３、２６５の手順でバックアップ処理が行われて再起動するような場合は、ＳＭＩが発行されたことになるので、ユーザはハングアップ後の様子をしばらく観察してから特定のキーを押下することになる。
【００７４】
特定のキーの押下はＣＰＵ１１から独立して動作するＥＣ２９で検出され、ＥＣ２９はＩＣＨ２１のＳＭＩリクエスト・ピンをアサートしてＳＭＩの発行を要求する。ＩＣＨ２１は、ＥＣ２９に接続されたＳＭＩリクエスト・ピンがアサートされると、当該ピンによりあらかじめ定められた発生要因をＳＭＩレジスタ２２に設定して、ＣＰＵ１１のＳＭＩピンをアサートする。ＳＭＩの発生要因は、ブロック２５５と同じである。
【００７５】
ブロック２５７でコンピュータ１０がハングアップしていない状態またはハングアップしたがＩＣＨ２１がＳＭＩを発行できる状態の場合は、ブロック２６１に移行する。ブロック２５５またはブロック２５９でＳＭＩピンがアサートされるとＣＰＵ１１は、その時点でのレジスタやポインタの内容であるコンテキストをメイン・メモリ１５のＳＳＭ１２７に格納して、ＩＣＨ２１に対してＳＭＩＡＣＴピンを通じてＳＭＭで動作したことを通知する。ＣＰＵ１１がＳＭＭに移行すると、ブロック２６１でシステムＢＩＯＳ１０７は、ＡＣＰＩ＿ＮＶＳ領域１３７に監視フラグ１２９が設定されているか否かを判断する。
【００７６】
監視フラグ１２９が設定されていないと判断した場合は、ブロック２６３に移行して、システムＢＩＯＳ１０７はＣＰＵ１１のレジスタにパラメータを設定してＩＮＴ１３ｈを発行し、ＲＡＭディスク領域５７に格納されたイメージ・ファイルをＨＤＤ２３のバックアップ領域に保存する。ブロック２６５では、システムＢＩＯＳ１０７が、ＥＣ２９にコンピュータ１０の再起動を要求しブロック２０３に戻る。ユーザは、ブロック２１５でブルースクリーン後の自動再起動を停止したにもかかわらず、ブルースクリーンが発生した後またはコンピュータ１０が動作を停止した後にコンピュータ１０が自動再起動したことで、ＲＡＭディスク領域５７のイメージ・ファイルがＨＤＤ２３のバックアップ領域に保存されたことを認識する。
【００７７】
ブロック２６１で監視フラグ１２９が設定されていることを確認したシステムＢＩＯＳ１０７は、コンピュータ１０が正常に動作していると判断して、ブロック２６７に移行して監視フラグ１２９を解除する。ブロック２６９では、システムＢＩＯＳ１０７がＲＳＭ（Return from System Management instruction）命令を実行して、ＩＣＨ２１がＳＭＩピンをネゲートするようにＳＭＩレジスタ２２に設定する。つづいてシステムＢＩＯＳ１０７はＳＳＭ１２７に格納しておいたコンテキストをＣＰＵ１１に戻してＣＰＵ１１をＳＭＭからプロテクト・モードに移行させる。プロテクト・モードに移行したＣＰＵ１１はＳＭＭで動作する直前の状態から動作を再開する。
【００７８】
ブロック２７１では、ＯＳ１０５が提供するＬＣＤ１９の画面を通じてユーザがコンピュータの電源を停止してシャットダウンをする指示をした場合は、ブロック２７３に移行する。なお、メイン・メモリ１５の電源が停止するハイバネーションのときはメイン・メモリ１５のファイル・イメージがＨＤＤ２３に保存され、サスペンドのときはメイン・メモリ１５の電源は維持されるので、いずれの場合もブロック２７３に移行する必要はない。
【００７９】
シャットダウンの指示を受けたＯＳ１０５は、システムＢＩＯＳ１０７を通じてＥＣ２９にＳＭＩの発行を要求する。ブロック２７３でＥＣ２９がＩＣＨ２１のＳＭＩレジスタ２２にＳＭＩの発生要因を設定すると、ＩＣＨ２１はブロック２５５で発行したＳＭＩから独立したタイミングでＳＭＩを発行し、ＣＰＵ１１はＳＭＭに移行する。ＳＭＭで動作する間にＣＰＵ１１で実行されるシステムＢＩＯＳ１０７は、ＲＡＭディスク領域５７に格納されたデータをイメージ・ファイルとしてＨＤＤ２３のバックアップ領域に保存する。
【００８０】
その後、システムＢＩＯＳ１０７がバックアップの終了をＥＣ２９に通知すると、ＥＣ２９はブロック２７５でコンピュータ１０の電源を停止してシャットダウンする。ブロック２７１でユーザがコンピュータ１０を停止しない場合は、ブロック２２１に戻って文書作成アプリケーション１０３による作業を継続する。上記の手順によれば、メモリ管理アプリケーション１０１が監視フラグ１２９を設定できない場合は、その原因がいかなるものであってもバックアップ処理が行われる。よって、メモリ管理アプリケーション１０１自体が動作不良の場合もバックアップは行われるが、不必要なバックアップ処理はコンピュータのパフォーマンスを若干低下させるだけでデータ保護システム１００は安全な方向で動作する。
【００８１】
コンピュータ１０が正常に動作しているときは、ブロック２５３でプロテクト・モードの間にメモリ管理アプリケーション１０１によって設定された監視フラグ１２９は、ブロック２６７でＳＭＭの間にシステムＢＩＯＳ１０７によって解除され、再びブロック２５３で設定される。コンピュータ１０が起動したときは、メモリ管理アプリケーション１０１が実行されたタイミングで監視フラグ１２９を設定することができる。ブロック２７１からブロック２２１への移行を通じて、文書作成アプリケーション１０１が再び監視フラグ１２９を設定する場合は、システムＢＩＯＳ１０７がＣＰＵ１１をプロテクト・モードに遷移させたタイミングで監視フラグ１２９を設定することができる。あるいは、メモリ管理アプリケーション１０１は、ブロック２５５のＳＭＭの周期からは独立して、定期的にＮＶＳ領域１３７に監視フラグを上書き方式で書き込むようにしてもよい。
【００８２】
［データ保護の信頼性］
図５、図６の手順において実施したデータ保護システム１００によるＲＡＭディスク領域５７に記憶されたデータ保護の信頼性について説明する。本実施の形態においてデータ保護システム１００がシャットダウン前のバックアップ処理を失敗するのは、以下に説明するような条件が成立した場合であると考えられ、確率は低いと想定することができる。
【００８３】
まず、メモリ管理アプリケーション１０１が誤って監視フラグ１２９を設定するような誤動作をし、これにコンピュータ１０のシャットダウンを伴うようなハングアップが発生する条件が重なった場合には、ブロック２６３のバックアップ処理ができない。しかし、ハングアップしたときにメモリ管理アプリケーション１０１が監視フラグ１２９を設定する誤りは、ハングアップしていないときに監視フラグ１２９を設定しない誤りよりは少ないと考えられ、このような条件が重なることは非常にまれであると想定できる。ハングアップしていないときにメモリ管理アプリケーション１０１が誤って監視フラグ１２９を設定しない場合は、余分な動作としてのバックアップ処理が行われるので本実施の形態にかかるデータ保護システム１００は安全方向で動作する。
【００８４】
つぎに、メモリ管理アプリケーション１０１が正常に動作しないために監視フラグ１２９が設定されない状態になったときに、ＣＰＵ１１がＳＭＭに移行できない場合を想定することができる。しかし、ＳＭＭに移行する前にハングアップした場合は、ブロック２５９でユーザが強制的にＳＭＭを実行することでバックアップ処理をすることができる。このとき、キーボード３１およびＥＣ２９は、ＣＰＵ１１から独立して動作しているため、ＥＣ２９とＩＣＨ２１が正常に動作してＳＭＩＲＥＱラインとＳＭＩラインが確保されていれば、多くの場合ＣＰＵ１１をＳＭＭに移行させることができる。
【００８５】
また、ブロック２５５では、ＳＭＩの発行をほとんどソフトウエアに依存しないでハードウエアが行うことにより、ソフトウエアに起因したＳＭＩ発行のトラブルを低減することができる。したがって、ＳＭＭに移行できない現実的な原因は、ＩＣＨ２１またはＥＣ２９などのハードウエアの故障のような限られたものになる。
【００８６】
さらに、バックアップ処理が完了する前に、コンピュータ１０がシャットダウンするとＲＡＭディスク領域５７のデータは保護されないことになる。まず、ブルースクリーンの表示を伴うような異常の場合は、ブロック２１５で再起動しないように設定しているのでシャットダウンする確率は低くなっている。また、ＣＰＵ１１がＳＭＭで動作している間は、プロテクト・モードでの動作は停止していると考えてよいので、ハングアップの発生からシャットダウンまでの状態の進行は停止する。
【００８７】
したがって、コンピュータ１０がハングアップしても、バックアップ処理が完了する前にシャットダウンする可能性は低い。以上のとおり、データ保護システム１００は、ＲＡＭディスク領域５７に記憶されたデータを頻繁にＨＤＤ２３にバックアップしなくてもコンピュータ１０のハングアップから有効に保護することができる。その結果、メイン・メモリ１５の容量を有効に活用することができ、かつ、安全で高速な仮想ディスク・ドライブを実現することができる。
【００８８】
［一時的な作業領域としてのデータ保護］
図３のデータ保護システム１００では、文書作成アプリケーション１０３がＲＡＭディスク領域５７に保存したデータは保護されるが、メイン・メモリ１５の一般領域１３１に記憶された作業中のデータは保護されない。図７は、作業中のデータを保護するデータ保護システム３００の構成を示す機能ブロック図である。データ保護システム３００は、図２（Ｃ）、（Ｅ）に示すようにメイン・メモリ１５の論理アドレス空間５１、５５に作業領域として利用する特定領域５９を設ける。
【００８９】
メイン・メモリ１５に特定領域５９を設ける方法およびＨＤＤ２３にバックアップ領域を設ける方法は、データ保護システム１００において採用したＲＡＭディスク領域５７を設ける方法およびバックアップ領域を設ける方法に準ずる。特定領域５９は、作業中にコンピュータ１０がハングアップした場合に、シャットダウンする前に作業中のデータをＨＤＤ２３のバックアップ領域に保存できる保護領域である。
【００９０】
図７が図３と異なるのは、メモリ管理アプリケーション３０１とシステムＢＩＯＳ３０５の機能が一部異なり、さらに、デバイス・ドライバ１１１とＯＳ１０５との間に中間ドライバ３０３が挿入されている点である。また、ＨＤＤ２３のバックアップ領域は、バックアップされたファイルを文書作成アプリケーション１０３が容易に取得するためにＯＳ１０５が認識できる領域が望ましい。
【００９１】
つぎに、図８、図９を参照して保護システム３００の動作を説明する。ブロック４０１からブロック４１９までは、基本的に図５のブロック２０１からブロック２１９のＲＡＭディスク領域５７を特定領域５９に対応させて同じ手順で実行することができる。以下、図５、図６の手順と異なる点を中心に説明する。メモリ管理アプリケーション１０１は起動中に、自らの識別子をデバイス・ドライバ１１１に渡して、デバイス・ドライバ１１１がメモリ管理アプリケーション１０１にメッセージを送ることができるようにしておく。
【００９２】
ブロック４０３では、ＰＯＳＴコード１０９が特定領域５９をＯＳ１０５が認識できる一般領域１３１に形成する。そして、ブロック４０５でＯＳ１０５は、ＡＸレジスタにＥ８２０ｈを設定してＩＮＴ１５ｈ命令を発行し、特定領域５９の開始アドレスとサイズを認識する。その結果、ＯＳ１０５は、特定領域５９に文書作成アプリケーション１０３の作業領域を割り当てることができるようになる。ブロック４０９では、バックアップしたデータを文書作成アプリケーション１０３が容易に取り出せるように、ＯＳ１０５がアクセスできる領域にＨＤＤ２３のバックアップ領域を設けることが望ましい。
【００９３】
また図９には、ブロック２１３に対応する手順は存在しない。特定領域５９は、ＲＡＭディスク領域５７のように仮想ディスク・ドライブとしてデータを永続的に保存するものではなく、永続的な保存先はＨＤＤ２３である点ではメイン・メモリ１５の一般領域と同等である。したがって、ＨＤＤ２３に格納されたファイルはバックアップではなく主たるファイルとなる。ブロック４２１でユーザは文書作成アプリケーション１０３を実行してＨＤＤ２３に新規にファイルを作成するか、または、編集のためにすでにＨＤＤ２３に保存しておいたファイルをメイン・メモリ１５に読み出すためのＡＰＩ関数を呼び出す。
【００９４】
ブロック４２３で中間ドライバ３０３は、文書作成アプリケーション１０３がＨＤＤ２３にファイルを作成または編集するためにアクセスするＡＰＩ関数をフックして、一時的にキューに保管し、メモリ管理アプリケーション３０１に通知する。メモリ管理アプリケーション３０１は、ＬＣＤ１９にポップアップ・ウインドウを表示して、ユーザから特定領域５９を使用するか否かの指示を受ける。ユーザが特定領域５９を使用しない指示をした場合は、ブロック４２５に移行して中間ドライバ１１１はキューに保管したＡＰＩ関数をデバイス・ドライバ１１１に渡す。そして、文書作成アプリケーション１０３は、特定領域以外の一般領域１３１を作業領域としてファイルの作成または編集をする。
【００９５】
ブロック４２３でユーザが特定領域５９を使用する指示をした場合にはブロック４２７に移行する。特定領域５９を使用する指示を受けた場合には、メモリ管理アプリケーション３０１はＯＳ１０５に通知する。通知を受けたＯＳ１０５は、以後、メモリ管理アプリケーション３０１の作業領域を特定領域５９に設定する。なお、ユーザはあらかじめメモリ管理アプリケーションに特定領域５９の使用をするか否かの設定をしておき、ブロック４２３のユーザによる指示を省くことができる。ブロック４２７では、ユーザは特定領域５９を作業領域として利用してファイルの作成または編集をする。
【００９６】
ブロック４５１からブロック４６９までは、ブロック２５１からブロック２６９までの手順と同じである。ブロック４７１では、ユーザが作成または編集したファイルを保存するために文書作成アプリケーション１０３に対して保存操作をすると、文書作成アプリケーション１０３がＡＰＩ関数を呼び出す。ブロック４７３で中間ドライバ３０３は、当該ＡＰＩ関数をデバイス・ドライバ１１１に渡し、ファイルはＨＤＤ２３のバックアップ領域とは異なる一般の領域に保存される。
【００９７】
ユーザが保存操作をしない場合は、ブロック４２１に戻ってファイルの編集が継続される。作業中にハングアップしたときは、特定領域５９に記憶されていたデータはブロック４６３でＨＤＤ２３のバックアップ領域に保存される。バックアップ領域に保存されたデータは、再起動した後に文書作成アプリケーション１０３がＨＤＤ２３にアクセスして取得することができる。
【００９８】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００９９】
１０…コンピュータ
１００、３００…データ保護システム
【図１】
0005378308.tif 000002
【図２】
0005378308.tif 000003
【図３】
0005378308.tif 000004
【図４】
0005378308.tif 000005
【図５】
0005378308.tif 000006
【図６】
0005378308.tif 000007
【図７】
0005378308.tif 000008
【図８】
0005378308.tif 000009
【図９】
0005378308.tif 000010
【図１０】
0005378308.tif 000011