linux信号遇到加锁,Linux文件锁技术的分析与实现.pdf

Linux文件锁技术的分析与实现.pdf

第 22卷 第 4期 电脑 开 发 与 应 用

文章编号 :1003—5850(2009)04—0043—03

Linux文 件 锁 技 术 的 分 析 与 实 现

AnalysisandRealization ofFileLock inLinux

周 超 刘云朋。

(焦作大学信息工程学院 河南焦作 454003)(。焦作大学科研处 河南焦作 454003)

【摘 要】为 了解决多个进程并发访 问同一个文件时所面临的同步 问题,Linux采用 了文件加锁技术。介绍了

Linux中各类文件锁的概念 ,详细分析 了与文件锁密切相关的系统调用 ,并给 出了一个文件锁的使用实例 。

【关键词】Linux,系统调用,锁,文件

中图分类号 :TP301 文献标识码 :A

ABSTRACT Inordertosolvethesynchronizationofmanyprocessaccessingthesamefile,Linuxhasadoptedfilelock.Thispaper

describestheconceptoffile1ockinLinux'analysasthecloselyrelatedsystem calls’andoffersanexampleoffilelock·

KEYWORDS Linux。system call,lock,file

在多任务操作系统环境 中,如果一个进程尝试对 文件加共享锁。但是 ,如果一个进程对该文件加了排他

正在被其他进程读取的文件进行写操作 ,可能会导致 锁,那么其他进程则无权再对该文件加共享锁或者排

正在进行读操作的进程读取到一些被破坏或者不完整 他锁 ,直到该排他锁被释放。

的数据 ;如果两个进程并发对同一个文件进行写操作 ,

2 相关的系统调用

可能会导致该文件遭到破坏。因此 ,为了避免发生这种

问题,必须要采用某种机制来解决多个进程并发访 问 在 Linux中,有两个与文件锁关系密切的系统调

同一个文件时所面临的同步问题,由此而产生了文件 用 :flock()和 fentl()。

加锁方面的技术。 ① flock()

Linux2.6内核利用系统调用 flock()实现 了共

1 Linux支持的文件锁技术

享模式强制锁 ,但 flock()只能实现对整个文件进行

Linux支持的文件锁技术主要包括劝告锁和强制 加锁 ,不能实现记录级 的加锁 ,函数原型如下 :

锁这两种。劝告锁是一种协同工作的锁 ,对于这一种锁 intflock(intfd,intoperation);

来说 ,内核只提供加锁 以及检测文件是否 已加锁的手 fd是需要加锁的文件的描述符 ,operation可以为

段 ,而不参与锁的控制和协调 ;强制锁是每当有系统调 下列值 :

用 open()、read()以及 write()发生 的时候 ,内核都 LOCK SH:共享锁 ,多个进程可以同时拥有对

要检查并确保这些系统调用不会违反在所访问文件上 文件的共享锁。

加的强制锁约束,如果有进程不遵守游戏规则,硬要往 LOCK EX:互斥锁,一个文件 只能上一把互斥

加了锁的文件中写入 内容 ,内核就会加 以阻拦 。 锁 。

此外 ,Linux中还引入 了两种强制锁 的变种形式 : LOCK UN:解锁操作 。

共享模式强

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值