死鎖(deadlock)!!:是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種狀態時,若無外力作用,它們都將無法再向前推進
產生死鎖的原因:!!
競爭資源:系統中供多個程序共享的資源如印表機、公用佇列等,其數目不足以滿足諸程序的需要時,會引起諸程序對資源的競爭產生死鎖。
可剝奪性資源:資源分配給程序後可以被高優先順序的程序剝奪。如cpu、主存。
不可剝奪性資源:分配給程序後只能在程序用完後才釋放的資源。如磁帶機、印表機等
如,印表機r1,磁帶機r2,可供程序p1和p2共享,假定p1已占用r1,p2已占用r2,此時p2又要求r1,因得不到進入阻塞狀態,p1又要求r2,也得不到而進入阻塞狀態,產
生死鎖。
(2)程序間推進順序非法!!:程序在執行過程中,請求和釋放資源的順序不當,也同樣會導致產生死鎖。
3.產生死鎖的必要條件:!!(簡答)
(1)互斥條件(2)請求和保持條件(3)不可搶占條件(4)迴圈等待條件
4.處理死鎖的方法:
(1)預防死鎖(2)避免死鎖(3)檢測死鎖(4)解除死鎖
這四種方法從(1)到(4)對死鎖的防範程度逐漸減弱,但對應的是資源利用率的提高。
預防死鎖是通過破壞產生死鎖的四個必要條件中的乙個或幾個,以避免發生死鎖,其中互斥條件是非共享裝置必須的,不能改變,因此主要是破壞產生死鎖的後三個條件
作業系統 死鎖概述
各併發程序彼此互相等待對方所擁有的資源,且這些併發程序在得到對方的資源之前不會釋放自己所擁有的資源。從而造成大家都想得到資源而又都得不到資源,各併發程序不能繼續向前推進的狀態。飢餓 starvation 指乙個程序一直得不到資源。死鎖和飢餓都是由於程序競爭資源而引起的。飢餓一般不占有資源,死鎖程序一...
多執行緒 死鎖問題概述和使用
package cn.itcast 02 public class dielock extends thread override public void run else package cn.itcast 02 public class mylock package cn.itcast 02 同...
死鎖以及避免死鎖
目錄 一 什麼是死鎖 二 產生死鎖的四個必要條件 三 避免死鎖的方法 是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。1.互斥 某種資源一次只允...