9、UNIX 文件锁机制详解

UNIX 文件锁机制详解

1. 文件锁类型概述

文件锁有两种基本形式:
- 锁文件(Lock files)
- 锁区域(Locked regions)

锁文件要求进程在写入受保护的数据文件之前创建并打开一个锁文件。若创建失败,进程会休眠一段时间后重试。例如,数据文件为 database.dat ,锁文件可能命名为 database.lck ,其内容不重要,甚至可以为空。当更新完成后,释放锁文件。这种方法依赖于所有进程的协作。

锁区域允许进程锁定数据文件的特定区域。区域由指定起始偏移量的一个或多个字节组成,偏移量可超出当前文件大小。若请求的锁区域与已授予的锁冲突,请求进程将休眠直到冲突解除。

文件锁定在 UNIX 中有两种强制模型:
- 建议锁(Advisory locking):不强制,依赖进程协作维护数据文件完整性。若有进程不遵守锁定约定,可能损坏数据文件。
- 强制锁(Mandatory locking):强制锁定。当进程尝试写入启用强制锁定的文件区域时,其他进程无法干扰,写入进程也会被阻塞直到冲突消失。

2. 锁文件技术

锁文件技术是一种粗粒度的锁定技术,意味着整个文件被锁定。其步骤如下:
1. 尝试创建并打开锁文件。
2. 若步骤 1 失败,休眠一段时间后重复步骤 1。
3. 若步骤 1 成功,则成功锁定资源。

该方法的成功依赖于锁文件的创建和打开操作必须是原子的,即要么完全成功,要么完全失败。可以使用 UNIX 的 open(2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值