- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存mmap实现原理
内存mmap实现原理内存mmap实现原理
谨以此文纪念过往的岁月。
结构体列表
1. struct rb_node_s
2 struct page
3. struct vm_area_struct
4. struct mm_struct
函数列表
do_mmap
do_mmap2
红黑树结构
? ???Linux内核从2.4.10开始,对虚拟区的组织不再采用AVL树,而是采用红黑树,这也是出于效率的考虑,虽然AVL树和红黑树很类似,但在插入和删除节点方面,采用红黑树的性能更好一些,下面对红黑树给予简单介绍。
? ?一颗红黑树是具有以下特点的二叉树:
(1)? ?每个节点着有颜色,或者为红,或者为黑
(2)? ?根节点为黑色
(3)? ? 如果一个节点为红色,那么它的子节点必须为黑色
(4)? ? 从一个节点到叶子节点上的所有路径都包含有相同的黑色节点数? ?
红黑树的结构在include/linux/rbtree.h中定义如下:
typedef struct rb_node_s
{
? ?? ?? ?struct rb_node_s * rb_parent;
? ?? ?? ?int rb_color;
#define RB_RED? ?? ?? ? 0
#define RB_BLACK? ?? ???1
? ?? ???struct rb_node_s * rb_right;
? ?? ???struct rb_node_s * rb_left;
} rb_node_t;
O(∩_∩)O~
struct page {
? ?? ?? ?unsigned long flags;? ?? ?? ?? ?/* Atomic flags, some possibly
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* updated asynchronously */
? ?? ?? ?atomic_t _count;? ?? ?? ? /* Usage count, see below. */
? ?? ?? ?union {
? ?? ?? ?? ?? ?? ? atomic_t _mapcount;? ?/* Count of ptes mapped in mms,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* to show when page is mapped
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* limit reverse map searches.
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?*/
? ?? ?? ?? ?? ?? ? struct {? ?? ?? ?? ?? ?/* SLUB */
? ?? ?? ?? ?? ?? ?? ?? ?? ? u16 inuse;
? ?? ?? ?? ?? ?? ?? ?? ?? ? u16 objects;
? ?? ?? ?? ?? ?? ? };
? ?? ?? ?};
? ?? ?? ?union {
? ?? ?? ?? ? struct {
? ?? ?? ?? ?? ?? ? unsigned long private;? ?? ?? ?? ?? ???/* Mapping-private opaque data:
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???* usually used for buffer_heads
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* if PagePrivate set; used for
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* swp_entry_t if PageSwapCache;
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* indicates order in the buddy
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?* system if PG_buddy is set.
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?*/
? ?? ?? ?? ?? ?? ? stru
您可能关注的文档
- 关于舞蹈的英语课件.ppt
- 关注PM2.5,走可持续发展道路.ppt
- 关系型借贷理论前沿研究动态.doc
- 关于追星的正反观点【英文】.ppt
- 关键词用法、搭配精华浓缩.doc
- 兴化市二O一四年初中毕业、升学统一考试英语一模试题.doc
- 兴平市西郊中学2016届第二次模考英语试题.doc
- 关注危重病人液体平衡(定稿).ppt
- 关于爱的英语说课课件.ppt
- 其他方法合成胺.doc
- 24年中季报业绩速览:总体盈利筑底,结构优势强化.pdf
- 煤炭行业2024年中报总结:Q2量价降幅收窄,中期受益需求预期改善及产量恢复.pdf
- 固定收益专题:对比历史低点,有哪些转债的结构性机会.pdf
- “学海拾珠”系列之二百零三:基金业绩与风格暴露的变化.pdf
- 【华福固收】地方政府债投资策略系列之一:含权地方债的投资思路.pdf
- 啤酒行业:销量承压、但毛销差表现强劲,2024年业绩确定性高.pdf
- 深挖财报之2024年中报分析:新视角,哪些细分领域值得关注?.pdf
- 计算机行业2024年9月投资策略暨财报总结:24H1业绩承压,出海板块景气度较好.pdf
- 【债券月报】9月债券月报:政策扰动增加,交易审慎、配置积极.pdf
- 定期报告:底部区域,九月可能筑底反弹.pdf
文档评论(0)