filesystems – 什么文件系统操作需要是原子的?

unlink,fsync和重命名是唯一按定义原子的吗?

编辑:原子意味着操作成功并具有效果或失败并且无效;操作必须不会失败并产生影响.

很明显,如果内核发生混乱,程序无法处理操作失败的错误,但在这种情况下必须考虑它确实失败了

解决方法

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

“原子”是什么意思?

mkdir可能是’原子’,要么磁盘上存在目录并且链接到父目录,要么目录数据结构尚未链接到父目录,因此无法访问 – >不存在.

mount(2)也是如此:很难找到mount(2)中途完成,如果失败,整个挂载失败:文件系统是挂载的,还是不挂载.

umount(2)很有趣,它可以懒惰地完成,但是一旦卸载它就不能用于open(2)或creat(2)调用.

所以,我想这归结为,’原子’是什么意思?

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...