linux 建議鎖和強制鎖

2021-09-20 01:37:36 字數 992 閱讀 5337

作為

apue 14.3

節的參考

linux

是有強制鎖的

,但是預設不開啟.想讓

linux

支援強制性鎖,不但在

mount

的時候需要加上

-o mand,

而且對要加鎖的檔案也需要設定相關許可權。1、

建議鎖又稱協同鎖。對於這種型別的鎖,核心只是提供加減鎖以及檢測是否加鎖的操作,但是不提供鎖的控制與協調工作。也就是說,如果應用程式對某個檔案進行操作時,沒有檢測是否加鎖或者無視加鎖而直接向檔案寫入資料,核心是不會加以阻攔控制的。因此,建議鎖,不能阻止程序對檔案的操作,而只能依賴於大家自覺的去檢測是否加鎖然後約束自己的行為;2、

強制鎖,是

os核心的檔案鎖。每個對檔案操作時,例如執行

open

、read

、write

等操作時,

os內部檢測該檔案是否被加了強制鎖,如果加鎖導致這些檔案操作失敗。也就是核心強制應用程式來遵守遊戲規則;2、

由fork

產生的子程序不繼承父程序所設定的鎖。意味著,若乙個程序得到一把鎖,然後呼叫

fork

,那麼對於父程序獲得鎖而言,子程序被視為另乙個程序,對於從父程序處繼承過來的任一描述符,子程序需要呼叫

fcntl

才能獲得它自己的鎖。這與鎖的作用是一致的。鎖的作用是阻止多個程序同時操作同乙個檔案,如果子程序繼承父程序的鎖,則父子程序操作同乙個檔案,這與鎖的初衷相違背;3、

在執行exec

後,新程式可以繼承原執行程式的鎖。但是注意,如果對乙個檔案描述符設定了

close-on-exec

標誌,那麼當作為

exec

的一部分關閉該檔案描述符時,對相應檔案的所有鎖都被釋放啦

!! csdn

預設情況下

ubuntu 14.04

確實是沒有開啟強制鎖的,使用

apue

自帶的那個程式驗證了。

linux 建議鎖和強制鎖

linux是有強制鎖的,但是預設不開啟.想讓linux支援強制性鎖,不但在mount的時候需要加上 o mand,而且對要加鎖的檔案也需要設定相關許可權。1 建議鎖又稱協同鎖。對於這種型別的鎖,核心只是提供加減鎖以及檢測是否加鎖的操作,但是不提供鎖的控制與協調工作。也就是說,如果應用程式對某個檔案進...

強制性鎖建議性鎖

當多個使用者共同使用,操作乙個檔案的情況,linux通常採用的方法就是給檔案上鎖,來避免共享資源產生競爭的狀態。fcntl檔案鎖有兩種型別 建議性鎖和強制性鎖 使用fcntl檔案鎖進行i o操作必須小心 程序在開始任何i o操作前如何去處理鎖,在對檔案解鎖前如何完成所有的操作,是必須考慮的。如果在設...

apue 中建議性記錄鎖和強制性記錄鎖的描述

書中描述 考慮資料庫訪問例程式。如果該庫中所有函式都以一致的方法處理記錄鎖,則稱使用這些函式訪問資料庫的任何程序集為合作程序 cooperating pro c e s s 如果這些函式是唯一的用來訪問資料庫的函式,那麼它們使用建議性鎖是可行的。但是建議性鎖並不能阻止對資料庫檔案有寫許可權的任何其他...