- 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)