首页/新闻资讯/正文详情

memory do_set_pmd

发布时间:2026/11/6 1:50:30 来源:云帆数科 栏目:资讯中心
memory do_set_pmd
do_set_pmd是文件映射缺页处理路径中的一个巨页建立尝试函数。当从文件系统读入的页面是一个合适的复合页如 THP时do_set_pmd会尝试跳过 PTE 层级直接在 PMD 层级建立巨页映射。核心职责尝试建立 PMD 巨页在finish_fault()中如果 PMD 表项为空且页面是复合页内核会调用do_set_pmd()作为一次优化尝试。如果成功整个 2MB 范围一次性建立映射避免了逐页填充 PTE 的开销。核心逻辑与前置检查函数接收vm_fault *vmf、struct folio *folio和struct page *page。它的执行流程包含一系列严格的前置检查1. VMA 适合性检查首先调用transhuge_vma_suitable(vma, haddr)其中haddr vmf-address HPAGE_PMD_MASK。这个检查确认 VMA 的大小和地址对齐是否允许在haddr处建立 PMD 映射。2. Folio 阶数检查if (folio_order(folio) ! HPAGE_PMD_ORDER) return VM_FAULT_FALLBACK;如果 folio 不是 PMD 大小的复合页例如不是 2MB 的 THP则直接返回VM_FAULT_FALLBACK让调用者走 PTE 路径 。3. PMD 空检查在获取 PMD 锁后再次检查pmd_none(*vmf-pmd)。如果在等待锁期间 PMD 已被其他线程填充则放弃本次巨页建立返回VM_FAULT_FALLBACK。映射建立与记账检查通过后函数执行以下操作建立 PMD 表项通过mk_huge_pmd(page, vma-vm_page_prot)构造巨页 PTE。如果是写缺页还会设置脏位和写权限。刷新 I-cache调用flush_icache_pages(vma, page, HPAGE_PMD_NR)将逐个页面刷新优化为一次批量调用 。更新记账增加MM_FILEPAGES计数增加HPAGE_PMD_NR并调用folio_add_file_rmap_pmd()建立 PMD 级别的反向映射。安装 PMD通过set_pmd_at()写入页表并调用update_mmu_cache_pmd()通知架构刷新 TLB。返回值语义do_set_pmd返回vm_fault_t语义非常明确0巨页映射建立成功。调用者如finish_fault或filemap_map_pmd会解锁页面并直接返回不再走 PTE 路径。VM_FAULT_FALLBACK巨页映射不适用或失败调用者应回退到do_set_pte逐页建立 PTE 映射。历史演进该函数由 Kirill Shutemov 在 2016 年引入内核 4.8作为“推迟页表分配”补丁系列的一部分 。在此之前__do_fault会提前分配 PTE 页表导致即使可以映射为巨页也无法利用。引入do_set_pmd后内核可以先获取页面判断是否适合巨页再决定分配 PTE 还是直接建立 PMD 映射。2024 年Andrew Bresticker 修复了一个回归在folio_add_file_rmap重构后do_set_pmd开始要求传入 head page否则即使 VMA 和 folio 都适合也会被拒绝。修复方式是让finish_fault显式传入compound_head(page)。

相关推荐

基于网启PXE服务器的批量定制系统平台
基于网启PXE服务器的批量定制系统平台

基于网启PXE服务器的批量定制系统平台 项目说明 概述 该项目共分为2个子项目,由iventoy和定制安装两部分组成该项目旨在复习巩固系统服务部署使用、shell编程等知识,旨在让学生增加知识面,提高项目实习经历,充实简历 项目背景知识… · 2026/11/6 1:50:30

计算机基础终极科普:一文讲透寄存器、缓存、内存、闪存的区别
计算机基础终极科普:一文讲透寄存器、缓存、内存、闪存的区别

1. 一句话破案:存储金字塔的“四大金刚”计算机存储世界有一个铁律:越靠近大脑(CPU),速度越快,容量越小,价格越贵;越远离大脑,速度越慢,容量越大,… · 2026/11/6 1:50:30

Zed官宣:支持Python Pyrefly,速度起飞
Zed官宣:支持Python Pyrefly,速度起飞

Zed 作为用 Rust 写的原生编辑器,一直以来的卖点就是“快得让人头皮发麻”。现在,他们觉得光编辑器快还不够,连写 Python 的那个“语言服务器(LSP)”也得换成超跑级别的。 Zed 已经把 Pyrefly 这个由 Meta 打造的、用 … · 2026/11/6 1:49:29

三级网络技术笔记:选择题常考点 + 综合题、应用题真题逐空讲解(持续更新)
三级网络技术笔记:选择题常考点 + 综合题、应用题真题逐空讲解(持续更新)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:53:31

化工分离过程仿真系列教程(10):速率模型——双膜理论与 O‘Connell 关联
化工分离过程仿真系列教程(10):速率模型——双膜理论与 O‘Connell 关联

化工分离过程仿真系列教程(10):速率模型——双膜理论与 O’Connell 关联版本声明块 工具基线:aspenONE V15;双膜理论、O’Connell 关联口径以权威教学教程为证据(旁证——标注口径),… · 2026/11/6 1:53:30

化工分离过程仿真系列教程(11):萃取精馏与夹带剂选择——选择性提升量与回收能耗两条线
化工分离过程仿真系列教程(11):萃取精馏与夹带剂选择——选择性提升量与回收能耗两条线

化工分离过程仿真系列教程(11):萃取精馏与夹带剂选择——选择性提升量与回收能耗两条线版本声明块 工具基线:aspenONE V15;活度模型基准态纪律沿用第 08/11 篇口径(gPROMS 系列物性通道纪律在分离段的同构落… · 2026/11/6 1:53:30

化工分离过程仿真系列教程(3):简捷法 II——Underwood 最小回流与 Gilliland 关联
化工分离过程仿真系列教程(3):简捷法 II——Underwood 最小回流与 Gilliland 关联

化工分离过程仿真系列教程(3):简捷法 II——Underwood 最小回流与 Gilliland 关联版本声明块 工具基线:aspenONE V15;DSTWU 内含 Fenske/Underwood/Gilliland(Study Guide 口径)。公式形态以权威… · 2026/11/6 1:53:30

化工分离过程仿真系列教程(5):MESH 逐板方程组结构——每板四类方程消四类未知量
化工分离过程仿真系列教程(5):MESH 逐板方程组结构——每板四类方程消四类未知量

化工分离过程仿真系列教程(5):MESH 逐板方程组结构——每板四类方程消四类未知量版本声明块 工具基线:aspenONE V15;RadFrac(Rigorous Multistage Separation——正文首现给全称,保留官方全大写… · 2026/11/6 1:53:30

碳酸镍:化学特征、指标与应用要点
碳酸镍:化学特征、指标与应用要点

镍盐体系内常提到的碳酸镍,多数为碱式碳酸镍。纯正碳酸镍在常规环境下稳定性偏弱,工业合成产物以碱式结构为主,二者理化特性存在区别。碱式碳酸镍外观为淡绿色至草绿色微细粉末,难溶于水,能够溶于稀酸、氨水&#xff0… · 2026/11/6 1:52:30

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码