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

举报
心跳包 发表于 2021/11/12 23:15:31 2021/11/12
【摘要】 查看本系列汇总:LINUX进阶之路汇总(持续更新) =============================================================================== LINUX采用4K页框大小作为标准标准的内存分配单元。 所有的页描述符存放在mem_map数组中。 页面描述符的字段:...

查看本系列汇总: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字段的高位。

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

文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。

原文链接:xintiaobao.blog.csdn.net/article/details/101394300

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。