【Linux内核笔记】Cache 页高速缓存

文章目录cache缓存手段写缓存缓存回收缓存回收策略address_spaceaddress_space操作缓冲区高速缓存buffer回写操作cachecache用于实现磁盘缓存(缓存内存物理页面),减少对磁盘的IO操作。具体是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。cache可以动态调整:通过占用空闲内存以扩张大小,也可以自我收缩以缓解内存使用压力。正被缓存的存储设备为后备存储。因为缓存背后的磁盘无疑才是所有缓存数据的归属。当内核开始一个读操作,首先会检查需要的
摘要由CSDN通过智能技术生成

cache

cache用于实现磁盘缓存(缓存内存物理页面),减少对磁盘的IO操作。具体是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。
cache的材质 SRAM 比内存使用的 DRAM 贵许多,所以不同于内存动辄以 GB 计算,它的大小是以 MB 来计算的。比如,在我的 Linux 系统上,离 CPU 最近的一级缓存是 32KB,二级缓存是 256KB,最大的三级缓存则是4096KB
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

程序执行时,会先将内存中的数据载入到共享的三级缓存中,再进入每颗核心独有的二级缓存,最后进入最快的一级缓存,之后才会被 CPU 使用,就像下面这张图。在这里插入图片描述
缓存要比内存快很多。CPU 访问一次内存通常需要 100 个时钟周期以上,而访问一级缓存只需要 4~5 个时钟周期,二级缓存大约 12 个时钟周期,三级缓存大约 30 个时钟周期(对于 2GHZ 主频的 CPU 来说,一个时钟周期是 0.5 纳秒。)

  • cache可以动态调整:通过占用空闲内存以扩张大小,也可以自我收缩以缓解内存使用压力。
  • 正被缓存的存储设备为后备存储。因为缓存背后的磁盘无疑才是所有缓存数据的归属。
  • 当内核开始一个读操作,首先会检查需要的数据是否在cache中,如果在则放弃访问磁盘,直接从内存memory中读取。这个行为称为缓存命中。如果数据没有在缓存中,称为缓存未命中,那么内核必须调度块I/O操作从磁盘去读取数据。然后内核将读来的数据放入cache中。

缓存手段

写缓存
  • nowrite 不缓存 —— cache不缓存任何写操作,直接写到磁盘,同时也使缓存中的数据失效。 该策略很少使用,需要额外费力使缓存数据失效。
  • write-through cache写透缓存 —— 写操作自动更新缓存和磁盘。该策略实现也最简单
  • copy-write(write-behind) 回写 —— 程序执行写操作写入缓存,并将在缓存中标记为脏页加入脏页链表。由一个进程(回写进程)周期性将脏页链表中的页写回到磁盘。
缓存回收

Linux缓存回收选择干净页(不脏)进行简单替换,如果缓存中没有足够的干净页面&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值