filesystems – 什么文件系统操作需要是原子的?
发布时间:2020-12-15 03:03:07 所属栏目:Java 来源:网络整理
导读:unlink,fsync和重命名是唯一按定义原子的吗? 编辑:原子意味着操作成功并具有效果或失败并且无效;操作必须不会失败并产生影响. 很明显,如果内核发生混乱,程序无法处理操作失败的错误,但在这种情况下必须考虑它确实失败了 解决方法 我不确定fsync(2)是原子的
unlink,fsync和重命名是唯一按定义原子的吗?
编辑:原子意味着操作成功并具有效果或失败并且无效;操作必须不会失败并产生影响. 很明显,如果内核发生混乱,程序无法处理操作失败的错误,但在这种情况下必须考虑它确实失败了 解决方法
我不确定fsync(2)是原子的;如果一个文件在缓冲区缓存中有100兆字节脏,那么将该数据写出来需要几秒钟,并且在传输到磁盘的过程中内核可能会崩溃.也许板载的DMA引擎只能处理4兆字节的写入.也许没有DMA支持,CPU必须通过512字节块调度每次写入.
“原子”是什么意思? mkdir可能是’原子’,要么磁盘上存在目录并且链接到父目录,要么目录数据结构尚未链接到父目录,因此无法访问 – >不存在. mount(2)也是如此:很难找到mount(2)中途完成,如果失败,整个挂载失败:文件系统是挂载的,还是不挂载. umount(2)很有趣,它可以懒惰地完成,但是一旦卸载它就不能用于open(2)或creat(2)调用. 所以,我想这归结为,’原子’是什么意思? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |