プロセスがmmap
に50バイトのメモリしか要求しないとします。このプロセスのためにページ全体が割り当てられますか?残りの部分はちょうど無駄ですか?また、カーネル割り当て関数でこれをどのように扱うのですか?kmalloc
? man 3p mmap
からLinuxでのメモリ割り当てはPAGE_SIZEよりもどのように小さくなりますか?
0
A
答えて
0
:
実装は、ページ全体の上にマッピング操作を実行します。したがって、引数
len
は、サイズまたは配置制約を満たす必要はないが、実装では、任意のマッピング操作で範囲[pa,pa+len)
で指定された部分ページを含めるものとする。
したがって実際には、mmap
の50バイトを使用すると、ページ全体がマップされます。
カーネルの状況については、ページアロケータ(get_free_pages()/alloc_pages()
など)がありますが、主にメモリ管理コードで使用される低レベル関数です。
通常のkmalloc()
の機能は、ユーザスペースmalloc()
と多少似ています。内部ページ全体が割り当てられますが、呼び出し元が使用するために小さなページに分割されます。
関連する問題
- 1. バイナリファイルは、WindowsよりLinuxの場合よりも小さくなります。
- 2. Linuxカーネルにスワップ可能なメモリを割り当てよう
- 3. UIImageはより多くのメモリを割り当てます
- 4. メモリをmalloc()で割り当てよう
- 5. ヒープ上に小さなメモリを割り当てますか?
- 6. Linuxでのメモリ割り当て
- 7. 大きな配列はどのようにメモリを割り当てますか?
- 8. cでメモリ割り当てはどのように機能しますか?
- 9. EnumはどのようにCにメモリを割り当てますか?
- 10. 可変メモリ割り当てはどのように機能しますか?
- 11. .NET CLR最も小さいメモリ割り当て(32/64ビット)
- 12. サービスはたくさんのメモリを割り当てますか?
- 13. シャットダウン前にRAMを消去すると、Linuxはどのようにメモリを割り当てますか?
- 14. これはどのような割り当てですか?
- 15. メモリの割り当て/割り当て解除(WindowsではC++)
- 16. C++ new/new []、どのようにメモリを割り当てるのですか?
- 17. Spark APPにクラスタを割り当てるよりも多くのメモリを割り当てることはできますか?
- 18. Pythonインタプリタはさまざまなメソッドにどのようにメモリを割り当てますか?
- 19. メモリの割り当ては?
- 20. さまざまな機能のメモリ割り当てですか?
- 21. malloc(sizeof(s))は、予想より少ないメモリを割り当てますか?
- 22. なぜジュリアはあまりにも多くのメモリを割り当てていますか?
- 23. Redshift WLM config:割り当てられていないメモリはどのように使用されますか?
- 24. メモリ割り当て
- 25. 割り当てメモリ
- 26. 割り当てメモリ
- 27. メモリ割り当て
- 28. メモリ割り当て
- 29. 割り当てメモリ**
- 30. NSMutableArrayと他のNsMutableArrayの割り当てはどのように割り当てられますか?
* "just 50 bytes" *のmmap()リクエストはどこからでも開始することはできませんが、ページの位置を合わせる必要があるため、何が起こっているかについての強いヒントです。 IOWでは、ページの後半の割り当てを要求または取得することはできません。また、仮想メモリはページテーブルを使用し、セグメントテーブルは使用しません – sawdust