Linux建议锁和强制锁

llinxu强制性锁默认是不开启的,想让linux支持强制性锁,不但在mount的时候需要加上-o mand,而且对

要加锁的文件也需要设置相关权限。

1.建议性锁业称为协同锁,对于这种类型的锁,内核知识提供加减锁以及检测是否加锁的操作,但是不提供锁的控制与

协同工作,也就是说,如果应用程序对某个文件进行操作时,没有检测是否加锁或者

无视加锁而直接向文件写入数据,内核是不会加以阻拦控制的。因此,建议锁,不能阻止进程对文件的操作,

而只能依赖于大家自觉的去检测是否加锁然后约束自己的行为;

2。强制锁:是OS内核的文件锁。每个对文件操作时,例如执行open、read|、write等操作时,OS内部检测该文件是否被加了强制锁

,如果加锁导致这些文件操作失败,也就是内核强制应用程序来遵守游戏规则;

3.由fork产生的子进程不继承父进程所设置的锁。意味着,若一个进程得到一把锁,然后调用fork,那么对于父进程获得锁而言,子进程被视为另一个进程,对于从父进程处继承过来的任一描述符,子进程需要调用fcntl才能获得它自己的锁。

这与锁被歧视为另一个进程,对于从父进程继承过来的任一描述符,子进程需要调用fcntl才能获得

它自己的锁。这与锁的作用是一致的,锁的作用是阻止多个进程同时操作同一个文件,如果子进程

继承父进程的锁,则父子进程操作同一个文件,这与锁的初衷相违背;

4.在执行exec后,新程序可以继承原执行程序的锁,但是注意,如果对一个文件描述符设置了close

-on-exec标志,那么当作为exec的一部分关闭该文件描述符时,对相应的文件的所有锁都被释放。

时间: 2024-10-14 16:33:21

Linux建议锁和强制锁的相关文章

linux 建议锁和强制锁

作为APUE 14.3节的参考 linux是有强制锁的,但是默认不开启.想让linux支持强制性锁,不但在mount的时候需要加上-o mand,而且对要加锁的文件也需要设置相关权限. 1.??????????????建议锁又称协同锁.对于这种类型的锁,内核只是提供加减锁以及检测是否加锁的操作,但是不提供锁的控制与协调工作.也就是说,如果应用程序对某个文件进行操作时,没有检测是否加锁或者无视加锁而直接向文件写入数据,内核是不会加以阻拦控制的.因此,建议锁,不能阻止进程对文件的操作,而只能依赖于大

操作系统文件建议锁与强制锁

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

文件锁中的“协同锁”与“强制锁”的区别

文件锁是一种文件读写机制,在任何特定的时间只允许一个进程访问一个文件.利用这种机制能够使读写单个文件的过程变得更安全. 在这篇文章中,我们将探讨Linux中不同类型的文件锁,并通过示例程序来理解它们之间的不同之处. 我们将采取以下的例子来解释为什么需要使用文件锁. 1.进程"A"打开和读取一个文件,此文件包含账户相关的一些信息. 2.进程"B"也打开了这个文件,并读取了文件中的信息. 3.现在,进程"A"更改了其副本中的一条余额记录,并将其写入文

GlusterFS强制锁

语法格式: gluster volume set <VOLNAME> locks.mandatory-locking <off / file / forced / optimal> 注: off - 为指定的卷禁用强制锁 file - 启用Linux内核风格的强制锁语义和位模式的帮助(没有充分测试) forced - 为卷检查字节范围锁定每个数据编辑操作 optimal - Combinational mode where POSIX clients can live with t

Linux文件(区域)锁函数 -- open(), fctnl()

一.什么是文件锁定 对于锁这个字,大家一定不会陌生,因为我们生活中就存在着大量的锁,它们各个方面发挥着它的作用,现在世界中的锁的功能都可归结为一句话,就是阻止某些人做某些事,例如,门锁就是阻止除了屋主之外的人进入这个房子,你进入不到这个房子,也就不能使用房子里面的东西. 而因为程序经常需要共享数据,而这通常又是通过文件来实现的,试想一个情况,A进程正在对一个文件进行写操作,而另一个程序B需要对同一个文件进行读操作,并以读取到的数据作为自己程序运行时所需要的数据,这会发生什么情况呢?进程B可能会读

Linux 同步方法剖析--内核原子,自旋锁和互斥锁

在学习 Linux® 的过程中,您也许接触过并发(concurrency).临界段(critical section)和锁定,但是如何在内核中使用这些概念呢?本文讨论了 2.6 版内核中可用的锁定机制,包括原子运算符(atomic operator).自旋锁(spinlock).读/写锁(reader/writer lock)和内核信号量(kernel semaphore). 本文还探讨了每种机制最适合应用到哪些地方,以构建安全高效的内核代码. 本文讨论了 Linux 内核中可用的大量同步或锁定

建议性锁和强制性锁

1.锁的应用场景 假设有一个文件a,它有1000个字节,一个进程A打开a文件并使用lseek定位到文件到末尾的位置,准备写50个字节,同时进程B也打开这个a文件进行和进程A同样的操作,那么文件最后的内容并不是1000+50+50个字节,而是1050,两个进程后写入的内容将会覆盖前面写的内容,那么如何解决这种问题呢? 这种情况下,文件锁应运而生. 2.建议性锁 建议性锁flock,不具备强制性.一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flo

取消强制锁屏或关闭显示器(无管理员权限的小伙伴)

一些公司出于某种原因让员工的电脑到一定时间强制锁屏或者关闭显示器,一般情况下你只要简单的百度一下你就知道怎么去解决以上问题.(这是在你有管理员权限的情况下),如果你没有管理员权限只是按照百度搜索的步骤去简单地设置Windows是没有用的.今天给大家推荐一个好办法.本人亲测.由于浏览器出于安全考虑,所以下面的代码只在ie上有效. <html><head><meta http-equiv="Content-Type" content="text/ht

Linux内核同步机制--自旋锁【转】

本文转载自:http://www.cppblog.com/aaxron/archive/2013/04/12/199386.html 自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名. 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁. 信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进