2016-08-10 40 views
-5

私は疑いなくコード化されたアプリケーションを持っており、特定の方法で復元する必要のある多くのデータ構造を持っています。メモリイメージのダンプを作成して復元する方法

非常に複雑な操作の前にアプリケーションを復元するには、元に戻す操作を実装する必要があります。

私のチームのメンバーは、ファイルを保存して復元して、すべてが元に戻されるようにすることを提案しました。そうすることは、非常にリソースの集中的で時間のかかる操作です。ファイルの保存と読み込みには、すべての解析とイベントの処理に1分以上かかる場合があります。

私はこの考えを持っています。何らかの理由でダンプファイルのようにメモリ状態を保存できたら、イメージ状態を保存し、必要に応じて元に戻すことができます。

これは可能ですか?もしそうなら、どうですか?

+0

個々のアプリでは、休止状態や復元のような操作は簡単に行えません。システムだけができます。何らかの形であなたの状態をファイルに保存する必要があります。あなたはコードを書く必要があります。 Excelのようなプログラムと同じように。そして、その状態を復元します。シンプルな魔法はハードヤードを避けることはできません。 –

+1

あなたは「システムを復元する」と言っています。プロセスの状態やコンピュータ全体の状態(他のプロセス、OSなど)を意味しますか?あなたのプロセスだけであれば、これを行うことができますが、それは多くの作業であり、あなたのプログラムに実際の元に戻す機能を構築するよりも優れているとは限りません。 –

+0

うーん、アプリで何かを押して、あなたに間違って+1を与えた@AdrianMcCarthy。とにかく、あなたの質問に答えるために、私はシステム状態ではなくアプリケーション状態を意味しました。ええ、私はそれほど分かりましたが、私の同僚は他のことに強く頼っていましたので、調査したいと思っていました。 Excelのように@DavidHeffernanですか? – Adrian

答えて

2

これは一般的に不可能です。試してみたら、微妙で予測できない方法で失敗するかもしれません。いくつかの潜在的な問題があります:

  1. プロセスにプロセスIDとスレッドIDが格納されている可能性があります。それを復元するときに、同じIDを取得する良い方法はありません。
  2. プロセスにファイルがロックされている可能性があります。これらのファイルが同じ状態になっていることを確認する方法はありません。
  3. このプロセスでは、後でファイルが開かなくなっている可能性があります。一時ファイルを検討してください。
  4. このプロセスでは、内部的にまたは他のプロセスに対してもソケットまたはパイプが開いている可能性があります。
  5. プロセスが他のプロセスと通信する共有状態を操作し、その共有状態が矛盾した状態でプロセスを停止すると、他のプロセスが中断する可能性があります。
  6. プロセスは、プロセスを再起動しようとすると、DLLや他の実行可能ファイルがロックされている可能性があります。

他にも多くの問題があります。一般的に、アプリケーションの保存/復元機能を提供するプラットフォームは、アプリケーションを実行させるものが非常に限られているか、アプリケーションの緊密な協力が必要です。

関連する問題