(57)【要約】  【課題】  アプリケーションが正常な状態でなくなっても、レスポンスへの影響を少なく、作業結果のデータを正常にファイルとして保存できるデータファイル保存方法およびデータファイル保存プログラム、ならびに記録媒体を提供する。  【解決手段】  ホストアプリケーション１１にアプリケーション監視プロセスクライアント１３を組み込みデータセーフ機能付きアプリケーション１０が構成される。ホストアプリケーション１１とは別プロセスのアプリケーション監視プロセス１５によって、ローカルメモリに記憶されたホストアプリケーション１１の作業中データ１２に基づくファイルデータをホストアプリケーション１１が読み取り可能なファイル形式でグローバルメモリ１７に記憶する。【選択図】        図２
2006031497.tif 000002
【特許請求の範囲】
【請求項１】
ホストアプリケーションの起動に伴いアプリケーション監視プロセスクライアントが実行させるステップと、
上記アプリケーション監視プロセスクライアントによって、上記ホストアプリケーションとは別プロセスのアプリケーション監視プロセスを起動するステップと、
上記アプリケーション監視プロセスにより、上記アプリケーション監視プロセスクライアントと上記アプリケーション監視プロセスとで共有可能な第１の領域をメモリに確保するステップと、
上記ホストアプリケーションの、メモリに確保された第２の領域に記憶された作業データに基づくデータを、上記ホストアプリケーションが読み取り可能なファイル形式で上記第１の領域に所定のタイミングで記憶するステップとを有する
ことを特徴とするデータファイル保存方法。
【請求項２】
さらに、上記ホストアプリケーションが正常に動作しているか否かを判別し、正常に動作していないと判別されたときに、上記アプリケーション監視プロセスによって、上記第１の領域に記憶されているデータを補助記憶装置にデータファイルとして自動的に保存するステップを有することを特徴とする請求項１に記載のデータファイル保存方法。
【請求項３】
上記判別は、上記アプリケーション監視プロセスによって、上記アプリケーション監視プロセスクライアントから上記アプリケーション監視プロセスに所定の時間間隔で提供されるキープアライブ通知が所定時間以上途絶えたときに、上記ホストアプリケーションが正常に動作していないと判別されることを特徴とする請求項２に記載のデータファイル保存方法。
【請求項４】
上記所定のタイミングは、上記第１の領域に記憶されているデータに変更が加わる操作が行われたときであることを特徴とする請求項１に記載のデータファイル保存方法。
【請求項５】
上記所定のタイミングは、所定の時間間隔であることを特徴とする請求項１に記載のデータファイル保存方法。
【請求項６】
さらに、上記第１の領域をメモリに確保した際に、上記アプリケーション監視プロセスクライアントから上記ホストアプリケーションに対して、上記ホストアプリケーションが上記補助記憶装置にアクセスするように上記第１の領域にアクセスできるような仮想的なファイルハンドルを提供するステップを有することを特徴とする請求項１に記載のデータファイル保存方法。
【請求項７】
さらに、上記アプリケーション監視プロセスによって、上記第１の領域に記憶されているデータを補助記憶装置にデータファイルとして、所定の時間間隔で自動的に保存するステップを有することを特徴とする請求項１に記載のデータファイル保存方法。
【請求項８】
コンピュータに、
ホストアプリケーションの起動に伴いアプリケーション監視プロセスクライアントを実行させるステップと、
上記アプリケーション監視プロセスクライアントによって、上記ホストアプリケーションとは別プロセスのアプリケーション監視プロセスを起動するステップと、
上記アプリケーション監視プロセスにより、上記アプリケーション監視プロセスクライアントと上記アプリケーション監視プロセスとで共有可能な第１の領域をメモリに確保するステップと、
上記ホストアプリケーションの、メモリに確保された第２の領域に記憶された作業データに基づくデータを、上記ホストアプリケーションが読み取り可能なファイル形式で上記第１の領域に所定のタイミングで記憶するステップとを実行させる
ことを特徴とするデータファイル保存プログラム。
【請求項９】
コンピュータに、
ホストアプリケーションの起動に伴いアプリケーション監視プロセスクライアントを実行させるステップと、
上記アプリケーション監視プロセスクライアントによって、上記ホストアプリケーションとは別プロセスのアプリケーション監視プロセスを起動するステップと、
上記アプリケーション監視プロセスにより、上記アプリケーション監視プロセスクライアントと上記アプリケーション監視プロセスとで共有可能な第１の領域をメモリに確保するステップと、
上記ホストアプリケーションの、メモリに確保された第２の領域に記憶された作業データに基づくデータを、上記ホストアプリケーションが読み取り可能なファイル形式で上記第１の領域に所定のタイミングで記憶するステップとを実行させるデータファイル保存プログラムを記録した
ことを特徴とするコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データファイル保存方法およびデータファイル保存プログラム、ならびに記録媒体に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータなどのコンピュータ機器の普及に伴い、コンピュータ機器を利用するワードプロセッサソフト、表計算ソフト、画像変換ソフトなど様々なアプリケーションソフトウェア（以下、アプリケーションと称する）が使用されている。
【０００３】
このようなアプリケーションを用いて作業を行う場合、作業途中状態のデータは、通常、電源が断たれると記憶状態を維持できない半導体メモリなどの揮発性の記憶装置に一時的に記憶される。そして、ユーザが明示的にアプリケーションの保存機能を実行すると、その揮発性の記憶装置に一時的に記憶された作業途中状態のデータに基づき、作業結果のデータファイルを作成し、作成したデータファイルを、電源が供給されてなくても記憶状態を維持できるハードディスクドライブなどの不揮発性の記憶装置に保存する。
【０００４】
アプリケーションは、内部または外的要因により、外部からの入力を全く受け付けない（所謂フリーズ）状態になったり、異常終了したりする可能性を少なからず持っている。ここで、図１１を参照して、通常のパーソナルコンピュータで使用されるアプリケーションがフリーズしたときの状態について説明する。アプリケーション２００が起動すると、オペレーティングシステムがアプリケーション２００に対して、揮発性であるメインメモリの所定メモリ領域を論理的に割り当てる。アプリケーション２００は、この割り当てられたメモリ領域を使用してデータ処理を行う。
【０００５】
アプリケーション２００が正常な状態のときには、ユーザ２０２がアプリケーション２００に対して明示的にデータの保存を指示すると、メインメモリ上の作業中データ２０１に基づく作業結果のデータが、不揮発性のハードディスク２０３にデータファイル２０４として保存される。
【０００６】
しかしながら、アプリケーション２００がフリーズ状態になると、アプリケーション２００は、ユーザ２０２からの入力が受け付けられなくなるため、ユーザ２０２からの明示的なデータの保存の指示も受け付けられなくなる。依って、フリーズ状態となった後は、メインメモリ上の作業中データ２０１に基づく作業結果のデータを、ハードディスク２０３にデータファイル２０４として保存することができなくなる。
【０００７】
このように、通常のアプリケーションは、作業途中でフリーズ状態になったり異常終了したりした場合に、不揮発性記憶装置に保存されていない揮発性記憶装置上の作業途中状態のデータを利用することができない。これでは、ユーザは、最後に保存を実行してからフリーズ状態または異常終了状態となる直前までの作業内容を失ってしまうことになる。
【０００８】
そこで、このような事態を避けるために、例えば、作業途中状態のデータに何らかの変更が加わる操作が行われる度に、揮発性記憶装置上の作業途中状態のデータを、不揮発性記憶装置に自動的に保存するようなアプリケーションが存在する。また、例えば、ユーザの明示的な保存の実行に加え、アプリケーションによって、ユーザに予め設定された時間、または決められた一定時間周期で揮発性記憶装置上の作業途中状態のデータを不揮発性記憶装置へ自動的に保存するようなアプリケーションが存在する。
【０００９】
これによって、アプリケーションがフリーズ状態になったり異常終了したりした場合であっても、作業途中状態のデータを保存することができる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
作業途中状態のデータに何らかの変更が加えられる操作が行われる度に、揮発性記憶装置上の作業途中状態のデータを、不揮発性記憶装置に自動的に保存する場合、少量のデータを扱うアプリケーションにとっては問題にならないことが多い。しかしながら、不揮発性記憶装置への書き込み速度は、揮発性記憶装置への書き込み速度に比べて各段に低速であることから、ある一定量以上のデータを扱うアプリケーションでは、操作レスポンスが低下してしまうという問題点があった。
【００１１】
また、アプリケーションによって、ユーザに予め設定された時間、または決められた一定時間周期で揮発性記憶装置上の作業途中状態のデータを不揮発性記憶装置へ自動的に保存する場合、自動保存機能が発動してから保存が終了するまでの間、一時的に操作レスポンスが低下してしまうという問題点があった。依って、短い周期で定期的に自動保存を行うことが困難であった。
【００１２】
したがって、この発明の目的は、アプリケーションがフリーズまたは異常終了した場合など、正常な状態でなくなっても、レスポンスへの影響を少なく、作業結果のデータを正常にファイルとして保存できるデータファイル保存方法およびデータファイル保存プログラム、ならびに記録媒体を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、この発明の第１の発明は、ホストアプリケーションの起動に伴いアプリケーション監視プロセスクライアントが実行させるステップと、アプリケーション監視プロセスクライアントによって、ホストアプリケーションとは別プロセスのアプリケーション監視プロセスを起動するステップと、アプリケーション監視プロセスにより、アプリケーション監視プロセスクライアントとアプリケーション監視プロセスとで共有可能な第１の領域をメモリに確保するステップと、ホストアプリケーションの、メモリに確保された第２の領域に記憶された作業データに基づくデータを、ホストアプリケーションが読み取り可能なファイル形式で第１の領域に所定のタイミングで記憶するステップとを有することを特徴とするデータファイル保存方法である。
【００１４】
また、第２の発明は、コンピュータに、ホストアプリケーションの起動に伴いアプリケーション監視プロセスクライアントを実行させるステップと、アプリケーション監視プロセスクライアントによって、ホストアプリケーションとは別プロセスのアプリケーション監視プロセスを起動するステップと、アプリケーション監視プロセスにより、アプリケーション監視プロセスクライアントとアプリケーション監視プロセスとで共有可能な第１の領域をメモリに確保するステップと、ホストアプリケーションの、メモリに確保された第２の領域に記憶された作業データに基づくデータを、ホストアプリケーションが読み取り可能なファイル形式で第１の領域に所定のタイミングで記憶するステップとを実行させることを特徴とするデータファイル保存プログラムである。
【００１５】
また、第３の発明は、コンピュータに、ホストアプリケーションの起動に伴いアプリケーション監視プロセスクライアントを実行させるステップと、アプリケーション監視プロセスクライアントによって、ホストアプリケーションとは別プロセスのアプリケーション監視プロセスを起動するステップと、アプリケーション監視プロセスにより、アプリケーション監視プロセスクライアントとアプリケーション監視プロセスとで共有可能な第１の領域をメモリに確保するステップと、ホストアプリケーションの、メモリに確保された第２の領域に記憶された作業データに基づくデータを、ホストアプリケーションが読み取り可能なファイル形式で第１の領域に所定のタイミングで記憶するステップとを実行させるデータファイル保存プログラムを記録したことを特徴とするコンピュータで読み取り可能な記録媒体である。
【発明の効果】
【００１６】
この発明によれば、ホストアプリケーションとは別プロセスのアプリケーション監視プロセスによって、第２の領域に記憶されたホストアプリケーションの作業データに基づくファイルデータを、ホストアプリケーションが読み取り可能なファイル形式で第１の領域に記憶するため、アプリケーションがフリーズ状態となったり、異常終了したりするなど、正常に動作しなくなった場合でも、前回の保存から正常に動作しなくなるまでの間の作業データを無駄にしないようにすることができる。
【００１７】
また、第２の領域に記憶されたホストアプリケーションの作業データに基づくファイルデータを第１の領域に記憶するため、第２の領域から第１の領域へ記憶する所定のタイミングが短い時間間隔であっても、レスポンスへの影響を少なくすることができる。
【発明を実施するための最良の形態】
【００１８】
以下、この発明の実施の形態について図面を参照して説明する。まず、この発明の一実施形態によるデータファイル保存方法およびデータファイル保存システムを適用可能なコンピュータ機器について説明する。図１は、この発明の一実施形態によるコンピュータシステムの構成の一例である。なお、本明細書中における「システム」とは、複数の装置が論理的に集合したものをいい、各構成の装置が同一筐体中にあるか否かは問わない。
【００１９】
コンピュータシステム１は、例えば、入力装置２、ＣＰＵ（Central Processing Unit）３、出力装置４、ドライブ５、メインメモリ６およびハードディスクドライブ７を有するパーソナルコンピュータなどの一般的なコンピュータ機器である。入力装置２は、キーボード、マウスなどの、ユーザ側からコンピュータシステム１に対してデータを入力する装置である。
【００２０】
ＣＰＵ３は、ハードディスクドライブ７からメインメモリ６上にプログラムをロードして、ロードしたプログラムに基づく処理を行う。また、ＣＰＵ３は、入力装置２、出力装置４、ドライブ５、メインメモリ６およびハードディスクドライブ７などのコンピュータシステム１を構成する各装置を制御する。
【００２１】
出力装置４は、ディスプレイ装置、プリンタなどの、コンピュータシステム１からユーザ側に対して情報を提供するための装置である。
【００２２】
ドライブ５は、コンパクトディスク、フロッピー（登録商標）ディスク、ＤＶＤ（Digital Versatile Disc）、メモリカードなどの、着脱可能な記録媒体に記録されているデータを読み取る装置である。これによって、コンピュータシステム１は、例えば、コンパクトディスク、フロッピーディスク、ＤＶＤ、メモリカードなどの着脱可能な記録媒体に記録されているプログラムを読み込み、インストールすることができる。また、例えば、コンピュータシステム１に通信機能を持たせることで、コンピュータシステム１は、ネットワークからプログラムをダウンロードしてインストールすることができる。
【００２３】
メインメモリ６は、ＲＡＭ（Random Access Memory）などからなる電源が断たれると記憶状態を維持できない揮発性の記憶装置である。ハードディスクドライブ７は、電源が供給されてなくても記憶状態を維持できる不揮発性の記憶装置であり、コンピュータシステム１の補助記憶装置である。メインメモリ６は、ハードディスクドライブ７と比較して動作速度は速いが記憶容量が少ない。ハードディスクドライブ７は、メインメモリ６よりも記憶容量は大きいが動作速度が遅い。コンピュータシステム１は、記憶装置をメインメモリ６とハードディスクドライブ７との階層構造とすることで、記憶装置のアクセス時間と記憶容量との間に存在するトレードオフの関係に対処している。
【００２４】
メインメモリ６は、動作速度が速く、揮発性であることから、例えば、アプリケーション実行時の一時的な作業データの記憶に使用される。ハードディスクドライブ７は、容量が大きく、不揮発性であることから、例えば、プログラムファイル、データファイルなどのファイルの保存に使用される。また、これに限らず、ハードディスクドライブ７は、アプリケーション実行時の一時的な作業データの記憶にも使用することができる。
【００２５】
ハードディスクドライブ７には、システム関連のプログラムおよびアプリケーションプログラムなどが記憶されている。コンピュータシステム１が起動すると、ハードディスクドライブ７からメインメモリ６のシステムエリアにオペレーティングシステム（以下、ＯＳと称する）などのシステム関連のプログラムがロードされる。
【００２６】
ＯＳは、アプリケーションとコンピュータシステム１との間に介在する基本ソフトウェアである。ＯＳは、コンピュータシステム１を効率良く使用するように、例えば、入出力の管理、プロセスの管理、メモリの管理、ファイルの管理および時間の管理などを行っている。また、一実施形態で使用されるＯＳは、複数のプロセスを並行して実行することができるマルチタスク機能、複数のスレッドを生成して実行することができるマルチスレッド機能およびプロセス間でデータを交換し合うプロセス間通信の機能を備えている。
【００２７】
ＯＳは、アプリケーションが起動すると、起動したアプリケーションに対して、メインメモリ６の所定の大きさのメモリ領域を論理的に割り当てる。アプリケーションは、この割り当てられたメモリ領域（以下、ローカルメモリと称する）を使用してデータ処理を行う。一実施形態で使用されるＯＳは、アプリケーションのタスク、すなわちプロセスを実行する際、スレッド単位でスケジューリングを行う。スケジューリングは、例えば、ＯＳが一定時間おきにアプリケーションを強制的に切り替えることで行われる。
【００２８】
なお、以下の説明では、このようなＯＳとして、Ｗｉｎｄｏｗｓ（登録商標）、例えば、Ｗｉｎｄｏｗｓ ９５、Ｗｉｎｄｏｗｓ ９８、Ｗｉｎｄｏｗｓ ＮＴ、Ｗｉｎｄｏｗｓ Ｍｅ、Ｗｉｎｄｏｗｓ ２０００、Ｗｉｎｄｏｗｓ ＸＰのいずれかを適用した場合について説明する。なお、これらＷｉｎｄｏｗｓ ９５、Ｗｉｎｄｏｗｓ ９８、Ｗｉｎｄｏｗｓ ＮＴ、Ｗｉｎｄｏｗｓ Ｍｅ、Ｗｉｎｄｏｗｓ ２０００、Ｗｉｎｄｏｗｓ ＸＰを、以下まとめてＷｉｎｄｏｗｓと称する。
【００２９】
ここで、図２を参照して、この発明の一実施形態によるデータセーフ機能を有するアプリケーションの一例について説明する。
【００３０】
ホストアプリケーション１１は、上述したコンピュータシステム１などのコンピュータ機器を利用するソフトウェアである。ホストアプリケーション１１は、データ処理した作業結果をデータファイルとして保存するものであれば、特にその種類を限定するものではない。例えば、ホストアプリケーション１１は、映像などのコンテンツを作成するオーサリングソフトなどの専門的なソフトであっても良いし、ワードプロセッサソフト、表計算ソフトなどの汎用的なソフトであっても良い。
【００３１】
ホストアプリケーション１１にアプリケーション監視プロセスクライアント１３が組み込まれることで、データセーフ機能付きアプリケーション１０が構成される。データセーフ機能付きアプリケーション１０は、ホストアプリケーション１１がフリーズ状態になったり、異常終了したりしても、ローカルメモリ上に一時的に記憶されている作業中データ１２が無駄にならないように、アプリケーション監視プロセスクライアント１３によるデータセーフ機能を有している。
【００３２】
アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１のプロセスに組み込まれるモジュールである。アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１のプロセスとは別のプロセスで動作するアプリケーション監視プロセス１５とプロセス間通信を行うために、ホストアプリケーション１１に実装される。アプリケーション監視プロセスクライアント１３は、アプリケーション監視プロセス１５との通信によって、本来ホストアプリケーション１１とアプリケーション監視プロセス１５との間で行われるべき、仮想的なファイルＩ／Ｏ機能を実現する。
【００３３】
したがって、アプリケーション監視プロセスクライアント１３をホストアプリケーション１１に実装することで、ホストアプリケーション１１は、ホストアプリケーション１１が通常ファイルの保存に使用するファイルＩ／Ｏ機能（一実施形態では、ＯＳから提供されるファイルＩ／Ｏ機能）を利用する場合の処理と同様に、データセーフ機能に対応したファイルＩ／Ｏを取り扱うことができる。
【００３４】
また、アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１のプロセスが正常に処理されている間、プロセスの正常を通知する目的として、例えば、プロセス間通信を利用して、定期的にアプリケーション監視プロセス１５と通信を行う。以下、この通信のことをキープアライブと称する。
【００３５】
アプリケーション監視プロセスクライアント１３は、例えば、プロセス間通信やファイルＩ／Ｏ機能で使用するグローバルメモリの取り扱いなどの、アプリケーション監視プロセスクライアント１３が行う処理を、データセーフ機能付きアプリケーション１０から隠蔽するように、ホストアプリケーション１１に実装される。
【００３６】
グローバルメモリは、ホストアプリケーション１１とアプリケーション監視プロセス１５とで共有でき、且つホストアプリケーション１１のプロセスとの依存関係がないメインメモリのメモリ領域である。このメインメモリ６に確保された第１の領域であるグローバルメモリは、アプリケーション監視プロセス１５からの指示を受けたＯＳによって、メインメモリ６上に論理的に確保される。これによって、ホストアプリケーション１１は、アプリケーション監視プロセスクライアント１３をファイルＩ／Ｏラッパー的な使い方ができ、データセーフ機能付きアプリケーション１０からプロセス間通信およびグローバルメモリの共有等の概念を隠蔽することができる。
【００３７】
アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１毎に個別に作成しても良いが、部品化することで、新規アプリケーションを作成するときのみならず、既存アプリケーションについても容易にデータセーフ機能に対応させることができる。アプリケーション監視プロセスクライアント１３は、例えば、ＯＳがＷｉｎｄｏｗｓであれば、ホストアプリケーション１１から呼び出して実行できるように、ダイナミック・リンク・ライブラリ（ＤＬＬ）としてホストアプリケーション１１に実装される。
【００３８】
アプリケーション監視プロセス１５は、アプリケーション監視プロセスクライアント１３より指示されたファイルＩ／Ｏ処理を実際に行うプロセスである。アプリケーション監視プロセス１５とアプリケーション監視プロセスクライアント１３間の通信は、例えば、イベント（Event）、ミュテックス（Mutex）、セマフォ（Semaphore）等のプロセス間通信に有用なカーネルオブジェクトを利用する。そのときのパラメータ、データの受け渡し、保存／読み込みを行うファイルデータの一時的記憶等は、グローバルメモリを使用する。
【００３９】
グローバルメモリには、例えば、メモリ・マップト・ファイルの形式を利用する。メモリ・マップト・ファイルは、ファイルをメモリとしてアクセスできるようにする機能である。一実施形態では、ファイルＩ／Ｏ処理パラメータ用のメモリとしてグローバルメモリ１６を使用し、ファイルデータ用のメモリとしてグローバルメモリ１７を使用している。グローバルメモリ１７には、メインメモリ６に確保された第２の領域であるローカルメモリ上の作業中データ１２中のファイル作成に必要なデータに基づき作成されるファイルデータが記憶される。このファイルデータは、例えば、ホストアプリケーション１１が読み取り可能なファイル形式であり、ハードディスクドライブ７に保存する際には、グローバルメモリ１７のファイルデータがそのまま保存される。
【００４０】
ここで、ホストアプリケーション１１を起動した際に行われる初期化処理について詳細に説明する。図３は、ホストアプリケーション１１を起動した際に行われる初期化処理の一例の流れを示すフローチャートである。ホストアプリケーション１１が起動することで初期化処理が開始される。なお、ホストアプリケーション１１が起動すると、ＯＳによって、メインメモリ６にローカルメモリが確保される。
【００４１】
ホストアプリケーション１１が起動すると、ホストアプリケーション１１は、アプリケーション監視プロセスクライアント１３をロードする（ステップＳ１）。ロードされたアプリケーション監視プロセスクライアント１３が実行されて、実行されたアプリケーション監視プロセスクライアント１３によって、アプリケーション監視プロセス１５が起動する（ステップＳ２）。
【００４２】
アプリケーション監視プロセス１５は、ファイルＩ／Ｏ処理パラメータ用のメモリ・マップト・ファイルを新規に作成する（ステップＳ３）。そして、アプリケーション監視プロセス１５が作成したメモリ・マップト・ファイルをアプリケーション監視プロセスクライアント１３がオープンする（ステップＳ４）。これによって、アプリケーション監視プロセスクライアント１３とアプリケーション監視プロセス１５とで、ファイルＩ／Ｏ処理パラメータ用のグローバルメモリ１６が共有され、初期化処理が終了する。
【００４３】
ホストアプリケーション１１は、例えば、一定間隔またはユーザの明示的な保存実行により作業状態をファイルに保存する場合、アプリケーション監視プロセスクライアント１３から提供されるファイルＩ／Ｏ機能を利用する。
【００４４】
アプリケーション監視プロセスクライアント１３がホストアプリケーション１１に提供するファイルＩ／Ｏ機能は、例えば、ＯＳのファイルＩ／Ｏ機能が提供するものと概念的に一致するものである。以下、このアプリケーション監視プロセスクライアント１３からホストアプリケーション１１へ提供されるファイルＩ／Ｏ機能について詳細に説明する。
【００４５】
＜ファイルの新規作成、既存ファイルのオープン＞
図４は、ファイル新規作成または既存ファイルオープンの際のホストアプリケーション１１、アプリケーション監視プロセスクライアント１３およびアプリケーション監視プロセス１５の一例のシーケンス図を示す。
【００４６】
ファイルの新規作成または既存ファイルのオープンが指示されると、まず、ステップＳ１１において、ホストアプリケーション１１が、ファイル新規作成用または既存ファイルのオープン用のパラメータをアプリケーション監視プロセスクライアント１３へ提供する（ＳＥＱ１１１）。ファイル新規作成用または既存ファイルのオープン用のパラメータとしては、例えば、ファイル名、リード／ライト モード等が必要とされる。
【００４７】
アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１から受け取ったファイル新規作成用または既存ファイルのオープン用のパラメータを、グローバルメモリ１６のファイルＩ／Ｏ処理パラメータ用のメモリ・マップト・ファイル（以下、パラメータバッファと称する）に書き込む（ステップＳ１２）。次に、ステップＳ１３において、アプリケーション監視プロセスクライアント１３は、例えばプロセス間通信のイベントオブジェクトを使用して、新規ファイルの作成または既存ファイルのオープンをアプリケーション監視プロセス１５へ通知する（ＳＥＱ１１２）。
【００４８】
アプリケーション監視プロセス１５は、ファイル新規作成用または既存ファイルのオープン用のパラメータをパラメータバッファから取得する（ステップＳ１４）。次に、アプリケーション監視プロセス１５は、ＯＳのファイルＩ／Ｏ機能を使用して、ファイルの新規作成または既存ファイルのオープンを行う（ステップＳ１５）。さらに、アプリケーション監視プロセス１５は、保存／読み込みを行うファイルデータがキャッシュされるグローバルメモリ１７のメモリ・マップト・ファイル（以下、ファイルデータバッファと称する）を作成する（ステップＳ１６）。さらに、ステップＳ１７において、アプリケーション監視プロセス１５は、ファイルデータ用に作成したファイルデータバッファの識別子をパラメータバッファに書き込み、それをアプリケーション監視プロセスクライアント１３に通知する（ＳＥＱ１１３）。
【００４９】
そして、ステップＳ１８において、アプリケーション監視プロセスクライアント１３は、ファイルデータバッファの識別子に応じた仮想的なファイルハンドルを、ホストアプリケーション１１に提供する（ＳＥＱ１１４）。ホストアプリケーション１１は、オープンしたファイルを抽象的に扱うためのものであり、ファイルのオープン以降は、この仮想的なファイルハンドルによってファイルを識別して処理を行う。この仮想的なファイルハンドルによって、ホストアプリケーション１１は、ハードディスクドライブ７にアクセスするようにグローバルメモリ１７にアクセスすることができる。以上で、ファイルの新規作成または既存ファイルのオープンの処理が終了する。
【００５０】
＜ファイルの読み込み＞
図５は、ファイル読み込みの際のホストアプリケーション１１、アプリケーション監視プロセスクライアント１３およびアプリケーション監視プロセス１５の一例のシーケンス図を示す。
【００５１】
ファイルの読み込みが指示されると、まず、ステップＳ２１において、ホストアプリケーション１１は、ファイルリード用のパラメータをアプリケーション監視プロセスクライアント１３へ提供する（ＳＥＱ１２１）。ファイルリード用のパラメータとしては、例えば、リード対象ファイルを表現する仮想ファイルハンドル、読み込む先頭位置（例えばバイト単位）、読み込みサイズ（例えばバイト単位）、データを受け取るためのローカルメモリのバッファ・ポインタ等が必要とされる。
【００５２】
アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１から受け取った仮想ファイルハンドルから、ファイルデータバッファの識別子を取得する（ステップＳ２２）。そして、ステップＳ２３において、アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１から受け取ったファイルリード用のパラメータの読み込み条件に従って、ファイルデータバッファからローカルメモリへデータをコピーし、それをホストアプリケーション１１に通知する（ＳＥＱ１２２）。以上で、ファイルの読み込みの処理が終了する。
【００５３】
＜ファイルの書き込み＞
図６は、ファイル書き込みの際のホストアプリケーション１１、アプリケーション監視プロセスクライアント１３およびアプリケーション監視プロセス１５の一例のシーケンス図を示す。
【００５４】
ファイルの書き込みが指示されると、まず、ステップＳ３１において、ホストアプリケーション１１が、ファイルライト用のパラメータをアプリケーション監視プロセスクライアント１３へ提供する（ＳＥＱ１３１）。ファイルライト用のパラメータとしては、例えば、ライト対象ファイルを表現する仮想ファイルハンドル、書き込む先頭位置（例えばバイト単位）、書き込みサイズ（例えばバイト単位）、書き込みデータの入ったローカルメモリのバッファ・ポインタ等が必要とされる。
【００５５】
アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１から受け取った仮想ファイルハンドルから、ファイルデータバッファの識別子を取得する（ステップＳ３２）。次に、アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１から受け取ったファイルライト用のパラメータの書き込み条件に従って、ローカルメモリからファイルデータバッファへデータをコピーする（ステップＳ３３）。さらに、ステップＳ３４において、アプリケーション監視プロセスクライアント１３は、ステップＳ３３で使用したファイルデータバッファの識別子およびファイルライト用のパラメータをパラメータバッファに書き込み、それをホストアプリケーション１１に通知する（ＳＥＱ１３２）。以上で、ファイルの書き込みの処理が終了する。
【００５６】
このローカルメモリからファイルデータバッファへのデータの書き込みは、例えば、ファイルデータバッファの内容に変更が加わる操作が行われる度、または所定の時間間隔など、所定のタイミングで行われる。一実施形態では、このファイルデータバッファへの書き込み時には、ファイルデータバッファからハードディスクドライブ７のデータファイル１４への書き込みは行わず、後述するキープアライブおよびファイル自動保存の処理の際に行うことで、レスポンスへの影響を少なくしている。
【００５７】
＜ファイルのクローズ＞
図７は、ファイルクローズの際のホストアプリケーション１１、アプリケーション監視プロセスクライアント１３およびアプリケーション監視プロセス１５の一例のシーケンス図を示す。
【００５８】
ファイルのクローズが指示されると、まず、ステップＳ４１において、ホストアプリケーション１１は、仮想ファイルハンドルをアプリケーション監視プロセスクライアント１３に提供する（ＳＥＱ１４１）。
【００５９】
アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１から受け取った仮想ファイルハンドルから、ファイルデータバッファを特定する（ステップＳ４２）。次に、アプリケーション監視プロセスクライアント１３は、特定したファイルデータバッファの識別子をパラメータバッファに書き込む（ステップＳ４３）。さらに、ステップＳ４４において、アプリケーション監視プロセスクライアント１３は、プロセス間通信のイベントオブジェクトを使用して、アプリケーション監視プロセス１５にファイルのクローズを通知する（ＳＥＱ１４２）。
【００６０】
アプリケーション監視プロセス１５は、ファイルデータバッファの識別子等のパラメータを、パラメータバッファから取得する（ステップＳ４５）。次に、アプリケーション監視プロセス１５は、ＯＳのファイルＩ／Ｏ機能を使用してファイルをクローズする（ステップＳ４６）。このとき、ファイルに書き込まれていないデータがファイルデータバッファにあれば、データファイル１４へ書き込む。次に、ステップＳ４７において、アプリケーション監視プロセス１５は、ファイルデータバッファを破棄し、それをアプリケーション監視プロセスクライアント１３およびホストアプリケーション１１に順次通知する（ＳＥＱ１４３、ＳＥＱ１４４）。以上で、ファイルクローズの処理が終了する。
【００６１】
アプリケーション監視プロセス１５は、アプリケーション監視プロセスクライアント１３に対して、キープアライブ機能を提供する。アプリケーション監視プロセスクライアント１３は、ホストアプリケーション１１が正常であるか否かを通知するため、アプリケーション監視プロセス１５に対して、ある一定間隔でキープアライブ通知を行っている。
【００６２】
アプリケーション監視プロセスクライアント１３からのキープアライブ通知が所定時間以上途絶えた場合には、アプリケーション監視プロセス１５は、ホストアプリケーション１１がフリーズ状態など、正常に動作しなくなったものとみなし、ファイルデータ用のグローバルメモリ１７上のデータをデータファイル１４に書き込んで終了する。この仕組みによって、ファイルへの最後の書き込みから正常に動作しなくなる直前までのデータを失うことなく自動的に保存することができる。
【００６３】
以下、アプリケーション監視プロセス１５とアプリケーション監視プロセスクライアント１３との間で行われるキープアライブ機能および自動保存について、図８および図９を参照して詳細に説明する。
【００６４】
＜キープアライブおよびファイル自動保存＞
図８は、キープアライブおよびファイル自動保存の際のアプリケーション監視プロセスクライアント１３およびアプリケーション監視プロセス１５の一例のシーケンス図を示す。図９は、キープアライブおよびファイル自動保存の際のアプリケーション監視プロセス１５のサブスレッドが行う一例の処理の流れを示す。
【００６５】
図８に示すように、アプリケーション監視プロセスクライアント１３が起動すると、ステップＳ５１において、アプリケーション監視プロセスクライアント１３は、アプリケーション監視プロセス１５に所定の時間間隔でキープアライブ通知を提供する（ＳＥＱ１５１）。キープアライブ通知は、例えば、プロセス間通信を利用して提供される。また、例えば、キープアライブ通知は、パラメータバッファの所定アドレスにフラグを書き込むようにして提供しても良い。ステップＳ５２において、アプリケーション監視プロセス１５は、内部的に最後のキープアライブ通知を受け取った時間を保持し、それをアプリケーション監視プロセスクライアント１３に通知する（ＳＥＱ１５２）。
【００６６】
アプリケーション監視プロセス１５は、さらに、キープアライブの確認と自動セーブを行うためのサブスレッドを有している。図９は、そのサブスレッドが行う一例の処理の流れを示す。
【００６７】
アプリケーション監視プロセス１５は、定期的に、最後のキープアライブ通知を受け取った時間と現在時刻とを比較する（ステップＳ６１）。そして、アプリケーション監視プロセス１５は、ステップＳ６１での比較の度に、キープアライブ通知が途絶えたか否か、すなわちホストアプリケーション１１が正常に動作しているか否かを判定する（ステップＳ６２）。キープアライブ通知が途絶えたか否かは、キープアライブ通知を受け取ってからの経過時間によって判別することができる。例えば、キープアライブ通知を受け取ってからの経過時間が所定時間を経過した場合に、キープアライブ通知が途絶えたと判断する。
【００６８】
ステップＳ６２で、キープアライブ通知が途絶えていない、すなわちホストアプリケーション１１が正常に動作していると判定された場合には、ステップＳ６１およびステップＳ６２の処理を順次繰り返す。ステップＳ６２で、キープアライブ通知が途絶えた、すなわちホストアプリケーション１１が正常に動作していないと判定された場合には、ファイルデータバッファの内容をハードディスクドライブ７にデータファイル１４として自動的に保存する（ステップＳ６３）。このとき、データファイル１４に上書きするように保存しても良いし、データファイル１４を残すように、例えばデータファイル１４とは別のファイル名で保存しても良い。そして、アプリケーション監視プロセス１５は、プロセスを終了する（ステップＳ６４）。
【００６９】
次に、ホストアプリケーション１１を終了した際に行われる終了処理について説明する。図１０は、ホストアプリケーション１１の終了時に行われる終了処理の一例の流れを示すフローチャートである。ユーザによってホストアプリケーション１１が終了された場合に終了処理が開始する。
【００７０】
まず、ホストアプリケーション１１の終了が指示された場合、上述したファイルクローズ処理によって、ローカルメモリ上の作業中データ１２をハードディスクドライブ７にデータファイル１４として保存し、ホストアプリケーション監視プロセス１５が開いていたファイルデータバッファをクローズする（ステップＳ７１）。
【００７１】
ホストアプリケーション１１は、アプリケーション監視プロセスクライアント１３へ終了を通知する（ステップＳ７２）。ホストアプリケーション１１から終了を通知されたアプリケーション監視プロセスクライアント１３は、アプリケーション監視プロセス１５に終了を通知する（ステップＳ７３）。
【００７２】
アプリケーション監視プロセスクライアント１３から終了を通知されたアプリケーション監視プロセス１５は、ファイルＩ／Ｏ処理パラメータ用メモリ・マップト・ファイルを破棄する（ステップＳ７４）。そして、アプリケーション監視プロセス１５は、プロセスを終了する（ステップＳ７５）。次に、アプリケーション監視プロセスクライアント１３がアンロードされる（ステップＳ７６）。そして、ホストアプリが終了する（ステップＳ７７）。
【００７３】
以上、説明したように、この発明の一実施形態によるデータファイル保存システムおよびデータファイル保存方法では、ホストアプリケーション１１と別プロセスで動作するアプリケーション監視プロセス１５がグローバルメモリ１７に、ローカルメモリの作業中データ１２を定期的に保存することで、ホストアプリケーション１１がフリーズ状態となったり異常終了したりするなど、正常に動作しなくなった場合であっても、グローバルメモリ１７に保存したデータをハードディスクドライブ７に保存することで、前回の保存から正常に動作しなくなるまでの間の作業が無駄になることを防げる。
【００７４】
また、ローカルメモリ上の作業中データ１２の定期的な保存は、グローバルメモリ１７に対して行い、キープアライブ機能によって、ホストアプリケーション１１が正常に動作しなくなったときにのみ、グローバルメモリ１７に保存したデータを、ハードディスクドライブ７にデータファイル１４として保存すれば良いので、ファイルＩ／Ｏ処理を最適化することができ、レスポンスへの影響を少なくすることができる。
【００７５】
この発明は、上述したこの発明の実施形態に限定されるものでは無く、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。例えば、上述した一実施形態では、ＯＳとしてＷｉｎｄｏｗｓを適用した場合について説明したが、ＯＳは、同様の処理を行うことができるならば、特に限定するものではなく、Ｕｎｉｘ（登録商標）系のＯＳ、Ｍａｃ ＯＳなど、Ｗｉｎｄｏｗｓ以外であっても適用することができる。
【００７６】
また、ファイルデータバッファの内容は、キープアライブが途絶えたときにファイルとしてグローバルメモリ１７からハードディスクドライブ７へと書き込むとしたが、定期的に書き込み自動保存を行うとしても良い。例えば、アプリケーション監視プロセス１５が、アプリケーション監視プロセスクライアント１３とは非同期に所定の時間間隔でファイルデータ用グローバルメモリ１７上にあるファイルデータをハードディスクドライブ７にデータファイル１４として保存することで、データの自動保存が実現できる。このファイルの自動保存をアプリケーション監視プロセスクライアント１３の指示とは非同期で行うことで、ホストアプリケーション１１のレスポンスに影響なく、データの保存を行うことができる。
【００７７】
また、上述した一実施形態では、ハードディスクドライブ７へのファイルの保存は、全てグローバルメモリ１７を介す構成としたが、ユーザによる明示的な保存および定期的な自動保存を行う場合などは、グローバルメモリ１７を介さず、従来同様、ローカルメモリ上の作業データを、直接ハードディスクドライブ７に保存しても良い。
【００７８】
また、上述した一実施形態では、ファイルＩ／Ｏ機能は、ＯＳが提供するものと概念的に同じものであるとしたが、開発言語が提供するものであっても良い。
【図面の簡単な説明】
【００７９】
【図１】一実施形態によるコンピュータシステムの構成の一例を示す図である。
【図２】一実施形態によるアプリケーションを説明するための図である。
【図３】初期化処理の一例の流れを示すフローチャートである。
【図４】ファイル新規オープンの際の一例のシーケンス図である。
【図５】ファイルリードの際の一例のシーケンス図である。
【図６】ファイルライトの際の一例のシーケンス図である。
【図７】ファイルクローズの際の一例のシーケンス図である。
【図８】キープアライブおよび自動保存の際の一例のシーケンス図である。
【図９】サブスレッドが行う一例の処理の流れを示すフローチャートである。
【図１０】終了処理の一例の流れを示すフローチャートである。
【図１１】従来のアプリケーションを説明するための図である。
【符号の説明】
【００８０】
１・・・コンピュータシステム
２・・・入力装置
３・・・ＣＰＵ
４・・・出力装置
５・・・ドライブ
６・・・メインメモリ
７・・・ハードディスクドライブ
１０・・・データセーフ機能付きアプリケーション
１１・・・ホストアプリケーション
１２・・・作業中データ
１３・・・アプリケーション監視プロセスクライアント
１４・・・データファイル
１５・・・アプリケーション監視プロセス
１６・・・パラメータ用グローバルメモリ
１７・・・ファイルデータ用グローバルメモリ
【図１】
2006031497.tif 000003
【図２】
2006031497.tif 000004
【図３】
2006031497.tif 000005
【図４】
2006031497.tif 000006
【図５】
2006031497.tif 000007
【図６】
2006031497.tif 000008
【図７】
2006031497.tif 000009
【図８】
2006031497.tif 000010
【図９】
2006031497.tif 000011
【図１０】
2006031497.tif 000012
【図１１】
2006031497.tif 000013