程序管理 程序的死鎖

2021-10-10 04:29:10 字數 1581 閱讀 7851

環路等待條件又叫迴圈等待條件

迴圈等待條件,請求和保持條件,互斥條件,不可剝奪條件。

只要保證任何時刻產生死鎖的四個條件至少有乙個不成立,就可以起到預防死鎖的目的。

即允許程序同時訪問某些資源,這樣就沒有資源的互斥使用問題了。但是,有的資源是不允許被同時訪問的,像印表機等等,這是資源本身的屬性。

可以實行資源預先分配策略。只有當系統能夠滿足當前程序的全部資源需求時,才一次性地將所申請的資源全部分配給該程序,否則不分配任何資源。由於執行的程序已占有了它所需的全部資源,所以不會發生占有資源又申請資源的現象,因此不會發生死鎖。

顯然此種方法效率低下,不利於併發性,且許多程序是動態執行,難以知道它需要的所有資源。

即允許程序強行從佔有者那裡奪取某些資源。就是說,當乙個程序已占有了某些資源,它又申請新的資源,當不能立即被滿足時,須釋放所占有的全部資源,以後再重新申請。它所釋放的資源可以分配給其它程序。這就相當於該程序占有的資源被隱蔽地強佔了。這種預防死鎖的方法實現起來困難,會降低系統效能。

實行資源有序分配策略。即把資源事先分類編號,按號分配,使程序在申請,占用資源時不會形成環路。所有程序對資源的請求必須嚴格按資源序號遞增的順序提出。程序占用了小號資源,只能申請大號資源,就不會產生環路,從而預防了死鎖。

銀行家演算法是死鎖避免的著名演算法。

儲存資源的請求和分配資訊,利用某種演算法對這些資訊加以檢查,以判斷是否存在死鎖。死鎖檢測演算法主要是檢查是否有迴圈等待。

若最後所有節點可以化為孤立節點,說明不存在死鎖,否則存在死鎖。

資源分配圖資源分配矩陣(銀行家演算法)本質上思想是一樣的

程序管理之死鎖

前面兩篇部落格 1.程序同步之臨界區域問題及peterson演算法 2.程序同步之訊號量機制 pv操作 及三個經典同步問題 介紹了程序管理中程序同步的諸多問題,下面為大家詳細解讀程序管理中死鎖的問題及其解決方案。在多道程式設計環境下,多個程序可能競爭一定數量的資源。乙個程序申請資源,如果資源不可用,...

程序管理 十二 死鎖

死鎖,是指各併發程序彼此互相等待對方所擁有的資源,且這些併發程序在得到對方的資源之前不會釋放自己所擁有的資源。從而造成大家都想得到資源而又都得不到資源,各併發程序不能繼續向前推進的狀態。以生產者 消費者問題為例來看死鎖的概念。設生產者程序已獲得對緩衝區佇列的操作權,但此時緩衝佇列內所有緩衝區都是滿的...

程序的死鎖

產生死鎖的四個條件同時具備 互斥條件 不可搶占條件 占有且申請條件 迴圈等待條件 為什麼會有死鎖 若干程序競爭 有限資源,又 推進順序不當,從而構成無限迴圈等待的局面,這種狀態叫做死鎖。所謂死鎖是指多個程序迴圈等待它方占有的資源而無限期的僵持下去的局面。死鎖原因 一種原因是系統提供的資源太少,遠不能...