1. ホーム
  2. linux

[解決済み] Linuxでプロセスのメモリをディスクに保存し、後で復元する「ハイバネーション」方法とは?

2022-10-04 05:28:17

質問

linux でプロセスを 'hibernate' することは可能でしょうか。 ラップトップの「ハイバネート」のように、私はプロセスによって使用されるすべてのメモリをディスクに書き込み、RAM を解放したいと思います。そして、後で、私は「プロセスを再開」することができます。つまり、メモリからすべてのデータを読み、それを RAM に戻し、私のプロセスを続けることができますか?

どのように解決するのですか?

以前は クライオPID を保守していました。これは、まさにあなたが話していることを実行するプログラムです。プログラムのアドレス空間、VDSO、ファイル記述子の参照と状態の内容をファイルに書き出し、後で再構築できるようにするものです。CryoPID は、Linux 自体に使用可能なフックがなかったときに開始され、完全にユーザー空間から動作しました (実際には、ディストロ/カーネル/セキュリティ設定に依存して、まだ動作しています)。

問題は (実際) ソケット、保留中の RT シグナル、多数の X11 問題、glibc のキャッシュ getpid() の実装、その他多数、でした。ランダム化 (特に VDSO) は、Bernard がそこから立ち去った後、それに取り組んでいた私たちの数名にとって乗り越えられないことが判明しました。しかし、それは楽しく、いくつかの修士論文のトピックになりました。

実行中の状態を保存し、その状態に直接再スタートできるプログラムを考えているのであれば、おそらく信号を処理するときに、プログラム自体の内部からその情報を保存する方がはるかに......はるかに......簡単です。