私はのmmap()いくつかのPRIVATEとANONYMOUSページをしましたし、その後でそれらを拡張する場合はmremap ()、新しいスペースもゼロに初期化されますでしょうか?mremapは成長の際にメモリを "初期化"しますか?
Linuxソースでmremap(mm/mremap.c)のコードを読もうとしましたが、現在持っていないドメイン固有の知識が必要です(vma _ ### stuff)。さえ確認それは...
を見て適切な場所だ。しかし、私ははmremap()されたメモリがクリアされることを考える集まってきたものから、これは正しいでしょうか?
配分はこの
list = mmap(NULL, newSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)
のように行われ、その後、再マップは、この
newList = mremap(list, oldSize, newSize, MREMAP_MAYMOVE)
ああのように行われ、最後に、それはだLinuxの具体的な質問、(最近のカーネルを実行しています> = 2.6.28)およびlibc(> = 2.11.1)
はい。ゼロページ以外はセキュリティホールになります。 –
ユニバーサルゼロページのコピーオンライトマッピングに間違いがあります。少なくともLinuxでは、これは 'mmap()'の仕組みではありません。マップされたメモリへの最初のアクセスでマッピングされた物理ページを取得します。これは、物理ページをゼロにしてマップするカーネルページフォルトハンドラです。普遍的なゼロページは含まれていません。 –
本当ですか?確かに、読み取り専用匿名マッピングの場合、各ページの物理ページを作成しません。私が言ったことは、重複したページのマージを有効にすれば確実に真実ですが、一般的には間違っているかもしれません。私はRTFSしたりテストしたりしていません。 –