当在Windows下打开一个文件时,此文件所在的路径全部被锁定。
路径锁定的意思是,文件本身、所在目录、上一层目录等,全部无法被重命名和重新移动。
实际上,这个锁定完全可以被移除。
方法是:
任何一个打开的文件将创建对原始文件数据IO的一个流连接,同时产生一个对文件元属性的临时快照的拓扑镜像。
这里的基本想法是:文件移动、重命名的操作并不影响文件的内容数据,可以看作是对文件属性的操作。(目录的概念应该是平面化的虚拟Tag标记,不应该是实体化的硬目录,这么一个早期Unix系统设计的特性早应该去掉了)
每个这样的文件属性操作都可以带上一个时间戳,新的总是无条件覆盖老的。(用数据库MVCC的术语来说,写操作永远不阻塞,前提是这个写不是修改实体本身的内容,而是指向实体的关系连接),而老的自动降级到一个老的临时会话中,并会在以后丢弃。
从Windows/Linux文件系统设计的一个特性论软件架构的灵活性欠缺
原文地址:http://blog.csdn.net/cteng/article/details/44220573