鎖 (電腦科學)
在電腦科學中,鎖是在執行多執行緒時用於強行限制資源訪問的同步機制,即用於在並行控制中保證對互斥要求的滿足。
一般的鎖是建議鎖(advisory lock),每個執行緒在訪問對應資源前都需取得鎖的資訊,再根據資訊決定是否可以存取。若存取對應資訊,鎖的狀態會改變為鎖定,因此其他執行緒此時不會訪問該資源,當資源結束後,會恢復鎖的狀態,允許其他執行緒的訪問。我們日常使用的基本都是建議鎖,它並不強制生效。這裡的不強制生效的意思是,如果某一個行程對一個檔案持有一把鎖之後,其他行程仍然可以直接對檔案進行各種操作的,比如open、read、write。只有當多個行程在操作檔案前都去檢查和對相關鎖進行鎖操作的時候,檔案鎖的規則才會生效。這就是一般建議鎖的行為。
有些系統有強制鎖(mandatory lock),若有未授權的執行緒想要訪問鎖定的資料,在訪問時就會產生異常。強制鎖試圖實現一套核心級的鎖操作。當有行程對某個檔案上鎖之後,其他行程即使不在操作檔案之前檢查鎖,也會在open、read或write等檔案操作時發生錯誤。核心將對有鎖的檔案在任何情況下的鎖規則都生效,這就是強制鎖的行為。由此可以理解,如果核心想要支援強制鎖,將需要在核心實現open、read、write等系統呼叫內部進行支援[1]。
相關條目
編輯
- ^ Linux的进程间通信-文件和文件锁. https://zorro.gitbooks.io/. [2022-06-26].