プログラムのメモリをファイルにダンプして復元することはできますか?

プログラムのメモリをファイルにダンプして復元することはできますか?

特定のプログラムで使用するRAMのコピーをファイルにしたいと思います。その後、後でその状態を復元します。

ctrl + z&fgの効果に似ていますが、プログラムからRAMを確保したいと思います。

ベストアンサー1

特定のプログラムで使用するRAMのコピーをファイルにしたいと思います。その後、後でその状態を復元します。

誤解: ㄴプロセス持っている仮想アドレス空間そして使用仮想メモリ。 RAM自体は、オペレーティングシステムのカーネルによって管理されるリソースです。読むオペレーティングシステム:3つの簡単な部分(プロセスは使用しませんまっすぐメモリ)。

(質問をより詳しく説明するために、多くの質問を編集して改善する方が良いでしょう。もう一度やり直してください...これらの詳細がないと、もう役に立ちません。

Linuxでは、次のものを使用できます。工程(5)与えられたプロセスの仮想アドレス空間を問い合わせます。試してcat /proc/$$/mapsください。cat /proc/self/maps

RAMも確保したいです。

カーネルがRAMを管理しているので、これを行う必要はありません(時々勝つ起こることがあります)。また、見ることができますクレイジーウェス(2)posix_fadvise(2)マッピング(2)時計ロック(2)。プロセスが終了すると、カーネルは仮想アドレス空間を解放し、割り当てられたRAMを再利用します。プロセスが停止した場合(例:Ctrl Z送信してSIGTSTP、参照)信号(7)&用語(3))、カーネルは他の目的でRAMの用途を変更することができます(そしてスワップスペースを使用してダーティページを保存します)。ページ出力- プロセスが停止しました)。読むページング要求&http://linuxatemyram.com/

欲しいものアプリケーションチェックポイントそして直交〜にこだわる。 UnixとLinux(およびWindows、Android、MacOSXなどを含む他のほとんどのオペレーティングシステム)では、次のようになります。不可能または非常に難しい一般的に言えば(オープンをどのように処理しますか?ファイル記述子サブプロセスソケットASLRシグナルファイルロックGUI共有ライブラリ、等...)。ただし、これらの機能を使用してアプリケーションを作成できます(もちろん、これに役立つライブラリを見つけることができます)。持続性またはチェックポイントを実現可能で実用的にするために、いくつかの追加の規則と制限に従います。

システム全体でこれを達成するには、次の点を考慮してください。冬眠

永続性は、アプリケーション設計の早い段階で考慮する必要があります(後で追加するのは難しいかもしれません)。参考にしてくださいデータベースSQLiteリレーショナルデータベース管理システムNoSQLデータベース、...)およびインデックスファイル(データベース管理システム...)実装する一般的な方法と見なすことができます。どんな種類永続性(ヒープを次のように考えることができます。サイクル図オブジェクト)。コード関連データを保存します(例:フレンドリー仮想テーブル閉鎖関数ポインタ...) 一般的に難しいです。

あなたは少し見つけることができますチェックポイントライブラリ、例えばBLCRまたはクリウ。もちろん、それを使用するために開発されたアプリケーションの限られたコンテキスト内で動作します。

最後に、アルゴリズムの観点から完全な状態を維持(またはチェックポイントを指定)することは、正確な状態を複製するのと非常によく似ています。ガベージコレクタ。たとえば、それらについて読んでください。ガスクロマトグラフィーハンドブック、とても便利です。

ただし、真の永続性やチェックポイントは実装するのが難しいため、アプリケーション設計の早い段階で考慮する必要があります。多くの場合、これは十分に困難です。アプリケーションを完全に再構築する必要があります。提供しないでください。

コードの進歩に合わせて互換性を維持することはより困難です(たとえば、以前のチェックポイントに適用された最新バージョンのコードで再起動するなど)。あなたは以下からインスピレーションを受けることができます。動的ソフトウェアアップデート技術。

いくつかのプログラミング言語の実装(例えば、Ocaml、Python、Java...)は次のものを提供します。直列化またはグループ助けを得ることができる施設。他のものにはチェックポイントする方法があります(例:SBCLsave-lisp-and-dieポリマシンラーニング export)。同型そして反射便利なプログラミング言語機能です。

また、見ることができます参照システムそしてビスモンド永久システムの例です。

おすすめ記事