本文介绍了需要哪些文件系统操作才能是原子的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

只有unlinkfsyncrename是原子的吗?

编辑:原子表示操作要么成功且有效,要么失败且无效;操作不得失败且有效。

显然,如果内核死机,程序无法处理操作失败的错误,但在这种情况下,它必须认为它确实失败了

推荐答案

我不确定fsync(2)是原子的;如果一个文件在缓冲区缓存中有100兆字节的脏数据,则需要几秒钟才能将该数据写出,并且内核可能会在传输到磁盘的过程中崩溃。也许板载的DMA引擎只能处理4兆字节的写入。可能没有DMA支持,CPU必须通过512字节块安排每次写入。

你说的"原子"是什么意思?

mkdir可能是‘原子’的,或者目录存在于磁盘上并链接到父目录,或者目录数据结构尚未链接到父目录,因此无法访问-->不存在。

mount(2)可能也是如此:很难找到一个中途完成的mount(2),如果失败,整个挂载就会失败:要么文件系统已挂载,要么没有挂载。

umount(2)很有趣,可以懒惰地做,但一旦卸载,就不能用于open(2)creat(2)调用。

所以,我想这可以归结为,你说的‘原子’是什么意思?:)

这篇关于需要哪些文件系统操作才能是原子的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 12:55