は、インストールされているRAMと同じサイズを匿名マッピングを作成するのに十分であるを使用し、各ページ内の1つのアドレスに1バイト(またはその他の金額)を書き込んで各ページにタッチします。
これにより、ページ違反が発生し、タッチしたマッピング内のすべてのページのゼロページでコピーオンライト操作がトリガーされます。これにより、すでにゼロページがコミットされるか、未使用のゼロ以外の物理ページはゼロになりますメモリが残っていない限り、プロセスはOOMキラーによって殺されます(または、プロセスに最初に当てはまるものに応じてSIGBUS
を受け取ります)。
OOMキラーを使わないでやや「クリーナー」にしたい場合は、明らかに最後のページに触れる前に停止する必要があります。しかし、一般的には、これがすべてです。
あなたはは、このようなすべての物理ページを拭くことはできませんが、実際には(ないスワップなし、およびない決定論方法で)ユーザプロセスであることを行うための方法はありません。 カーネルに属する他のプロセスやページによってコミットされたページは、少なくともではなく、確実にで置き換えられません(スワップはないのでスワップはできませんが、 OOMにあなたの代わりに他のプロセスを強制終了させる)。
実行中のカーネルを置き換えない限り、物理メモリを100%確実に上書きすることはできません。
"徹底的に"スーパーになりたい場合は、唯一のオプションは、コードが書かれているように書くことです。あなたがカーネルモードから呼び出すmemtest_x86では、実行中のカーネルを置き換え、memtest_x86のように、生の物理メモリを "難しい方法"で上書きします。
しかし、あなたは超妄想ルートを行けば、その後、GPUのメモリをクリアし、同様にハードディスクキャッシュやネットワークカードのメモリを拭くことを忘れないでください...
実際に、あなたはでしょう最大コミットサイズのサイズをマッピングする必要がありますが、スワップがないと言っていますので、「RAMのサイズ」を使用します。現代のディスクドライブが広範な摩耗平準化をどのようにしているかを見ると、スワップを上書きすることは大いに役立つことはありませんが、最大コミットサイズまでコミットすればすべてのRAMページを確実に守ることができます。
まあ、RAMはちょうど揮発性ですので、システムがシャットダウンしても心配する必要はありません。 しかし、スワップパーティション/ファイルには、システムの設定によってはまだ情報が含まれている場合があります。 – 0xC0000022L
申し訳ありませんが、おそらく私はカスタムライブ配信を実行しているので、スワップスペースはないと付け加えるべきです。 – Xleedos
それでは心配するべきことは?なぜRAMを拭きたいのですか?マシンの電源が10秒以上切れていて、安全であることを確認してください。 – 0xC0000022L