其他分享
首页 > 其他分享> > 写缓存

写缓存

作者:互联网

  写缓存一般存在如下三种方式:

  第一种策略,不缓存(nowrite),也就是高速缓存不去缓存任何写操作。当对一个缓存中数据片进行写时,将直接跳过缓存,写到磁盘,同时也使缓存中的数据失效。那么如果后续读操作进行时,需要再重新从磁盘读取数据。不过这种策略很少使用,因为该策略不但不去缓存写操作,而且需要额外费力去使缓存数据失效。

  第二种策略,写操作自动更新内存缓存,同时也更新磁盘文件。这种方式,通常也称为写透缓存(write-through cache),因为写操作会l立刻穿透缓存到磁盘。这种策略对保持缓存一致性很有好处——缓存数据时刻和后备存储保持同步,所以不需要让缓存失效,同时它的实现也最简单。

  第三种策略,也是Linux所采用的,称为“回写”。在这种策略下,程序执行写操作直接写到缓存中,后端存储不会立刻直接更新,而是将高速缓存中被写入的页面标记成“脏”,并且被加入到脏页链表中。然后由一个进程(回写进程)周期性将脏页链表中的页写回到磁盘,从而让磁盘中的数据与内存中的数据一致。最后清理“脏”页标识。注意这里“脏页”这个词可能引起混淆,因为实际上脏的并非高速缓存上的数据(它们是干干净净的),而是磁盘中的数据(它们已经过时了)。也许更好的描述应该是“未同步”吧。尽管如此,我们说缓存内容是脏的,而不是磁盘内容。回写策略通常认为由于写透策略,因为通过延迟写磁盘,方便在以后的时间合并更多的数据和再一次刷新。当然,其代价是实现复杂度高了许多。

标签:回写,缓存,策略,磁盘,数据,高速缓存
来源: https://www.cnblogs.com/lc0811/p/15562353.html