• linux 建议锁和强制锁


    作为APUE 14.3节的参考

    linux是有强制锁的,但是默认不开启.想让linux支持强制性锁,不但在mount的时候需要加上-o mand,而且对要加锁的文件也需要设置相关权限。

    1              建议锁又称协同锁。对于这种类型的锁,内核只是提供加减锁以及检测是否加锁的操作,但是不提供锁的控制与协调工作。也就是说,如果应用程序对某个文件进行操作时,没有检测是否加锁或者无视加锁而直接向文件写入数据,内核是不会加以阻拦控制的。因此,建议锁,不能阻止进程对文件的操作,而只能依赖于大家自觉的去检测是否加锁然后约束自己的行为;

    2              强制锁,是OS内核的文件锁。每个对文件操作时,例如执行openreadwrite等操作时,OS内部检测该文件是否被加了强制锁,如果加锁导致这些文件操作失败。也就是内核强制应用程序来遵守游戏规则;

    2              fork产生的子进程不继承父进程所设置的锁。意味着,若一个进程得到一把锁,然后调用fork,那么对于父进程获得锁而言,子进程被视为另一个进程,对于从父进程处继承过来的任一描述符,子进程需要调用fcntl才能获得它自己的锁。这与锁的作用是一致的。锁的作用是阻止多个进程同时操作同一个文件,如果子进程继承父进程的锁,则父子进程操作同一个文件,这与锁的初衷相违背;

    3              在执行exec后,新程序可以继承原执行程序的锁。但是注意,如果对一个文件描述符设置了close-on-exec标志,那么当作为exec的一部分关闭该文件描述符时,对相应文件的所有锁都被释放啦!!

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiang1013nan/archive/2010/07/08/5721675.aspx

    默认情况下ubuntu 14.04 确实是没有打开强制锁的,使用apue自带的那个程序验证了。

  • 相关阅读:
    Linux的web服务的介绍
    Linux的DNS主从服务器部署
    K8S Calico
    K8S flannel
    K8S dashboard
    K8S RBAC
    kubernetes认证和serviceaccount
    K8S 部署 ingress-nginx (三) 启用 https
    K8S 部署 ingress-nginx (二) 部署后端为 tomcat
    K8S 部署 ingress-nginx (一) 原理及搭建
  • 原文地址:https://www.cnblogs.com/baizx/p/5138286.html
Copyright © 2020-2023  润新知