文件鎖定

专业IT术语

文件鎖定是一種在特定時間只允許一個用戶或進程擁有對特定計算機文件訪問權限的機制。[1]計算機系統實現該特性以避免競爭讀寫。以下是競爭寫的一個例子:

  1. 進程A從一個包含顧客賬戶信息(包括其賬戶結餘和電話號碼)的文件中讀取一條記錄。
  2. 進程B從同一個文件中讀取同一條記錄並有一份自己的拷貝。
  3. 進程A在它的那份記錄中修改賬戶結餘並將記錄寫回文件。
  4. 進程B自己的記錄中仍然包含原有的賬戶結餘數據,它在自己的記錄中也修改了它並寫回文件。
  5. 進程B的寫回操作導致進程A的更改丟失。

絕大多數操作系統支持記錄鎖定英語record locking的概念,也就是任何文件中單個記錄可以被鎖定,從而增加並發更新進程的數量。數據庫維護需要鎖定文件,從而它有權訪問數據庫的整個物理文件。雖然這確實阻止其他進程訪問此文件,但減少每個鎖的經常性開銷比整體鎖定文件中很大數量的區域更高效。

文件鎖定的不合理用法可能產生差的性能或死鎖。文件鎖定可能也指用戶使用如Windows安全、NTFS訪問權限或第三方的文件鎖定軟件提供文件額外安全性的過程。

Microsoft Windows

Microsoft Windows使用三種不同的機制管理對共享文件的訪問:

  1. 應用程序對整個文件的共享訪問方式,包括讀、寫、刪除。[2]
  2. 對單個文件的字節範圍鎖定[3]
  3. Windows文件系統不允許執行已經按照寫或刪除方式打開的文件

Windows繼承了MS-DOS 3.3引入的文件共享訪問控制。如果打開文件時不指定共享訪問方式,缺省禁止其他進程按照讀、寫、刪除來打開該文件(但讀取文件屬性是允許的)。

操作系統默認鎖定正在運行的可執行程序,阻止其他程序修改或刪除它。但允許改名、複製。


參考文獻

  1. ^ Linux数据管理——文件锁定. 2013-08-29 [2016-09-29]. (原始內容存檔於2019-12-07) (中文). 這是文件的一種安全的更新方式,當一個程序正在對文件進行寫操作時,文件就會進入一種暫時狀態,在這個狀態下,如果另一個程序嘗試讀這個文件,它就會自動停下來等待這個狀態結束 
  2. ^ windows-sdk-content. CreateFileW function. docs.microsoft.com. [2018-11-07]. (原始內容存檔於2019-04-19) (美國英語). 
  3. ^ windows-sdk-content. LockFileEx function. docs.microsoft.com. [2018-11-07]. (原始內容存檔於2019-06-21) (美國英語).