当前位置: 首页 > news >正文

网站广告js代码添加微商网站推广

网站广告js代码添加,微商网站推广,制作书签 小学生一年级,云主机免费首发公号#xff1a;Rand_cs 共享内核空间 我们常说#xff0c;每个进程都有自己的虚拟地址空间#xff0c;但其中内核部分是共享的。 这就有个问题#xff0c;如何共享的#xff1f; 系统启动时创建了一张内核页表#xff0c;里面记录着内核地址空间与物理地址空间的…首发公号Rand_cs 共享内核空间 我们常说每个进程都有自己的虚拟地址空间但其中内核部分是共享的。 这就有个问题如何共享的 系统启动时创建了一张内核页表里面记录着内核地址空间与物理地址空间的映射关系而每次 fork 子进程时都会复制一份内核页表所以说每个进程页表中的内核部分是“相同的”因此可以说共享内核空间。 这里我将最初的内核页表称为“原本”每个进程的内核部分称为“副本”类似副本的设计都会存在存在一个问题——同步意思是说如果某个进程修改了内核空间的映射关系那么需要将这种映射关系的改变同步到其他副本如此才能保证逻辑正确。 最初分析 xv6 的 scheduler 的代码时发现每次返回到调度器时都会切换到内核页表如下所示 void scheduler(void) { ........swtch((c-scheduler), p-context); switchkvm(); ........ }当时我便在想不切换行不行于是将 switchkvm 注释掉发现出了错而且错误还不固定有的是触发 page fault、有的是系统 reset(从 main 函数重新开始执行)未找到明确的复现规律。当时没有细想初步便认为是因为各个进程页表的内核部分也就是“副本”们之间没有同步导致了种种错误。后来重新看代码的时候发现问题应该不在内核页表同步。 xv6 不需要内核页表同步因为 xv6 在启动的时候内核地址空间的映射关系已经建立好了而纵观代码也没有修改内核地址空间映射关系的地方所以内核地址空间的映射关系应是一直不变的。可能有的朋友会觉得 kalloc 函数会更改内核映射其实并没有kalloc 只是分配内存并没有修改映射关系可以仔细看看 kalloc 前后的关于修改映射关系的代码比如说 *pte xxx, *pde xxx这才是修改页表修改映射关系。在 growproc-kalloc 调用链中kalloc 分配的内存映射到了进程的用户空间修改的是进程页表用户态部分的 ptemappages-walkpgdir-kalloc 中分配的内存用作用户页表修改的是进程页表用户态部分的 pde 这就相当于 Linux 中的直接映射区域但是不存在 vmalloc 动态映射区域所以 xv6 其实不需要内核页表的同步。假如说某个进程确实会改动内核映射关系那么应该如何实现内核页表同步。同步内核页表是为了每个进入内核时都能看到相同的内核影响所以 第一种方式不需要同步内核页表每次进程进入内核的时候切换到“原本”内核页表那么每个进程进入内核的时候使用的是同一份页表当然就不需要同步第二种方式那就是老老实实的同步页表也就是说当“原本”或“副本”被修改的同时也就将相关的修改同步到其他“副本”。这部分可以参考 Linux vmalloc 区同步的做法当“原本”修改时调用 sync_global_pgds 主动将修改同步到其他“副本”。当某个“副本”被修改时Linux 先后有三种同步方式最开始在 pagefault 中触发同步但有竟态问题有了第二种主动同步但因为性能问题又增加了第三种干掉同步的方式。Linux 内存管理的部分见 bin的技术小屋 这位大佬写的文章本文不赘述这应该是全网对 Linux 内存管理讲解的最详尽细致的文章了值得一看。 这里在穿插一个问题既然内核里面本来就有一份内核页表那么进程页表何必再拷贝一份内核页表反正进程在用户态时不能访问内核态根本就用不到内核页表。每个进程页表只需要映射它自己的地址空间以及跳转到内核那一小段代码段即可跳转到内核后切换到内核页表在内核办完事儿后再切换回进程页表这个过程似乎没有问题也就是根本就没必要拷贝整个内核页表到进程页表的内核部分那为什么还要这么做呢让内核地址空间和进程用户地址空间在同一张页表共存 我想这个问题应该是和架构强相关在 arm 中有两个页表寄存器ttbr0 存放进程页表ttbr1 存放共享的内核页表访问用户空间地址使用 ttbr0 寄存器访问内核空间地址使用 ttbr1 寄存器。因为 arm 有两个寄存器进程进出内核不需要进行页表切换。 但是 x86 架构只有一个页表寄存器如果将用户页表和内核页表分开那么进出内核势必造成页表切换页表切换刷新 tlb如果没有 ASID/PCID 等机制的话性能损失太多 话说内核页表和用户页表共存也会引发一些安全问题比如之间大爆的 meldown 漏洞以及相应的缓解方案 kpti挺有意思有兴趣的话可以看一下。 回到 xv6 上面来那为什么 scheduler 中需要切换到内核页表很不幸这个问题始终还未能解决写在这里便是和大家讨论一下以及分享一下相关的一些东西另外很有意思的是当我在 ubuntu 虚拟机中跑注释掉 switchkvm 的 xv6 时会引发各种问题但是在 ubuntu 的宿主机上跑便没有问题(已考虑到虚拟机 cpu 核心分配的问题)这便很奇怪想了很久未能弄明白暂时存疑吧。元芳你怎么看 首发公号Rand_cs
http://wiki.neutronadmin.com/news/389804/

相关文章:

  • 设计网站页面出现问题项目建设背景与必要性
  • 飞沐网站建设公司北京做网站对企业的好处
  • 网上网城网站网站302跳转
  • 简单网站建设模板下载聊城网站建设包括哪些
  • 响应式网站建设对企业营销成都百度推广联系方式
  • 重庆电子商务网站seowordpress心情
  • 手机壁纸网站大全电子商务网站建设视频
  • 四川营销网站建设用html5做手机网站
  • 怎么做火短视频网站wordpress 禁止加载js
  • 咖啡网站建设的需求分析自己怎么制作公众号
  • 德州专业网站开发公司特效网站模板
  • 大型茶叶网站建设网站建设销售提点20个点
  • 从零开始建网站百度平台官网
  • 宁波市住房和城乡建设培训中心网站网站免费建站2
  • 企业做网站设计的怎么生成网页链接
  • 网站建设后如何检测wordpress 一键迁移
  • 网站开发都需要什么工具曼联vs维拉直播免费视频直播
  • 网站建设公司潍坊做企业网站后期还需要费用吗
  • wordpress 不支持svgseo搜索引擎优化薪酬
  • 教人做美食的网站做网站啦代理的方法
  • 武义县网站制作网站换主机
  • 网站开发策划方案歌词插件wordpress
  • 如何做发表文章的网站网站管理助手打开是系统参数配置
  • 苏州实力做网站公司html视频教学
  • 公司建网站 内部邮箱省住房城乡建设厅
  • 百度移动端模拟点击排名广州网站优化网站
  • 网站优化预算品牌建设需打持久战
  • 门户型网站都有哪些英文网站标题字体
  • app小程序网站开发新网站的宣传推广
  • 佛山市住房建设局网站网站建设的售后服务