Linux内核中常见内存分配函数.docxVIP

  • 6
  • 0
  • 约4.75千字
  • 约 7页
  • 2021-01-13 发布于山东
  • 举报
Linux内核中常见内存分配函数 1. 原理说明 Linux  内核中采用了一种同时适用于  32 位和  64 位系统的内存分页模型, 对于  32 位系统来说,两级页表足够用了,而在  x86_64  系统中,用到了 四级页表,如图  2-1  所示。四级页表分别为:  页全局目录  (Page Global 页上级目录  页中间目录  (Page Middle 页表 (Page Table) 页全局目录包含若干页上级目录的地址, 页上级目录又依次包含若干页中间目录的地址,而页中间目录又包含若 干页表的地址,每一个页表项指向一个页框。 Linux 中采用 4KB 大小的页 框作为标准的内存分配单元。 多级分页目录结构 1.1. 伙伴系统 算法 在实际应用中,经常需要分配一组连续的页框,而频繁地申请 和释放不同大小的连续页框,必然导致在已分配页框的内存块中分散了 许多小块的空闲页框。这样,即使这些页框是空闲的,其他需要分配连 续页框的应用也很难得到满足。  为了避免出现这种情况,  Linux 内核中 引入了伙伴系统算法  (buddy system)。把所有的空闲页框分组为  11 个块链 表,每个块链表分别包含大小为 1,2,4, 8,16,32, 64,128,256, 512 和 1024 个连续页框的页框块。最大可以申请 1024 个连

文档评论(0)

1亿VIP精品文档

相关文档