操作系统文件建议锁与强制锁
文件锁有建议使用和强制使用之分。
- 建议锁又称协同锁。对于这种类型的锁,内核只是提供加减锁以及检测是否加锁的操作,但是不提供锁的控制与协调工作。也就是说,如果应用程序对某个文件进行操作时,没有检测是否加锁或者无视加锁而直接向文件写入数据,内核是不会加以阻拦控制的。因此,建议锁,不能阻止进程对文件的操作,而只能依赖于大家自觉的去检测是否加锁然后约束自己的行为;多数 Unix 和类 Unix 操 作系统使用建议型锁,有些也使用强制型锁或兼而有之。
- 强制锁,是OS内核的文件锁。每个对文件操作时,例如执行open、read、write等操作时,OS内部检测该文件是否被加了强制锁,如果加锁导致这些文件操作失败。也就是内核强制应用程序来遵守游戏规则;微软的操作系统往往使用的是强制型锁。
所以依赖于强制文件锁定的应用程序,从根本上讲就是不可移植的。如果所有的文件锁均为建议型,并在访问共同资源的各个应用程序间使用一致的文件锁定,是明智之举,可以在跨操作系统工作。