文件锁(三)——文件锁的原理

文件锁的原理

理解了文件锁的原理后,就可以理解为什么文件锁可以实现互斥与共享了。

若A进程与B进程同时打开同一个文件,他们使用同一个文件表,使用同一个V节点,V节点指向hello这个文件,里面有一个锁链表,里面记录了锁的信息。

加锁时,进程会检查共享的文件锁链表

  1. 如果链表上只有读锁节点
    • 所有目前其他进程对该文件只加了读锁,由于读锁时共享的,所以不管链表上有几个读节点,当前进程都能成功加读锁。
    • 图:
    • 提供:链表上可不可以存在n多个读锁节点?
    • 答:可以,因为读锁是共享的,不管别的进程有没有解读锁,所有进程都可以加读锁,每加一个读锁,链表上就多一个读锁节点,只有当解锁时节点才被删除。
  2. 如果链表上有一个写锁节点
    • 表明,当前有进程对文件加了锁,锁节点还存在,表示人家目前还没有解锁,写锁是互斥的,所以当前不能加读锁,别人解锁后才能加读锁,加锁后链表上就插入了一个读锁节点。
    • 没有解锁就表示数据没有写完,必须等到解锁后才能加读锁
    • 提问:链表上可不可能同时存在多个写锁节点?
    • 答:不可能,因为写锁是互斥的,目前只有一个进程再给文件加写锁,再解锁之前,别的进程不能加写锁。
    • 疑问:链表上会不会同时存在读锁节点和写锁节点?
    • 读锁节点和写锁节点也是互斥的,链表上有读锁节点就不可能存在写锁节点,反过来有写锁节点就不能有读锁节点。

如果你想加

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值