0
点赞
收藏
分享

微信扫一扫

LINUX进阶(基础篇)之内存管理

书坊尚 2022-02-18 阅读 86


查看本系列汇总:​​LINUX进阶之路汇总(持续更新)​​

===============================================================================

LINUX采用4K页框大小作为标准标准的内存分配单元。

所有的页描述符存放在mem_map数组中。

页面描述符的字段:

_count:页的引用计数器。如果该字段为-1,则相应页框空闲,并可分配给任一进程或内核本身;如果该字段的值大于或等于0,则说明页框分配给一个或多个进程,或用于存放一些内核数据结构。page_conunt()函数返回_count加1后的值,也就是该页的使用者数目。

flags:包括多达32个也描述符框状态的标志。

内存管理区

ISA总线的直接内存存取处理器有一个严格的限制,只能对RAM的前16M寻址。

LINUX2.6把内存节点的物理 内存划分为三个管理区:

ZONE_DMA:低于16M的内存y页框

ZONE_NORMAL:16MB——896MB

ZONE_HIGHMEM:896开始高于896的内存页框。

每个页描述符都有内存节点和到节点ne内存管理区的链接。

为了节省空间,这些链接的存放方式与典型的指针不同,而是被编码成索引存放在flags字段的高位。

当内核调用一个内存分配函数时,必须指明请求页框所在的管理区。


举报

相关推荐

0 条评论