有關死鎖那點事兒:
死鎖的概念:
死鎖:是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。
此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。
產生死鎖的原因:
(1) 因為系統資源不足。
(2) 程序執行推進的順序不合適。
(3) 資源分配不當等。
產生死鎖的四個必要條件:
(1) 互斥條件:乙個資源每次只能被乙個程序使用。
(2) 請求與保持條件:乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。
(3) 不剝奪條件:程序已獲得的資源,在末使用完之前,不能強行剝奪。
(4) 迴圈等待條件:若干程序之間形成一種頭尾相接的迴圈等待資源關係。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之
一不滿足,就不會發生死鎖。
處理死鎖的策略:
1.忽略該問題。
2.檢測死鎖並且恢復。
3.仔細地對資源進行動態分配,以避免死鎖。
4.通過破除死鎖四個必要條件之一,來防止死鎖產生。
死鎖的預防方法:
如果有死鎖形成,則4個必要條件一定同時成立,於是,只要採用的資源分配策略能使其中之一不成立,則就能防止死鎖的發生。
(1)互斥條件
要使互斥使用資源的條件不成立,唯一的資源分配策略是允許程序共享資源。
(2)占有並等待條件
要使占有並等待資源的條件不成立,經常使用兩種資源分配策略:靜態分配資源和釋放已佔資源。
①靜態分配資源策略(也稱為預分配資源):要求每個程序在開始執行前就申請它所需要的全部資源,僅當系統能滿足程序的資源申請要求且把資源分配給程序後,該程序才能開始執行。
特點:靜態分配資源的策略實現簡單,但降低了資源的利用率。
②釋放已佔資源策略:這種分配策略是僅當程序沒有占有資源時才允許它去申請資源。如果程序已占用了某些資源而又要再申請資源,則它應先歸還所佔的資源後再申請新資源。
特點:仍會使程序處於等待資源狀態,但不會出現占有了部分資源再等待其它資源的現象。
(3)可搶奪條件
搶占式資源分配策略:要使不可搶占其它程序占有的資源不成立,可以約定如下:如果乙個程序已經占有了某些資源又要申請新資源,而新資源不能滿足必須等待時,系統可以搶奪該程序已有的資源。
(4)迴圈等待條件
按序分配資源:要使迴圈等待條件不成立可採用按序分配的資源分配策略。具體做法是把系統中所有資源排序,對每個資源確定乙個編號,規定任何乙個程序申請兩個以上的資源時,總是先申請編號最小的資源,再申請編號大的資源。
漫畫教你理解程序執行緒
我是乙個執行緒
有關死鎖的討論
死鎖 是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。產生死鎖的原因 1 因為系統資源不足。2 程序執行推進的順序不合適。3 資源分配不當。產生死鎖的條件有四個 1 互斥條件 所謂互斥就是程序在某一時間內獨佔資源。2 請求與保持條件 乙...
有關死鎖的理解
以下為個人是一些理解和讀書筆記的結合.1.什麼是死鎖 程序的併發控制不僅僅要控制若干程序的同步與互斥,確保程序之間正常通訊,還需要解決程序死鎖問題。一旦出現程序死鎖,相應的程序將無法向前推進。如果系統內的絕大多數程序或全部程序死鎖,那麼整個系統將處於癱瘓狀態,造成系統 宕機 2.引起死鎖的主要原因 ...
有關流量的那點事兒
概念性的東西,很多seo工作者都無視的,認為沒什麼實際意義,大連註冊公司認為seo高手就是從這類概念性的知識開始認真對待的,然後乙個乙個問題的解決和總結的。那麼我們今天就先從流量資料的介紹開始。1 先介紹ip pv的概念 說這兩個概念,特意新增了ip就是每天訪問 的人數,而pv是訪問你 的這些人,在...