【发布时间】:2015-02-09 19:31:24
【问题描述】:
符合 POSIX 的操作系统可以对文件系统对象(文件和文件夹)进行原子操作。这是presumably atomic operations的列表:
- 重命名或移动文件或文件夹
- 创建硬链接
- 创建符号链接
- 创建文件夹
- 创建并打开一个空文件
是否可以基于这些操作构建用于操作文件的比较和交换算法?
假设我们有几个进程正在对单个文件执行并发读/写。文件的特征在于其修订版本。假设将修订添加到文件名,并且文件有一个符号链接,进程可以使用该符号链接来读取它。这些进程不能(由于某些原因)与互斥锁、信号量等同步,但它们能够创建辅助文件和文件夹。他们是否能够对文件执行基于修订的比较和交换修改(创建一个新文件,创建和重命名符号链接),这意味着如果多个进程要同时修改它,一个会成功,其余的会失败并显示一些错误代码?
算法必须能够抵抗算法任何步骤中任何进程的突然终止。
【问题讨论】:
-
比较和交换的“比较”部分比较的是什么?
-
文件可能有修订版,“比较”部分可以比较修订版。
标签: algorithm filesystems posix atomic compare-and-swap