Linux系统编程-页回写

什么是页回写,直接说,不太好理解,那就稍后再说,现在先来看一下,通过write()写数据,数据需要经历哪些步骤,最终才保存到硬盘上。

假设:当我们在应用里调用write(),写一个hello的数据,那么数据首先会被保存到linux系统的一个缓存区里,最后再经由缓存区写入到硬盘。

这时,大家可能会产生如下一些疑问,那我挨个来回答

为什么数据不直接保存到硬盘?

对于非计算机专业,不懂系统原理的人来说,可能会觉得中间加了一个缓冲区有点多此一举,事实上完全不是你想的那样。

由于本身的设计原因,硬盘接收数据的速度非常慢,有多慢呢,就跟蜗牛爬一样,有些朋友可能会想,为什么不设计快些呢?

哎,没办法啊,由于当前科技,以及材料的限制,能有这么快已经算不错了。所以,当你在调用write()时,不要缓存区,直接将数据写入到硬盘,这就会造成调用write()后,会等很久,write()调用才结束,因为硬盘接收的速度很慢,所以write()要等到硬盘接收完全部的数据才能返回。加了缓存区就不一样了。由于缓存区在内存,而内存接收数据的速度堪比火箭。所以write()可以很快的将数据先写完,然后实现快速调用返回。看到这里,我们终于明白了,原来write()写的数据并不是直接写入到硬盘上的,而是先写到缓存区里,过一段时间后,由Linux系统自动帮你把缓存区的数据写入到硬盘。

什么是页回写?

将缓存区的数据保存到硬盘的过程就是页回写。有些较真的朋友,可能会有疑问?为什么叫页回写,叫回写不是更贴切。页是一个用于描述空间大小的专业名词,通常是4kb,而上图中的缓存区是属于页的一部分,所以当你明白这一点后,叫页回写也挺贴切。

Linux系统什么时候将缓存区里的数据保存到硬盘上

linux系统会为每一个缓存区都设定一个存活时间,这个时候可能是几毫秒,几纳秒,时间一到,就会将缓存区的数据保存到硬盘上。

页回写可能会带来的问题?

由于数据会先保存到缓存区里,所以当你电脑突然断电,那么这个数据可能就会造成丢失,可见想要快,总是要付出代价的,这也是为什么电脑高手叫我们关电脑时,不要强制关闭电脑,应该点击系统的关机菜单,让系统慢慢的关闭,因为系统在关闭时,会优先的把缓存区的数据先保存到硬盘上,避免数据丢失,你强制关闭了,数据可能就不见了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值