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

深圳网站设计与制作长春企业免费建站

深圳网站设计与制作,长春企业免费建站,wordpress大前端4.1,icp主体备案号和网站备案号内存管理子系统可能是linux内核中最为复杂的一个子系统#xff0c;其支持的功能需求众多#xff0c;如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等#xff0c;而且对性能也有很高的要求。本文从内存管理硬件架构、地址…内存管理子系统可能是linux内核中最为复杂的一个子系统其支持的功能需求众多如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等而且对性能也有很高的要求。本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手尝试对内存管理的软硬件架构做一些宏观上的分析总结。 内存管理硬件架构 因为内存管理是内核最为核心的一个功能针对内存管理性能优化除了软件优化硬件架构也做了很多的优化设计。下图是一个目前主流处理器上的存储器层次结构设计方案。 从图中可以看出对于逻辑cache架构读写内存硬件设计了3条优化路径。 1首先L1 cache支持虚拟地址寻址保证CPU出来的虚拟地址VA不需要转换成物理地址PA就可以用来直接查找L1 cache提高cache查找效率。当然用VA查找cache有安全等缺陷这需要CPU做一些特别的设计来进行弥补具体可以阅读《计算机体系结构量化研究方法》了解相关细节。 2如果L1 cache没有命中这就需要进行地址转换把VA转换成PA。linux的内存映射管理是通过页表来实现的但是页表是放在内存中的如果每次地址转换过程都需要访问一次内存其效率是十分低下的。这里CPU通过TLB硬件单元在MMU中来加速地址转换。 3获得PA后在L2 cache中再查找缓存数据。L2 cache一般比L1 cache大一个数量级其查找命中率也更高。如果命中获得数据则可避免去访问内存提高访问效率。 可见为了优化内存访问效率现代处理器引入多级cache、TLB等硬件模块。 内存映射空间划分 根据不同的内存使用方式和使用场景需要内核把内存映射地址空间划分成多个部分每个划分空间都有自己的起止地址、分配接口和使用场景。下图是一个常见的32位地址空间划分结构。 DMA内存动态分配地址空间 一些DMA设备因为其自身寻址能力的限制不能访问所有内存空间。如早期的ISA设备只能在24位地址空间执行DMA即只能访问前16MB内存。所以需要划分出DMA内存动态分配空间即DMA zone。其分配通过加上GFP_ATOMIC控制符的kmalloc接口来申请。直接内存动态分配地址空间 因为访问效率等原因内核对内存采用简单的线性映射但是因为32位CPU的寻址能力4G大小和内核地址空间起始的设置3G开始会导致内核的地址空间资源不足当内存大于1GB时就无法直接映射所有内存。无法直接映射的地址空间部分即highmem zone。在DMA zone和highmem zone中间的区域即normal zone主要用于内核的动态内存分配。其分配通过kmalloc接口来申请。高端内存动态分配地址空间 高端内存分配的内存是虚拟地址连续而物理地址不连续的内存一般用于内 核动态加载的模块和驱动因为内核可能运行了很久内存页面碎片情况严 重如果要申请大的连续地址的内存页会比较困难容易导致分配失败。根 据应用需要高端内存分配提供多个接口: vmalloc指定分配大小page位置和虚拟地址隐式分配 vmap指定page位置数组虚拟地址隐式分配 ioremap指定物理地址和大小虚拟地址隐式分配。 持久映射地址空间 内核上下文切换会伴随着TLB刷新这会导致性能下降。但一些使用高端内存的模块对性能也有很高要求。持久映射空间在内核上下文切换时其TLB不刷新所以它们映射的高端地址空间寻址效率较高。其分配通过kmap接口来申请。kmap与vmap的区别是vmap可以映射一组page即page不连续但虚拟地址连续而kmap只能映射一个page到虚拟地址空间。kmap主要用于fs、net等对高端内存访问有较高性能要求的模块中。固定映射地址空间 持久映射的问题是可能会休眠在中断上下文、自旋锁临界区等不能阻塞的场景中不可用。为了解决这个问题内核又划分出固定映射其接口不会休眠。固定映射空间通过kmap_atomic接口来映射。kmap_atomic的使用场景与kmap较为相似主要用于mm、fs、net等对高端内存访问有较高性能要求而且不能休眠的模块中。 不同的CPU体系架构在地址空间划分上不尽相同但为了保证CPU体系差异对外部模块不可见内存地址空间的分配接口的语义是一致的。 因为64位CPU一般都不需要高端内存当然也可以支持在地址空间划分上与32位CPU的差异较大下图是一个X86_64的内核地址空间划分图: 资料直通车Linux内核源码技术学习路线视频教程内核源码 学习直通车Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈 内存管理软件架构 内核内存管理的核心工作就是内存的分配回收管理其内部分为2个体系页管理和对象管理。页管理体系是一个两级的层次结构对象管理体系是一个三级的层次结构分配成本和操作对CPU cache和TLB的负面影响从上而下逐渐升高。 页管理层次结构由冷热缓存、伙伴系统组成的两级结构。负责内存页的缓存、分配、回收。 对象管理层次结构由per-cpu高速缓存、slab缓存、伙伴系统组成的三级结构。负责对象的缓存、分配、回收。这里的对象指小于一页大小的内存块。 除了内存分配内存释放也是按照此层次结构操作。如释放对象先释放到per-cpu缓存再释放到slab缓存最后再释放到伙伴系统。 框图中有三个主要模块即伙伴系统、slab分配器和per-cpu冷热缓存。他们的对比分析如下。 原文作者极客重生
http://www.yayakq.cn/news/3962/

相关文章:

  • 自建网站怎么做后台管理系统教育类php开源网站
  • 肥东住房和城乡建设部网站人力资源公司代缴社保合法吗
  • wordpress咋建站建网站定制
  • 在网站文字上做超链接php网站开发好找工作吗
  • 建设银行官方网站4399网页游戏开服表
  • 企业品牌类网站有哪些做网站策划容易遇到哪些问题
  • 曲周企业做网站推广WordPress哪些主题是免费的
  • 网站做一半能退吗合肥专业网站优化哪家好
  • .net网站开发实例食品建设网站的目的
  • 专门做品牌网站设计服务wordpress+怎么改密码
  • 那些知名网站是外包做的一流的商城网站建设
  • 余姚网站建设设计图片加字制作免费
  • 免备案网站建设WordPress 标签 模板
  • 网站群发软文软件西安软件开发公司排行
  • 网站建设与管理试题及答案关键词和网站的关系
  • 银川住房和城乡建设局网站佛山用户网站建站
  • 网站建设案例好么品牌网站如何做seo
  • 在线作图网站如何生成网站
  • 网站建设确认报告平度城乡建设局网站
  • 国内最大的开源网站自己制作头像的网站 设计 动漫
  • 石家庄 外贸网站建设公司网站开发人员的 生活
  • app开发公司需要多少人兰州网站优化哪家好
  • 360平台怎么做网站优化wordpress响应式商场
  • 买网站送域名php做图片交互网站代码
  • 网站建设 三网wordpress 发短信
  • 洛宁网站开发网站服务器如何维护
  • 销售网站建设赚钱吗网络货运怎么做的
  • 自适应网站模版哈尔滨精品建站
  • 自媒体采集网站建设国外flash网站模板
  • 简单大方网站外链查询工具