2011-12-28 17 views

答えて

1

ページ違反の可能性があります。大きなブロックのRAMをmallocした場合、物理RAMはすぐには割り当てられないでしょう。いくつかのページテーブルエントリが設定されます。最初の場所にアクセスするまで、物理RAMは割り当てられません。これは

  • ページフォルト、
  • これはの面で高価な操作で、ページテーブル

を更新し、そのページ上のすべての場所をゼロに物理メモリページを見つけることを必要とします割り当てられたページごとに1回発生します(割り当てようとしているRAMが550×4kバイトのページ)

+0

なぜページが増えるのでしょうか?ブロックをもっと頻繁に再割り当てするとどうなるでしょうか? iPadのL2キャッシュは1MBなので、静的/スタックメモリのページフォルトも発生するはずです。また、引数ゼロは呼び出したメモリにのみ当てはまります。 Mallocはメモリをゼロにしません。あなたのポストにさらに説明を加えてください。 – Etan

+0

@エタン:おそらく同じメモリブロックを再利用していないか、または割り当て解除時にOSにメモリを戻していると思われます(iDevicesではメモリが限られているので、間違いありません)。スタティックメモリは永久に割り当てられ、スタックメモリは初めて使用されると永久に割り当てられる可能性があります。 – JeremyP

+0

基本的に遅延配分は私をここで殺すものです。これは、callocがmemsetや{0}イニシャライザよりもずっと速い理由を説明します。古いページが再利用された場合でもフリーコール後にページがダーティになるため、毎回同じブロックのメモリを使用するかどうかはページフォールトの数を変更すべきではありません。 – Etan

関連する問題