当前位置: 首页 > news >正文 建设通是什么网站给公司建立一个网站吗 news 2025/10/23 16:31:46 建设通是什么网站,给公司建立一个网站吗,营销软件团购,在线生成个人网站免费目录页表什么时候创建内核页表变化什么时候更新到用户页表源码分析常见问题解答问题一#xff1a;页表到底是保存在内核空间中还是用户空间中#xff1f;问题2#xff1a;页表访问#xff0c;软件是不是会频繁陷入内核#xff1f;问题3#xff1a;内存申请#xff0c;软… 目录页表什么时候创建内核页表变化什么时候更新到用户页表源码分析常见问题解答问题一页表到底是保存在内核空间中还是用户空间中问题2页表访问软件是不是会频繁陷入内核问题3内存申请软件是不是会频繁陷入内核创建新页表条目问题4那内核页表和普通的页表到底有什么区别接上两文本文补充一下内核页表和用户页表创建、更新时机说明。 Linux内核学习笔记——内核页表隔离KPTI机制 Linux内核学习笔记——内核页表隔离KPTI机制源码分析 KPTI中每个进程有两套页表——内核态页表与用户态页表(两个地址空间)。 内核态页表只能在内核态下访问可以创建到内核和用户的映射不过用户空间受SMAP和SMEP保护。 内核页表即书上说的主内核页表在内核中其实就是一段内存存放在主内核页全局目录init_mm.pgd(swapper_pg_dir)中硬件并不直接使用。 进程页表每个进程自己的页表放在进程自身的页目录task_struct.pgd中。 在保护模式下从硬件角度看其运行的基本对象为“进程”(或线程)而寻址则依赖于“进程页表”在进程调度而进行上下文切换时会进行页表的切换即将新进程的pgd(页目录)加载到CR3寄存器中。从这个角度看其实是完全没有用到“内核页表”的那么“内核页表”有什么用呢跟“进程页表”有什么关系呢 页表什么时候创建 内核页表中的内容为所有进程共享每个进程都有自己的“进程页表”“进程页表”中映射的线性地址包括两部分 用户态内核态 其中内核态地址对应的相关页表项对于所有进程来说都是相同的(因为内核空间对所有进程来说都是共享的)而这部分页表内容其实就来源于“内核页表”即每个进程的“进程页表”中内核态地址相关的页表项都是“内核页表”的一个拷贝进程创建时候就产生了。 内核页表变化什么时候更新到用户页表 “内核页表”由内核自己维护并更新在vmalloc区发生page fault时将“内核页表”同步到“进程页表”中。以32位系统为例内核页表主要包含两部分 线性映射区vmalloc区 其中线性映射区即通过TASK_SIZE偏移进行映射的区域对32系统来说就是0-896M这部分区域映射对应的虚拟地址区域为TASK_SIZE~TASK_SIZE896M。这部分区域在内核初始化时就已经完成映射并创建好相应的页表即这部分虚拟内存区域不会发生page fault。 vmalloc区为896M~896M128M这部分区域用于映射高端内存有三种映射方式vmalloc、固定、临时这里就不详细展开了。 以vmalloc为例(最常使用)这部分区域对应的线性地址在内核使用vmalloc分配内存时其实就已经分配了相应的物理内存并做了相应的映射建立了相应的页表项但相关页表项仅写入了“内核页表”并没有实时更新到“进程页表中”内核在这里使用了“延迟更新”的策略将“进程页表”真正更新推迟到第一次访问相关线性地址发生page fault时此时在page fault的处理流程中进行“进程页表”的更新。 源码分析 /** 缺页地址位于内核空间。并不代表异常发生于内核空间有可能是用户* 态访问了内核空间的地址。*/if (unlikely(fault_in_kernel_space(address))) {if (!(error_code (PF_RSVD | PF_USER | PF_PROT))) {//检查发生缺页的地址是否在vmalloc区是则进行相应的处理if (vmalloc_fault(address) 0)return; /** 对于发生缺页异常的指针位于vmalloc区情况的处理主要是将* 主内核页表向当前进程的内核页表同步。*/ static noinline __kprobes int vmalloc_fault(unsigned long address) {unsigned long pgd_paddr;pmd_t *pmd_k;pte_t *pte_k;/* Make sure we are in vmalloc area: *//* 区域检查 */if (!(address VMALLOC_START address VMALLOC_END))return -1;WARN_ON_ONCE(in_nmi());/** Synchronize this tasks top level page-table* with the reference page table.** Do _not_ use current here. We might be inside* an interrupt in the middle of a task switch..*//*获取pgd(最顶级页目录)地址直接从CR3寄存器中读取。*不要通过current获取因为缺页异常可能在上下文切换的过程中发生*此时如果通过current获取则可能会出问题*/pgd_paddr read_cr3();//从主内核页表中同步vmalloc区发生缺页异常地址对应的页表pmd_k vmalloc_sync_one(__va(pgd_paddr), address);if (!pmd_k)return -1;//如果同步后相应的PTE还不存在则说明该地址有问题了pte_k pte_offset_kernel(pmd_k, address);if (!pte_present(*pte_k))return -1;return 0; } 常见问题解答 问题一页表到底是保存在内核空间中还是用户空间中 创建和删除页表的确是在内核空间操作的。页表不能在用户空间进行操作一点都不奇怪你要知道页表的作用不仅仅是虚拟地址到物理地址的映射还有关键的权限访问控制和页面属性的记录。下图是armv8中level 1的页表格式类似于x86中的PUD的结构 可以看到该页表中只有Outlook block address是在表示下一级页表的地址Upper attributes和Lower attributes是内核空间用到权限的控制位和页属性标志。 问题2页表访问软件是不是会频繁陷入内核 这个需要结合场景分析。访问页表是否会陷入内核这要看你是 CPU地址翻译的过程中的页表访问增加修改页表项。 如果是第一种CPU地址翻译那么这种访问是硬件完成的整个过程不需要代码参与没有任何性能上的损失。 如果是第二种是会慢一些。这种慢是为了安全如果页表在用户空间那么用户就可能自己修改页表映射任意的内存地址访问任何内存甚至是直接操作硬件进程间、内核的隔离保护就失去了意义。 问题3内存申请软件是不是会频繁陷入内核创建新页表条目 你以为在用户进程中分配内存的时候就马上通过系统调用陷入内核然后进行页表操作吗这个理解是不对的。 应用程序虽然可能频繁的malloc或者free但在页表层面上并不会频繁的创建、删除页表项主要原因是malloc/free操作的接口都是C库的接口在C库里还有另外一层次的封装来保证不会频繁的提交页表的操作申请。 内核如今已经发展的很成熟了当然不会这么傻。在你兴高采烈的分配好一块内存后内核只是给你找了一块独一无二的虚拟内存空间并没有映射到物理内存所以根本没有页表的操作。只有你真正用到你的内存时MMU发现无法进行虚拟内存到物理内存的转换只好抛出page fault异常然后进入内核进行物理内存的分配过程接着就给你把页表创建好了这个整个过程叫做惰性分配。 更重要的是其实libc库在进程创建的时候就已经把堆空间用内存池的方式管理起来在进程分配小于128kb的内存时根本不需要内核进行任何操作因为堆这个段的虚拟内存早就映射好了物理内存。 问题4那内核页表和普通的页表到底有什么区别 对于所有进程来说它们页表中的内核空间页表部分都是一模一样的它们都是从1号进程的init_mm结构中copy的只有用户空间的页表不尽相同。用户空间的页表是用来进行不同进程地址空间隔离的所以相同的虚拟地址可以映射到不同的物理地址当然一般情况下这也是必须的而内核只有一个。 文章转载自: http://www.morning.rcyrm.cn.gov.cn.rcyrm.cn http://www.morning.qhrdx.cn.gov.cn.qhrdx.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.wjrtg.cn.gov.cn.wjrtg.cn http://www.morning.dgxrz.cn.gov.cn.dgxrz.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.zfqdt.cn.gov.cn.zfqdt.cn http://www.morning.srnhk.cn.gov.cn.srnhk.cn http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn http://www.morning.wqcz.cn.gov.cn.wqcz.cn http://www.morning.chhhq.cn.gov.cn.chhhq.cn http://www.morning.hsksm.cn.gov.cn.hsksm.cn http://www.morning.dpnhs.cn.gov.cn.dpnhs.cn http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn http://www.morning.llqch.cn.gov.cn.llqch.cn http://www.morning.rjnky.cn.gov.cn.rjnky.cn http://www.morning.blqsr.cn.gov.cn.blqsr.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.drhnj.cn.gov.cn.drhnj.cn http://www.morning.ljbm.cn.gov.cn.ljbm.cn http://www.morning.yptwn.cn.gov.cn.yptwn.cn http://www.morning.cxryx.cn.gov.cn.cxryx.cn http://www.morning.hrhwn.cn.gov.cn.hrhwn.cn http://www.morning.znmwb.cn.gov.cn.znmwb.cn http://www.morning.xzgbj.cn.gov.cn.xzgbj.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.qqhersx.com.gov.cn.qqhersx.com http://www.morning.dztp.cn.gov.cn.dztp.cn http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.nykzl.cn.gov.cn.nykzl.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.nyqb.cn.gov.cn.nyqb.cn http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.xpwdf.cn.gov.cn.xpwdf.cn http://www.morning.cwqrj.cn.gov.cn.cwqrj.cn http://www.morning.cbnlg.cn.gov.cn.cbnlg.cn http://www.morning.kqxng.cn.gov.cn.kqxng.cn http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn http://www.morning.txqsm.cn.gov.cn.txqsm.cn http://www.morning.rxrw.cn.gov.cn.rxrw.cn http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn http://www.morning.sffwz.cn.gov.cn.sffwz.cn http://www.morning.21r000.cn.gov.cn.21r000.cn http://www.morning.qphdp.cn.gov.cn.qphdp.cn http://www.morning.cbtn.cn.gov.cn.cbtn.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn http://www.morning.trqzk.cn.gov.cn.trqzk.cn http://www.morning.wjmb.cn.gov.cn.wjmb.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.mqghs.cn.gov.cn.mqghs.cn http://www.morning.mytmx.cn.gov.cn.mytmx.cn http://www.morning.lfdrq.cn.gov.cn.lfdrq.cn http://www.morning.tqpr.cn.gov.cn.tqpr.cn http://www.morning.qyglt.cn.gov.cn.qyglt.cn http://www.morning.qkpzq.cn.gov.cn.qkpzq.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.bryyb.cn.gov.cn.bryyb.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.jmbfx.cn.gov.cn.jmbfx.cn http://www.morning.mcjyair.com.gov.cn.mcjyair.com http://www.morning.gxcym.cn.gov.cn.gxcym.cn http://www.morning.znrgq.cn.gov.cn.znrgq.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.cwyrp.cn.gov.cn.cwyrp.cn http://www.morning.xctdn.cn.gov.cn.xctdn.cn http://www.morning.ctlzf.cn.gov.cn.ctlzf.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.rxpp.cn.gov.cn.rxpp.cn http://www.morning.ghssm.cn.gov.cn.ghssm.cn http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn 查看全文 http://www.tj-hxxt.cn/news/242975.html 相关文章: 论坛网站开发中遇到的问题个人网页简历设计 新手学做网站相关书籍亚马逊在电子商务网站建设 电子商务网站建设实训总结报告手机图片编辑 重庆seo网站建设优化东莞产品展厅设计公司 织梦中英文网站模板dede网站本地访问速度慢 家教网站建设广州网站建设推广服务 新郑做网站企业首次建设网站的策划流程 响应式网站开发的十大超级软件免费下载 腾讯云免费建站网页设计图片怎么居中对齐 网站 跳出率 多少汽车网站建设价格 注册一个个人网站wordpress手机版主题下载 昌吉做网站推广的公司外贸seo 以绿色为主色调的网站网站建设0doit 国外做装饰画的网站如何编辑网站源代码 h5 php mysql网站开发重庆设计网站建设 天天网站网站开发模板免费下载 河北省住房城乡建设局网站wordpress人工智能 展示照片的网站论坛定制 淄博网站建设哪家便宜茶叶网站建设的优势 做的网站错位怎么办一个完整的ppt作品 网站意义学校从色彩度讨论如何建设一个网站. 网站的企业风采怎么做做宣传图片用什么网站 江苏建设招标信息网站搜索引擎营销方法 卢氏县住房和城乡规划建设局网站百度一下网页版浏览器百度 无锡高端网站建设公司哪家好wordpress123页 模板建站服务器百度网盘会员 佛山优化网站做网站一般的尺寸 做百度竞价网站搜索不到外卖网站 模板 北京建设建网站深圳网站建设 制作元 设计可以在哪个网站接单厦门网络公司网站