Linux—回写机制

Linux—回写机制前言当我们修改了某个文件时,被修改的内容不会直接写入磁盘中,而是会写入由内核提供的一个buffer里,那么,内核会在一个特定的时间或者机制,再将buffer中的内容写进磁盘中去,为什么要这么做?原因就是减少开销,降低磁盘的读写次数。缓存的三种机制一般缓存有三种机制:1.不缓存(nowrite

大家好,欢迎来到IT知识分享网。Linux---回写机制

前言

当我们修改了某个文件时,被修改的内容不会直接写入磁盘中,而是会写入由内核提供的一个buffer里,那么,内核会在一个特定的时间或者机制,再将buffer中的内容写进磁盘中去,为什么要这么做?原因就是减少开销,降低磁盘的读写次数。

 

缓存的三种机制

一般缓存有三种机制:

1.不缓存(nowrite):这种机制是跳过缓存,直接写入磁盘中。如果进行读操作时,还需要从磁盘中读取存入缓冲中。个人觉得在读操作时,使用的时间长。

2.写透缓存(write-through cache):当进行写操作时,会写入缓存中,并且马上再写入磁盘中。这种机制相对于上一种,写操作使用的时间长,但读操作使用的时间短。

3.回写:这种机制在写操作时,会先写入缓存中,但不会立即写入磁盘中,而是在一些特定条件或操作,才会把缓存中的数据写入磁盘。回写机制可以说是非常灵活,这是本笔记探讨的内容。

 

回写机制的Dirty标志

buffer在特定的时间里(查看/proc/sys/vm/dirty_writeback_centisecs 再除以 100 就是多少秒),会被标记为dirty page,被标记的dirty page会被加入到一个链表中,但并不会马上写入磁盘中。

 

回写机制的写入磁盘时机

有两种情况dirty page才会被写入磁盘中:

1.  当空闲的内存低于某一个值时(查看/proc/sys/vm/dirty_background_ration),会把1024个dirty page写回磁盘中,直到内存回到空闲状态。

2.  当dirty page超过一定的比例时(查看/proc/sys/vm/dirty_ratio),内核会启动pdflush线程把超过的那一部分启写入磁盘中。

3.  当dirty page超过了一定的时间(查看/proc/sys/vm/dirty_expire_centisecs),才会被写入磁盘中

4.  当用户程序调用了sync() 和 fsync()系统调用。

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31008.html

(0)
上一篇 2023-10-28 15:33
下一篇 2023-10-29 22:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信