免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2326 | 回复: 6
打印 上一主题 下一主题

[Linux] 什么情况下需要调用sync(2) [复制链接]

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-20 21:27 |只看该作者 |倒序浏览
本帖最后由 fly3ds 于 2013-10-20 21:27 编辑

manual告诉我们sync把内存中没有写进磁盘的数据写到磁盘,  什么数据会被缓冲在内存呢?往文件描述符write的数据会被缓冲在内存中吗?   我也写过好多程序,  write之后从来没调用过sync,   程序也没出过错..

谁能给出一个必须要使用sync不用程序运行就不正确的例子??

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-10-20 23:37 |只看该作者
write是写入内核缓冲区排队了, 是有可能丢的噢.

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00
3 [报告]
发表于 2013-10-21 00:06 |只看该作者
回复 2# linux_c_py_php


    什么情况下会丢呢??

论坛徽章:
0
4 [报告]
发表于 2013-10-21 00:24 |只看该作者
回复 3# fly3ds

掉电、崩溃什么的。。
系统Daemon process会每隔一段时间主动调用sync,所以你自己不用调用了。

论坛徽章:
3
亥猪
日期:2013-08-28 12:50:23白羊座
日期:2013-11-25 12:55:50酉鸡
日期:2014-02-12 10:46:13
5 [报告]
发表于 2013-10-23 17:44 |只看该作者
系统提供给应用层的那些IO接口  诸如read write 都是应用跟系统缓冲区交互的,没有直接跟磁盘交互的,况且磁盘与系统缓冲之间还有一个SWAP  
换句说应用所看到的数据都是从系统缓冲区里取的。sync是把数据强制性地写到磁盘的其中一种方法而已,当然还有其它方法,诸如系统内存不足了需要换页、上面兄台也提到了系统会周期性地往磁盘回写数据、通过proc系统接口等
上面兄台也提到了系统掉电的情况下,系统来不及回写数据,数据可能会丢失的

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00
6 [报告]
发表于 2013-10-23 17:46 |只看该作者
回复 5# joepayne


    哪些系统进程回时不时的调用sync呢。   pe -ef能看到这些调用进程吗?

论坛徽章:
3
亥猪
日期:2013-08-28 12:50:23白羊座
日期:2013-11-25 12:55:50酉鸡
日期:2014-02-12 10:46:13
7 [报告]
发表于 2013-10-23 17:54 |只看该作者
这个跟我们应用层远了去了,不过可以咨询一下文件系统方面的专家   {:3_189:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP