首页 > 编程知识 正文

sync是什么意思,os.getcwd()用法

时间:2023-05-03 18:50:22 阅读:171144 作者:4006

在传统的UNIX实现中,内核中有缓冲存储器,大多数磁盘I/O都是通过缓存完成的。 将数据写入文件时,数据通常会从内核复制到缓存中。 如果缓存未满,请等待写操作已满,而不将其放入输出队列;或者,如果内核需要回收缓存以存储其他磁盘块数据,请将缓存放入输出队列,然后到达队列的开头将这种输出方式称为延迟光写入的Bach 〔1 9 8 6〕第3章详细讨论延迟光]。 延迟写入会减少磁盘的读写次数,但会降低文件内容的更新速度,并且在一段时间内不会将写入文件的数据写入磁盘。

如果系统发生故障,此延迟可能会导致文件更新丢失。 为了确保磁盘上实际文件系统和缓存中内容的一致性,U N I X系统提供了两个系统调用函数: sync和fsync。

1.1同步和异步

sync只是对所有已更改的块进行缓存排队,然后返回,而不是等待实际I/O操作完成。 通常称为update的系统向导进程通常每3 0秒调用一次sync函数。 这将定期更新内核的块缓存。 命令sync(1)也调用sync函数。

函数fsync仅引用在文件描述符filedes中指定的一个文件,并等待I/O完成后返回。 fsync可用于APP应用程序(如数据库),以确保更改的块立即写入磁盘。 我们来比较一下fsync和O _ S Y N C标志吧。 见第3.1三节。 调用fsync时,会更新文件内容,如果是O _ S Y N C,则每当对文件调用w r i t e函数时,都会更新文件内容。

1.2 fflush与fsync的联系与不同

提供程序fflush是libc.a提供的方法,fsync是系统提供的系统调用。 2 .原形fflush接受一个参数file*.fflush(file ); fsync接受时的Int类型的文件描述符。 fsync(intFD ); 3 .功能fflush:将C库中的缓冲区调用write函数写入光盘[实际上是写入内核的缓冲区]。 fsync :将内核缓冲区笔刷到磁盘。

C库缓冲区----fflush----->内核缓冲区-----fsync-----磁盘

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。