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

深圳高端网站设计建设福州建设高端网站

深圳高端网站设计建设,福州建设高端网站,外包小程序开发疑虑解答,泰安市泰山区招聘信息操作系统专栏1-内存管理 虚拟地址内存管理方案分段分页页表单级页表多级页表TLB 段页式内存管理Linux内存管理 malloc工作方式操作系统内存回收回收的内存种类 预读失败和缓存污染问题预读机制预读机制失效解决方案缓存污染 内核对虚拟内存的表示内核对内核空间的表示直接映射区… 操作系统专栏1-内存管理 虚拟地址内存管理方案分段分页页表单级页表多级页表TLB 段页式内存管理Linux内存管理 malloc工作方式操作系统内存回收回收的内存种类 预读失败和缓存污染问题预读机制预读机制失效解决方案缓存污染 内核对虚拟内存的表示内核对内核空间的表示直接映射区vmalloc映射区永久映射区固定映射区临时映射区 虚拟地址 首先第一个问题,虚拟地址为什么要存在呢,原因其实很简单,隔离开多个进程之间的地址空间,让每个进程都认为自己拥有一块完整的物理空间,并且提供大的逻辑内存供进程使用,虚拟地址是现代操作系统进行内存管理的基石 内存管理方案 分段 程序的内存空间由多个段组成,代码段,数据段,堆段和栈段组成,用分段的方式将这些段隔离开来 那么分段的方式有什么缺点呢,主要两点外部内存碎片和交换效率 外部内存碎片的解决方案为内存交换,将音乐程序占用的256MB先换出到磁盘上,然后读回到内存中(实际上就是换了位置,紧邻着存)Linux系统中的SWAP分区就是干这个的 分页 分段的弊端在上节描述,为了减少内存换进换出的装载量,出现了分页,分页就是把整个内存区域切分成固定大小的片(一般为4KB).示意图如下 分页访问在发现虚拟地址在页表中查询不到时,产生一个缺页异常,操作系统分配好内存空间之后,更新页表,返回进程继续运行,页与页之间是紧密排列的,所以不会有外部碎片,但是引入了内部碎片,而且页的大小固定,换入换出的开销也变得可以接受了 页表 页表实际上就是虚拟地址和物理地址的一个映射关系 单级页表 单级页表存在一个页表存储空间占用过大的问题,假设目标机为32位机,虚拟内存共有4GB,那么共有4GB/4KB 2^20个页,每个页表项4B,那么共需4MB的空间来存储页表,注意,每个进程有自己的页表,那么100个进程需要400MB,1000个进程就将4GB全部占完了 多级页表 解决上述的问题,采用多级页表,多级页表的实质就是只在一级页表页实际用到的情况下才创建2-n级的页表, TLB 多级页表实际上是一种时间换空间的方案,为了加速虚拟地址到物理地址的转换,TLB被提出,TLB存在于CPU中,存放的是最近访问的页表 段页式内存管理 段页式是操作系统常用的内存管理方式,实现方式为,先把程序的内存空间分段,再对这些段分页 Linux内存管理 Linux主要是页式内存管理,段内存被Linux给绕了过去,每个段都是从0地址开始的4GB地址空间 Linux的内核空间是每个进程共享的 其中 代码段:存放二进制可执行代码数据段:已初始化的静态常量和全局变量BSS:为初始化的静态变量和全局变量堆段:动态分配的内存,地址空间从低到高增长文件映射段:动态库,共享内存栈段:局部变量和函数调用的上下文,栈大小固定,大小一般为8MB malloc工作方式 malloc申请内存有两种方式 小于128KB,brk()系统调用在堆上分配内存大于128KB,mmap()系统在文件映射区分配内存 这两种方式的区别在于 brk()方式申请的内存,在free释放内存时,并不会归还给操作系统,而是缓存在内存池中,待下次使用mmap()申请的内存,free释放时,会归还给操作系统 操作系统内存回收 当没有空闲的物理内存可用时,内核就会开始进行回收内存的工作,回收方式有两种,直接内存回收和后台内存回收 后台内存回收:在物理内存紧张时,唤醒kswapd内核线程,这个线程是异步的,不会阻塞进程的执行直接内存回收,当后台异步回收跟不上进程内存的申请速度,就会开始直接回收,这个回收过程是同步的,会阻塞进程的执行 直接回收后,若空闲的物理内存仍然无法满足物理内存的申请,那么内核就会使用OOM机制(直接杀掉内存占用高的进程) 回收的内存种类 能被回收的内存有两类,分别是文件页和匿名页 文件页:内核缓存的磁盘数据和内核缓存的文件数据都可以被称为文件页,分为干净页和脏页,干净页指没有被修改过的,直接释放即可,脏页需要先写到磁盘后才能释放匿名页:这部分内存没有实际上的载体(没有对应的磁盘文件),堆和栈都属于这种页,这种页的回收方式是通过Linux的Swap机制先写到磁盘中 实际上由于文件页回收有可能是干净页,这个时候不需要磁盘IO,所以文件页的回收往往性能高  回收内存的算法为LRU算法,在linux的回收算法中,维护两个链表,active和inactive列表,active列表存放最近被访问过的活跃内存页,inactive列表存放非活跃的页,回收时,优先访问不活跃的内存 预读失败和缓存污染问题 预读机制 当操作系统试图磁盘读时,会把临近的数据也读到内存中,以备之后访问 预读机制失效 提前被加载的页,如果以后不被访问,还可能挤掉热点数据页,大大降低了缓存命中率 解决方案 Linux解决方案是分为了两个LRU链表,活跃LRU和非活跃LRU,这两个LRU互相独立,互不干扰MySQL的InnoDB在LRU列表上划分两个区域young区域和old区域 缓存污染 上面的方案如果数据被加载并被读了一次,还是会挤走热点数据,解决方案是提升加入活跃LRU的门槛 内核对虚拟内存的表示 主要是通过mm_struct这个结构体表示的 内核对内核空间的表示 通过TASK_SIZE将进程的虚拟内存空间和内核内存空间分割开来之后,在32位下0xC000000 - 0xFFFF FFFF这段空间的分配如下 直接映射区 其中ZONE_NORMAL和ZONE_DMA共同构成了直接映射区,直接映射区占896M会直接映射到物理内存的前896M内存空间中,当进程被创建完毕,在内核运行的过程中,内核会为每一个进程设置一个内核栈,每个进程的掉用链存放在自己的内核栈中,每个内核栈大概占据2的页的内存空间 ZONE_DMA为DMA映射区,为16MBZONE_NORMAL存放上问所述的内核栈等信息 vmalloc映射区 vmalloc区分配的内存在虚拟内存上连续,而在物理内存上不连续 永久映射区 虚拟地址于物理地址建立长期的映射关系 固定映射区 虚拟地址固定,但是物理地址不固定(指针常量) 临时映射区 在中断处理等时使用的救急内存
http://www.hkea.cn/news/14517854/

相关文章:

  • 网站建设公司哪家好 皆来磐石网络手机360优化大师官网
  • 自贸区网站建设wordpress显示作者信息
  • 正规网站建设首选公司郴州58同城
  • 网站焦点图怎么做链接建设有限公司网站
  • wordpress admin 密码seo优化总结
  • 长寿做网站北京app制作开发
  • 织梦cms官方网站wordpress 只有英文版
  • 学校网站建设招标公告深圳营销型网站建设设计公司
  • 做网站开发的过程asp.net ftp发布网站
  • 管理课程培训视频教程全集网站seo优化有哪些
  • 搭建网站的必须条件tp框架做展示网站
  • 用别人公司域名做网站网站开发方法是什么
  • 连云港做网站建设html教学网站
  • 崇明建设镇乡镇府网站淘宝电子网站建设论文
  • 做网站编程时容易遇到的问题电商网络推广方案
  • html制作一个个人主页网站公司网站建设一条龙
  • 利用网上菜谱做网站专业做网站推广的公司
  • 用asp做的网站全国网络公司大全
  • 做seo_教你如何选择网站关键词北京市建设工程审核网站
  • 公司建立网站怎么做分录简单的报价表模板
  • .net商城网站开发东莞网站建设技术
  • ui图标素材网站建网站有哪些费用
  • 安徽富通建设有限公司网站天津企业免费建站
  • 网站建设方案大全网站三元素怎么做
  • 铜陵app网站做营销招聘投资网站模板
  • 新加坡的网站域名柳州网站推广最好的公司
  • 做网站一般图片的比例北京中文seo
  • 做办公用品的招聘网站网站备案负责人 更换
  • 网站建设相关知识博客wordpress工具包
  • 备案网站首页地址网站简历文字如何空行