死鎖產生的四個必要條件
互斥條件:資源是獨佔的且排他使用,進程互斥使用資源,即任意時刻一個資源只能給一個程序使用,其他程序若申請一個資源,而該資源被另一個進程佔有時,則申請者等待直到資源被佔有者釋放。 (推薦學習:MySQL影片教學)
不可剝奪條件:進程所獲得的資源在未使用完畢之前,不被其他行程強行剝奪,而只能由獲得該資源的進程資源釋放。
請求和保持條件:進程每次申請它所需的部分資源,在申請新的資源的同時,繼續佔用已分配到的資源。
循環等待條件:在發生死鎖時必然存在一個行程等待佇列{P1,P2,…,Pn},其中P1等待P2佔有的資源,P2等待P3佔有的資源,…,Pn等待P1佔有的資源,形成一個進程等待環路,環路中每一個進程所佔有的資源同時被另一個申請,也就是前一個進程佔有後一個進程所深情地資源。
以上給出了導致死鎖的四個必要條件,只要係統發生死鎖則以上四個條件至少有一個成立。事實上循環等待的成立蘊含了前三個條件的成立,似乎沒有必要列出然而考慮這些條件對死鎖的預防是有利的,因為可以透過破壞四個條件中的任何一個來預防死鎖的發生。
死鎖預防
我們可以透過破壞死鎖產生的4個必要條件來預防死鎖,由於資源互斥是資源使用的固有特性是無法改變的。
破壞「不可剝奪」條件:一個行程不能獲得所需要的全部資源時便處於等待狀態,等待期間他佔有的資源將被隱式的釋放重新加入到系統的資源列表中,可以被其他的進程使用,而等待的進程只有重新獲得自己原有的資源以及新申請的資源才可以重新啟動,執行。
破壞」請求與保持條件「:第一種方法靜態分配即每個程序在開始執行時就申請他所需要的全部資源。第二種是動態分配即每個程序在申請所需的資源時他本身不佔用系統資源。
破壞「循環等待」條件:採用資源有序分配其基本思想是將系統中的所有資源順序編號,將緊缺的,稀少的採用較大的編號,在申請資源時必須按照編號的順序進行,一個行程只有獲得較小編號的進程才能申請較大編號的進程。
更多MySQL相關技術文章,請造訪MySQL教學欄位進行學習!
以上是產生死鎖的必要條件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具