linux file lock

linux的文件锁分为两种:

一种是advasory lock,只能保证进程内对同一个文件锁的互斥有效,但是多个进程可以同时对一个文件加互斥的锁,所以这种锁是加在file 结构上;一种是mandatory lock,这种锁可以保证多个进程无法对同一个文件都加上互斥锁,所以这种锁是加在inode 结构上的。

当加mandatroy lock时,如果已有进程在文件上加了互斥锁a,那么进程创建的file_lock b结构将会加入到a的等待链表中,此时a叫做blocker,b被称为waiter。由于进程想要的资源(加锁)无法被满足,所以进程要么被阻塞,进程的描述符被加入到 b的等待链表中;要么系统调用直接返回错误。(取决于调用时的flag值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值