`
hulianwang2014
  • 浏览: 726263 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

强制性锁建议性锁

 
阅读更多

fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。

当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。

fcntl文件锁有两种类型:建议性锁和强制性锁

  • 建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还得尊重已有的锁。内核和系统总体上都坚持不使用建议性锁,它们依靠程序员遵守这个规定。(Linux默认是采用建议性锁)
  • 强制性锁是由内核执行的。当文件被上锁来进行写入操作时,在锁定该文件的进程释放该锁之前,内核会阻止任何对该文件的读或写访问,每次读或写访问都得检查锁是否存在。

使用fcntl文件锁进行I/O操作必须小心:进程在开始任何I/O操作前如何去处理锁,在对文件解锁前如何完成所有的操作,是必须考虑的。如果在设置锁之前打开文件,或者读取该锁之后关闭文件,另一个进程就可能在上锁/解锁操作和打开/关闭操作之间的几分之一秒内访问该文件。当一个进程对文件加锁后,无论它是否释放所加的锁,只要文件关闭,内核都会自动释放加在文件上的建议性锁(这也是建议性锁和强制性锁的最大区别), 所以不要想设置建议性锁来达到永久不让别的进程访问文件的目的(强制性锁才可以)^_^;强制性锁则对所有进程起作用。

在Linux中实现上锁的函数有lock()和fcntl()。

  • lock()用于对文件施加建议性锁
  • fcntl()用于对文件施加建议性锁和强制性锁都行。同时还可以对文件某一条纪录进行上锁,也就是记录锁。

例子:

  • 例1,我有几个进程(不一定有亲缘关系)都通过fctnl机制来操作文件,这个就叫一致的方法。参见[2]
    但是,如果同时,又有个流氓进程,管它3721,冲上去,open, write。
    这时候那几个进程fcntl对这种方式无能为力,这样就叫不一致。文件最后的状态就不定了。
    正因为这种锁约束不了其它的访问方式,所以叫建议行锁。强制性锁需要内核支持的,对read, write, open都会检查锁。
  • 例2,所谓建议性锁就是假定人们都会遵守某些规则去干一件事。例如,人与车看到红灯都会停,而看到绿灯才会继续走,我们可以称红绿等为建议锁。但这只是一种规则而已,你并不防止某些人强闯红灯。而强制性锁是你想闯红灯也闯不了。参见[3]

如何在Linux系统上使用强制性锁呢?

要想让linux支持强制性锁,不但在mount的时候需要加上-o mand(APUE中文版有误,它写成了_omand), 而且对要加锁的文件也需要设置相关权限 (turn on set-group-ID and turn off group-execute)

分享到:
评论

相关推荐

    vivo手机原方强制清除解锁专用工具包.zip

    3. 系统兼容性:确保工具与你的vivo手机型号兼容,不同型号的手机可能需要不同的解决方案。 4. 防止病毒:下载工具包时要确保来源可靠,防止下载到带有恶意软件的版本,这可能会进一步破坏你的设备。 5. 后续更新...

    易语言强制锁机源码

    在这个"易语言强制锁机源码"中,我们可以深入探讨易语言的基本概念以及如何利用它来实现系统锁定功能。 首先,易语言的设计理念是“易学易用”,它的语法结构清晰,语义直观,以汉字为主,如“创建窗口”、“画线”...

    HUAWEI mate10解锁视频教会华为MATE 10 PRO被激活锁锁定怎么解锁账户解开ID清除方法解锁流程平台工具包下载使用.zip

    总的来说,华为Mate 10或Mate 10 Pro的激活锁解锁是一项技术性较强的操作,需要谨慎对待。通过下载和使用正确的工具包,结合详细的解锁教程,用户可以自行解决这一问题。然而,如果不确定或者担心操作不当,建议寻求...

    《嵌入式操作系统》实验教学大纲:实验四-Linux进程及文件操作程序设计.doc

    `flock`函数用于设置建议性锁,而`fcntl`函数则更为强大,不仅能设置建议性锁,还能设置强制性锁以及记录锁。记录锁允许对文件的特定记录进行读取锁(共享锁)或写入锁(排斥锁)的设定,确保在任何时候只有一个进程...

    荣耀20荣耀V20解锁激活设备锁视频教程荣耀20V20解开账户ID锁ID号锁不记得密码清除方法流程.zip

    - 如果不确定自己的操作,建议寻求专业人员帮助,避免自行处理可能带来的风险。 7. **视频教程的重要性**: 视频教程提供了直观的指导,能够更清晰地展示每个步骤,减少操作中的误解。观看并按照视频教程中的指示...

    解OPPO锁教程和软件.rar

    5. **技术支持**:如果你不熟悉电子设备的硬件操作,建议寻求专业人士的帮助,或者寻找有经验的社区进行咨询,以减少出错的可能性。 综上所述,"解OPPO锁教程和软件.rar"提供了对OPPO手机解锁的一种独特方法,它...

    华为解锁教程.doc

    - 操作过程中务必遵循工具提示,不要强制断开设备连接或关闭程序,以免造成设备损坏。 华为解锁教程为用户提供了清晰的操作步骤,确保即使是对技术不太了解的用户也能顺利解锁手机。但请记住,解锁Bootloader是...

    完美iphone4跳过ID锁-激活方案,最新

    - 如果是购买的二手机器,建议与卖家沟通清楚,确保设备没有ID锁问题。 #### 四、案例分析 在提供的部分内容中提到了一些具体的硬件和软件工具,例如“BSTHTC”、“JTAG-JPR”等,这些可能是用于特定硬件操作的工具...

    展讯安卓解锁软件

    通常,硬格是一种强制恢复出厂设置的方法,但某些设备或系统版本可能由于安全策略限制了此功能。展讯安卓解锁软件则能针对这种情况,通过更深入的系统交互来解除锁定,避免了数据丢失的风险。 4. 软件使用注意事项...

    面试必备之乐观锁与悲观锁.pdf

    - **原理**:在数据被读取或修改前,悲观锁会强制对数据进行锁定,确保在该线程完成操作前不会有其他线程能够访问或修改同一数据。 - **应用场景**:在多写场景下较为常见,因为这类场景中数据的并发修改几率较高,...

    分布式锁处理步骤

    值得注意的是,这种方法虽然能够帮助清理分布式锁,但在实际操作时应谨慎,因为强制回滚可能会导致数据一致性问题。在执行这类操作前,应确保理解可能的风险,并尽可能调查为何出现这些分布式锁,以避免在未来重复...

    进程解锁工具Unlocker

    《进程解锁工具Unlocker——解决文件删除难题》 在日常的电脑使用中,我们经常会遇到这样一种情况:某个文件或...不过,对于复杂的系统问题,还是建议寻求专业技术人员的帮助,以确保系统的稳定性和数据的安全性。

    进程解锁程序对无法关闭的进程解锁

    总的来说,"进程解锁程序"是解决系统中顽固进程问题的有效工具,Unlocker作为其中的一员,凭借其易用性和高效性,赢得了广大用户的认可。在面对无法关闭的进程时,正确地使用Unlocker这类工具,可以有效避免因进程...

    OPPO A53 A55手机密码忘记怎么办屏幕锁开锁定数字图案OPPO A55 A53怎么解锁刷机教程方法恢复出厂强制清除锁定办法.zip

    当你的OPPO A53或A55手机屏幕被数字图案锁定,无法正常解锁时,不必过于担心,本文将为你提供详细的解锁、刷机教程以及恢复出厂设置的方法,帮助你强制清除锁定。 首先,当你忘记密码时,尝试使用OPPO手机自带的...

    fcntl函数的使用详解

    文件锁包括建议性锁和强制性锁。 建议性锁要求每个上锁文件的进程都要检查是否有锁存,并且尊重已有的锁。在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内 核执行的锁,当一个文件被上锁进行写入操作的...

    oracle查锁和解锁命令

    ### Oracle查锁与解锁命令详解 #### 一、Oracle锁机制简介 在Oracle数据库中,锁是用来控制多个用户对同一数据资源访问的一种...通过以上方法,不仅可以有效管理Oracle中的锁,还能显著提升数据库的稳定性和性能。

Global site tag (gtag.js) - Google Analytics