ユーザー プログラムが brk システム コールを介して解放し、その後再び元に戻すと、メモリがどうなるのか気になります。カーネルはそれをクリアしますか、それとも内容は未定義のままですか?
ページがbrkを介して新しく割り当てられると、カーネルがページをクリアすると思いますが、そのページが返されてから再度要求された場合にすべてをゼロにするかどうかはわかりません。lxr.linux.no を調べて調べています。この記事で紹介した本も参考にさせていただきます。
返信ありがとうございます。
ティム
ユーザー プログラムが brk システム コールを介して解放し、その後再び元に戻すと、メモリがどうなるのか気になります。カーネルはそれをクリアしますか、それとも内容は未定義のままですか?
ページがbrkを介して新しく割り当てられると、カーネルがページをクリアすると思いますが、そのページが返されてから再度要求された場合にすべてをゼロにするかどうかはわかりません。lxr.linux.no を調べて調べています。この記事で紹介した本も参考にさせていただきます。
返信ありがとうございます。
ティム
IIRC オンデマンドで明らかです。そのため、ページが削除されると、カーネルはそれをそのままにしますが、新しいユーザー/使用に割り当てられるとクリアされます (再成長する brk がカウントされます)。新しい匿名ページを「ゼロページ」にマップし、書き込み時に実際にクリアされたページと交換するためのさまざまなハックがあります。
情報漏えいが心配な場合は、割り当てられていないページがスワップにプッシュされるべきではありませんが、さまざまなコールド ブート攻撃がそれらに対して機能する可能性があります。
詳細については、最近の LWN の記事を参照してください: http://lwn.net/Articles/340370/