導航:首頁 > 源碼編譯 > 利用死鎖定理的演算法

利用死鎖定理的演算法

發布時間:2022-08-20 21:54:45

A. 考試求給力

1、操作系統的目標:(1)有效性(2)方便性(3)可擴充性(4)開放性。
2、操作系統的作用:
(1)作為用戶與計算機硬體系統之間的介面:①命令方式;②系統調用方式;③圖形、窗口方式(命令方式的一種);
(2)OS是計算機系統資源的管理者;
(3)OS實現對計算機資源的抽象。
3、單道批處理系統的特徵:① 自動性;②順序性;③單道性。
4、多道批處理系統的優缺點:
(1)優點: ①資源利用率高:CPU和內存利用率較高;
②作業吞吐量大:單位時間內完成的工作總量大;
(2)缺點:①用戶交互性差:整個作業完成後或中間出錯時,才與用戶交互,不利於調試和修改;
②作業平均周轉時間長:短作業的周轉時間顯著增長;
5、分時系統的概念:「分時」的含義分時是指多個用戶分享使用同一台計算機。
分時系統指一台主機上連接了多個帶有顯示器和鍵盤的終端,同時允許多個用戶共享主機中的資源,各個用戶都可通過自己的終端以交互方式使用計算機。
6、分時系統的特徵:(1)多路性(2)獨立性(3)及時性(4)人機交互性好
7、實時系統的概念:系統能及時響應外部事件的請求,在規定時間內完成對該事件的處理。
8、操作系統的基本特徵:
(1)並發性;(2)共享性;(3)虛擬技術;(4)非同步性
9、進程與程序的區別:(從概念、並發執行出現的問題進行比較)
(1)程序的順序執行:僅當前一操作(程序段)執行完後,才能執行後繼操作。
程序順序執行時的特徵:①順序性;②封閉性; ③ 可再現性;
程序並發執行時的特徵:①間斷性;②失去封閉性;③不可再現性 ;
(2)進程的特徵和定義:①結構特徵;②動態性 ;③並發性;④獨立性;⑤非同步性;
定義:進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位。
11、進程的三種基本狀態 :①就緒(Ready)狀態 ;②執行狀態;③ 阻塞狀態 ;
13、進程式控制制塊的作用:進程式控制制塊的作用是使一個在多道程序環境下不能獨立運行的程序(含數據),成為一個能獨立運行的基本單位,一個能與其它進程並發執行的進程。或者說,OS是根據PCB來對並發執行的進程進行控制和管理的。
14、引起創建進程的事件:(1)用戶登錄;(2) 作業調度;(3) 提供服務;(4) 應用請求。
15、進程的創建: (1)申請空白PCB; (2) 為新進程分配資源; (3) 初始化進程式控制制塊;
(4)將新進程插入就緒隊列,如果進程就緒隊列能夠接納新進程,便將新進程插入就緒隊列。
16、進程的終止(稍看看就行):
(1) 正常結束;
(2)異常結束:①越界錯誤。這是指程序所訪問的存儲區,已越出該進程的區域;
② 保護錯。進程試圖去訪問一個不允許訪問的資源或文件,或者以不適當的方式進行訪問,例如,進程試圖去寫一個只讀文件;
③ 非法指令。程序試圖去執行一條不存在的指令。出現該錯誤的原因,可能是程序錯誤地轉移到數據區,把數據當成了指令;
④ 特權指令錯。用戶進程試圖去執行一條只允許OS執行的指令;
(3)外界干預:① 操作員或操作系統干預;② 父進程請求;③ 父進程終止。
17、引起進程阻塞和喚醒的事件: (1)請求系統服務;(2) 啟動某種操作;
(3)新數據尚未到達;(4)無新工作可做。
臨界資源的概念:消費者進程可從一個緩沖區中取走產品去消費。盡管所有的生產者進程和消費者進程都是以非同步方式運行的,但它們之間必須保持同步,即不允許消費者進程到一個空緩沖區去取產品;也不允許生產者進程向一個已裝滿產品且尚未被取走的緩沖區中投放產品。
臨界區的概念:人們把在每個進程中訪問臨界資源的那段代碼稱為臨界區。
22、管道通信:所謂「管道」,是指用於連接一個讀進程和一個寫進程以實現他們之間通信的一個共享文件,又名pipe文件。向管道(共享文件)提供輸入的發送進程(即寫進程), 以字元流形式將大量的數據送入管道;而接受管道輸出的接收進程(即讀進程),則從管道中接收(讀)數據。為了協調雙方的通信,管道機制必須提供以下三方面的協調能力:
① 互斥,即當一個進程正在對pipe執行讀/寫操作時,其它(另一)進程必須等待。
② 同步,指當寫(輸入)進程把一定數量(如4 KB)的數據寫入pipe,便去睡眠等待, 直到讀(輸出)進程取走數據後,再把他喚醒。當讀進程讀一空pipe時,也應睡眠等待,直至寫進程將數據寫入管道後,才將之喚醒。
③ 確定對方是否存在,只有確定了對方已存在時,才能進行通信。
25、處理機調度的層次(通看、理解每種調度的原理)P84-88
(1)高級調度 (作業調度、長程調度、接納調度)
(2)低級調度(進程調度,短程調度):主要是決定就緒隊列中的哪個進程應獲得處理機,然後由分派程序(Dispatcher)分派處理機。
①低級調度的功能:保存處理機現場信息/按某種演算法選取進程/把處理機分配給進程
②進程調度的三個進步機制 排隊器/分派器/上下文切換機制:兩對切換
③進程調度方式
(3)中級調度(中程):為提高系統吞吐量和內存利用率而引入的一 內--外存對換功能(換出時,進程為掛起或就緒駐外存狀態)
三級調度的運行頻率
 低>中>高。
27、周轉時間:是指從作業被提交給系統開始,到作業完成為止的這段時間間隔(稱為作業周轉時間)。
28、響應時間:是指從用戶通過鍵盤提交一個請求開始,直至系統首次產生響應為止的時間,或者說,直到屏幕上顯示出結果為止的一段時間間隔。
29、面向系統的准則:(1)吞吐量高(特別是批處理):單位時間完成作業數(2)處理機利用率好:(因CPU貴,特別是大中型多用戶系統)(3)各類資源的平衡利用。
(3)高響應比優先調度演算法:
 響應比Rp=(Tw+Ts)/Ts
 特點:
 (1)短作業RP大。
 (2)Ts(要求服務時間)相同的進程間相當於FCFS。
 (3)長作業等待一段時間仍能得到服務。
(4)基於時間片的輪轉調度演算法:時間片輪轉
32、實時調度演算法的分類:
(1)非槍占式調度演算法:①非槍占式輪轉調度演算法;②非槍占式優先調度演算法
(2)槍占式調度演算法
33、產生死鎖的原因和必要條件(重點)P103-106
(1)死鎖:是指多個進程在運行過程中因爭奪資源而造成的一種僵局,當進程處於這種僵持狀態時,若無外力作用,它們將無法再向前推進。
(2)產生死鎖的原因:
----競爭資源引起死鎖。
1)可剝奪(CPU、內存)和非剝奪性(列印機,磁帶機)資源
2)競爭非剝奪性資源——可造成死鎖
3)競爭臨時性資源:臨時性資源是指由一個進程產生,被另一個進程使用一段時間後便無用的資源。
-----進程推進順序不當引起死鎖。
(3)產生死鎖的必要條件:
①互斥條件(資源的臨界性)
②請求和保持條件
③不剝奪條件
④環路等待條件
(4)處理死鎖的基本方法
①預防死鎖: 破壞4個條件之一:有效,使資源利用率低。
②避免死鎖:防止進入不安全態。
③檢測死鎖:檢測到死鎖再清除。
④解除死鎖:與「檢測」配套。
34、預防死鎖的方法(重點)P107-111
死鎖預防:
(1)互斥條件是資源固有屬性,不能避免。
(2)摒棄請求和保持條件:全分配,全釋放(AND同步p52)
優點:簡單且安全 缺點: 1)資源嚴重浪費2)延遲進程運行
(3)摒棄「不剝奪」條件
增加系統開銷,且進程前段工作可能失效。
(4)摒棄「環路等待」條件:有序資源分配法:為資源編號,申請時需按編號進行。
缺點:1)新增資源不便,(原序號已排定);2)資源與進程使用順序不同造成浪費;
3)用戶不自由
死鎖定理:死鎖狀態的充分條件,資源分配圖不可完全簡化
36、死鎖的解除
(1)剝奪資源;(2) 撤消進程。

40、連續分配方式:
(1)單一連續分配
• 用於單用戶,單任務中
(2)分區式分配
• 固定式
• 動態分區分配
• 可重定位分區分配
(3)可重定位分區分配(概念、了解)
動態重定位的引入:連續式分配中,總量大於作業大小的多個小分區不能容納作業。
41、對換:是指把內存中暫時不能運行的進程或者暫時不用的程序和數據調出到外存上,以便騰出足夠的內存空間,再把已具備運行條件的進程或進程所需要的程序和數據調入內存。對換是提高內存利用率的有效措施。
44、虛擬存儲器的基本概念、特徵(理解)P141-144
(2)特徵:
①多次性:局部裝入,多次裝入。
②對換性:換進、換出
③虛擬性:從邏輯上擴充內存
47、請求分段存儲管理方式 P155-156
(1)段表機制
(2)缺段中斷機構(了解):段不定長,處理起來比缺頁中斷復雜。
(3)地址變換機構

I/O設備的類型
----按設備的共享屬性分:(掌握各特徵)P161
• 獨占設備:如臨界資源
• 共享設備:磁碟
• 虛擬設備:如本身因有屬性為獨占,但通過虛擬技術將其變換為幾個邏輯設備。

55、I/O軟體的設計目標和原則
1)與具體設備無關
2)統一命名 3)對錯誤的處理 4)緩沖技術 5)設備的分配和釋放 6)I/O控制方式
57、設備獨立性:即設備無關性,指應用程序獨立於具體使用的物理設備。
58、設備分配時應考慮的因素:P187
(1)設備的固有屬性(掌握):①獨享設備;② 共享設備;③ 虛擬設備。
(2)設備分配演算法
(3)設備分配中的安全性
59、SPOOLING技術 (掌握概念、原理、組成、特點)P190-191
SPOOLing系統的組成:
1)輸入#和輸出#:
– 在磁碟上開辟的2個大存儲空間,模擬輸入和輸出設備。
2)輸入buf和輸出buf(內存中)
– 輸入設備——輸入buf——輸入#——用戶區(1)
– 用戶區——輸出#——輸出buf——設備(2)
3)輸入Spi和輸出SPo進程。
– 分別控制(1),(2)的動作。
– SPi相當於離線輸入控制器。
– SPo相當於離線輸出控制器。
(3)原理
(4)SPOOLing的特點
1)提高I/O速度:
– 對低速設備操作—>變為對輸入/出#操作。
2)將獨占設備改造為共享設備
– 分配設備的實質是分配輸入/出#
3)實現了虛擬設備功能
60、 磁碟的類型:1)固定頭磁碟:(每個磁軌上有一個磁頭,快)
2)移動頭磁碟:每個盤面僅有一個磁頭,慢
61、磁碟訪問時間:(zhaNGWOrd)
1)尋道時間:TS=m*n+s
m:常量,n:磁軌數,s:磁臂啟動時間。
2)旋轉延時間Tr:
指定扇區旋轉到磁頭下所需時間。
設每秒r轉,則Tr=1/2r(均值)
3)數據傳輸時間Tt=b/rN
b:讀寫位元組數
N:每道上的位元組數
訪問時間:Ta=Ts+1/2r+b/rN
65、邏輯結構類型:(掌握原理)
(1)順序文件:通常是定長記錄,(為何,因變長採用此方式查詢速度慢)
(2)索引文件:
(3)索引順序文件:順序組織多個組,每組記錄中的第一個記錄設置一索引項。
66、連續分配(磁帶,磁碟都可採用)的優缺點:
– 優點:
• 因磁頭移動距離小,順序訪問容易且速度快.
– 缺點:
• 要求連續空間,一段時間後需整理磁碟以消除外部碎片。
• 必須事先知道長度,文件不易動態增長和刪除。

1. 進程的基本的特徵有 並發 、 動態 獨立、非同步和結構特徵。
2. 處理死鎖的方法有預防死鎖、 避免死鎖 、 檢測死鎖 和解除死鎖
3. 在文件系統中,對目錄管理的要求有 實現「 按名存取」 、 文件共享 允許文件重名和提高對目錄的檢索速度。
4. 文件的外存分配方式主要有 連續分配 、 鏈式分配 和 索引分配 三種方式。
5. 為實現設備獨立性,在系統中必須設置邏輯設備表,通常它包括 邏輯設備名 、 物理設備名 和 設備驅動程序入口地址 三項。
6. 處理機調度可分為三級,它們是____高級____、___中級_____和__低級_________。

1. ( 並行性 )是指在同一時間間隔內發生兩個或多個事件,而( 並發性 )是指在同一時刻內發生兩個或多個事件。
2. 對調度演算法進行評價時,可以從(作業平均周轉時間)和(作業平均帶權周轉時間)等方面考慮。
3. (線程)是程序的一次相對獨立的運行過程,現代OS中,它也是系統調度的最小單位。它沒有資源,是依賴於進程存在的。
4. 一般,把系統態下執行的某些具有持定功能的程序段稱為(原語)。
5. 產生死鎖的必要條件:(互斥條件)、(不剝奪條件)、請求和保持條件、環路條件。
6. 在系統運行過程中,對進程發出的每一個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源,若分配後系統可能發生死鎖,則不予分配,否則予以分配。這就是(死鎖避免)。
7. (抖動)是指當給進程分配的內存小於所要求的工作區時,由於內存外存之間交換頻繁,訪問外存的時間和輸入輸出處理時間大大增加,反而造成CPU因等待數據而空轉,使得整個系統性能大大下降。
8. (通道)是一個獨立與CPU的專管輸入/輸出控制的機構,它控制設備與內存直接進行數據交換。它有自己的通道指令,這些指令受CPU啟動,並在操作結束時向CPU發中斷信號。
9. 目錄管理的要求: (1)(實現「按名存取」),(2)(提高目錄檢索速),(3)文件共享,(4)允許文件重名
10. 文件系統中,以索引結點為目錄項比直接以FCB為目錄項要減小目錄文件的長度,若一個FCB為64B,而一個索引結點為16B時,若目錄文件以索引結點為目錄項,則比以FCB為目錄項要減小(4倍)。
11. 磁碟容錯技術中,(磁碟鏡像)是磁碟驅動器故障的容錯,而(磁碟雙工)是磁碟控制器或控制器與CPU之間的通道故障的容錯。
12. 在計算機網路中,為使在個計算設備之間能正確地傳送信息,必須有一組關於信息的傳輸順序、信息格式和信息內容等的約定或規則。人們把這種規定或規則稱為(網路協議)。
13. 客戶/伺服器模式的優點是(數據分布存儲)和(數據分布處理)。
14. 系統安全性包括(物理安全)、(邏輯安全)和安全管理等三個方面的內容。
15. 為了使用戶能夠對自己所運行的進程進行控制,UNIX系統向用戶提供了一組用於對進程進行控制的系統調用,包括用於創建一個新進程的(fork)系統調用;用於實現進程自我終止的(exit)系統調用。
周轉時間指的是從作業被提交給系統開始,到作業完成為止的這段時間間隔。
2. PCB 是保存進程狀態,控制進程轉換的標志,也是進程存在的惟一標志。
3.產生死鎖的四個必要條件是請求與保持、 環路等待、互斥和不剝奪。
4.置換演算法是在主存中沒有空閑塊 時被調用的,它的目的是選出一個被 淘汰 的頁面。
5.使用共享文件實現進程通信的方式被稱為管道通信 。
6.邏輯設備表的主要功能是實現設備獨立性 和實現設備分配的靈活性 。
7.並發和共享 是操作系統的兩個最基本的特徵,兩者之間互為存在條件。
8.系統中各進程之間邏輯上的相互制約關系被稱為進程同步 。
9.在段式存儲管理系統中,段保護措施常有越界保護 和存取控制兩種。
10.根據系統管理員或用戶所規定的存取控制屬性,文件可分為只執行文件、只讀文件和讀寫文件。
11.從用戶觀點出發所看到的文件組織形式稱為邏輯結構 。
12.設備按共享屬性分為: 獨占設備、共享設備、虛擬設備 。
13.在文件系統中必須為每個文件建立一個文件控制塊,其中包含有文件名和文件的物理地址
等信息。
14.文件的二級目錄結構是由主文件目錄 和用戶文件目錄組成的。
15.分時系統與實時系統的主要區別是可靠性

1.響應時間指的是是從用戶通過鍵盤提交一個請求開始,直至系統首次響應為止的時間。
2.將進程的PCB 鏈接在一起就形成了進程隊列。
4.虛擬存儲器是指具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一個存儲系統。
5.發送進程利用OS 提供的發送命令,直接將格式化的消息發送給目標進程的通信方式稱
為直接通信。
6.邏輯設備表的主要功能是實現設備獨立性 和實現設備分配靈活性。
7.並發 和共享是操作系統的兩個最基本的特徵,兩者之間互為存在條件。
8.有m 個進程共享同一臨界資源,若使用信號量機制實現對臨界資源的互斥訪問,則信
號量值的變化范圍是[-m+1,1]。
9.在段式存儲管理系統中,段保護措施常有越界保護 和存取控制 兩種。
10.根據文件的用途的不同,相將文件分為系統 、用戶文件和 庫文件 。
11.從實際出發,文件在外厚上存放組織形式稱為文件的物理結構 。
12.設備按信息交換單位分為:字元設備、存取控制。
13.文件目錄是文件控制塊的有序的集合。
14.文件的二級目錄結構是由主文件目錄和 用戶文件目錄 組成的。
15.實時系統具務的兩個基本特徵是及時性、高可靠性 。

B. 死鎖定理是用於處理死鎖的哪一種方法

死鎖定理用於檢測死鎖。
系統處於死鎖的充分條件是:當且僅當此狀態的進程-資源分配圖(是對當前狀態的圖形化描述)是不可完全簡化的,這一充分條件稱為死鎖定理。由定理可知,這是一種檢測方法。

C. 什麼是死鎖,怎樣引入死鎖

1.死鎖:如果一組進程中的每一個進程都在等待僅由該組進程中的其它進程才能引發的事件,那麼該組進程是死鎖的。
2.產生死鎖的原因:
(1)競爭不可搶占性資源。
(2)競爭可消耗資源。
當系統中供多個進程共享的資源如列印機,公用隊列等,其數目不足以滿足諸進程的需要時,會引起諸進程對資源的競爭而產生死鎖。12

(3)進程推進順序不當。
進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致產生進程死鎖。12

如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可能產生死鎖。
一個線程也可引起死鎖。12

3.產生死鎖的四個必要條件:
(1) 互斥條件:一個資源每次只能被一個進程使用。
(2) 請求和保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3) 不可搶占條件:進程已獲得的資源,在末使用完之前,不能強行剝奪,只能在進程使用完時由自己釋放。
(4) 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。因此可以寫下如下的預防死鎖的方法。
4.避免死鎖的方法:
(1)破壞「互斥」條件:就是在系統里取消互斥。若資源不被一個進程獨占使用,那麼死鎖是肯定不會發生的。但一般「互斥」條件是無法破壞的。因此,在死鎖預防里主要是破壞其他三個必要條件,而不去涉及破壞「互斥」條件。
(2)破壞「請求和保持」條件:在系統中不允許進程在已獲得某種資源的情況下,申請其他資源。即要想出一個辦法,阻止進程在持有資源的同時申請其他資源。
方法一:所有進程在運行之前,必須一次性地申請在整個運行過程中所需的全部資源。這樣,該進程在整個運行期間,便不會再提出資源請求,從而破壞了「請求」條件。系統在分配資源時,只要有一種資源不能滿足進程的要求,即使其它所需的各資源都空閑也不分配給該進程,而讓該進程等待。由於該進程在等待期間未佔有任何資源,於是破壞了「保持」條件。
該方法優點:簡單、易行且安全。
缺點:a.資源被嚴重浪費,嚴重惡化了資源的利用率。
b.使進程經常會發生飢餓現象。12

方法二:要求每個進程提出新的資源申請前,釋放它所佔有的資源。這樣,一個進程在需要資源S時,須先把它先前佔有的資源R釋放掉,然後才能提出對S的申請,即使它可能很快又要用到資源R。
(3)破壞「不可搶占」條件:允許對資源實行搶奪。
方法一:如果佔有某些資源的一個進程進行進一步資源請求被拒絕,則該進程必須釋放它最初佔有的資源,如果有必要,可再次請求這些資源和另外的資源。
方法二:如果一個進程請求當前被另一個進程佔有的一個資源,則操作系統可以搶占另一個進程,要求它釋放資源。只有在任意兩個進程的優先順序都不相同的條件下,該方法才能預防死鎖。
(4)破壞「循環等待」條件:將系統中的所有資源統一編號,進程可在任何時刻提出資源申請,但所有申請必須按照資源的編號順序(升序)提出。這樣做就能保證系統不出現死鎖。
利用銀行家演算法避免死鎖:
銀行家演算法:
設進程i提出請求Request[j],則銀行家演算法按如下規則進行判斷。
(1) 如果Request[j]≤Need[i,j],則轉向(2),否則認為出錯,因為它所需要的資源數已超過它所宣布的最大值。
(2) 如果Request[j]≤Available[j],則轉向(3);否則表示尚無足夠資源,Pi需等待。
(3) 假設進程i的申請已獲批准,於是修改系統狀態:
Available[j]=Available[j]-Request[i]
Allocation[i,j]=Allocation[i,j]+Request[j]
Need[i,j]=Need[i,j]-Request[j]
(4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。
安全性演算法:
(1) 設置兩個工作向量Work=Available;Finish[i]=False
(2) 從進程集合中找到一個滿足下述條件的進程,
Finish [i]=False;

Need[i,j]≤Work[j];

如找到,執行(3);否則,執行(4)123456

(3) 設進程獲得資源,可順利執行,直至完成,從而釋放資源。
Work[j]=Work[j]+Allocation[i,j];

Finish[i]=True;

Go to step 2;123456

(4) 如所有的進程Finish[i]=true,則表示安全;否則系統不安全。
5.死鎖的解除:
一旦檢測出死鎖,就應立即釆取相應的措施,以解除死鎖。死鎖解除的主要兩種方法:
1) 搶占資源。從一個或多個進程中搶占足夠數量的資源,分配給死鎖進程,以解除死鎖狀態。
2) 終止(或撤銷)進程。終止(或撤銷)系統中的一個或多個死鎖進程,直至打破循環環路,使系統從死鎖狀態解脫出來。
總結:
一般情況下,如果同一個線程先後兩次調用lock,在第二次調用時,由於鎖已經被佔用,該線程會掛起等待別的線程釋放鎖,然而鎖正是被自己佔用著的,該線程又被掛起而沒有機會釋放鎖,因此就永遠處於掛起等待狀態了,這叫做死鎖(Deadlock)。另⼀一種典型的死鎖情形是這樣:線程A獲得了鎖1,線程B獲得了鎖2,這時線程A調⽤用lock試圖獲得鎖2,結果是需要掛起等待線程B釋放鎖2,而這時線程B也調⽤用lock試圖獲得鎖1,結果是需要掛起等待線程A釋放鎖1,於是線程A和B都永遠處於掛起狀態了。12

注意:
寫程序時應該盡量避免同時獲得多個鎖,如果一定有必要這么做,則有一個原則:如果所有線程在需要多個鎖時都按相同的先後順序(常見的是按Mutex變數的地址順序)獲得鎖,則不會出現死鎖。比如一個程序中用到鎖1、鎖2、鎖3,它們所對應的Mutex變數的地址是鎖1<鎖2<鎖3,那麼所有線程在需要同時獲得2個或3個鎖時都應該按鎖1、鎖2、鎖3的順序獲得。如果要為所有的鎖確定一個先後順序比較困難,則應pthread_mutex_trylock調用代替pthread_mutex_lock 調用,以免死鎖。

D. 什麼是死鎖及死鎖的必要條件和解決方法

(1)
互斥條件:一個資源每次只能被一個進程使用。
(2)
請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3)
不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4)
循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。

E. 什麼是死鎖定理

「S為死鎖狀態的充分必要條件是:當且僅當S狀態的資源分配圖是不可完全簡化的。該充分條件被稱為死鎖定理」——《計算機操作系統》

F. 什麼是死鎖如何解決死鎖問題

死鎖的條件 互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。 請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。 非剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。 循環等待條件(Circular wait):系統中若干進程組成環路,改環路中每個進程都在等待相鄰進程正佔用的資源。 處理死鎖的策略 1.忽略該問題。例如鴕鳥演算法,該演算法可以應用在極少發生死鎖的的情況下。為什麼叫鴕鳥演算法呢,因為傳說中鴕鳥看到危險就把頭埋在地底下,可能鴕鳥覺得看不到危險也就沒危險了吧。跟掩耳盜鈴有點像。 2.檢測死鎖並且恢復。 3.仔細地對資源進行動態分配,以避免死鎖。 4.通過破除死鎖四個必要條件之一,來防止死鎖產生。

G. 死鎖的必要條件,怎麼處理死鎖

什麼是死鎖?如果一個進程集合裡面的每個進程都在等待只能由這個集合中的其他一個進程(包括他自身)才能引發的事件,這種情況就是死鎖。這個定義可能有點拗口,一個最簡單的例子就是有資源a和資源b,都是不可剝奪資源,現在進程c已經申請了資源a,進程d也申請了資源b,進程c接下來的操作需要用到資源b,而進程d恰好也在申請資源a,那麼就引發了死鎖。這個肯定每個人都看過了。然後套用回去定義:如果一個進程集合裡面(進程c和進程d)的每個進程(進程c和進程d)都在等待只能由這個集合中的其他一個進程(對於進程c,他在等進程d;對於進程d,他在等進程c)才能引發的事件(釋放相應資源)。這里的資源包括了軟的資源(代碼塊)和硬的資源(例如掃描儀)。資源一般可以分兩種:可剝奪資源(preemptable)和不可剝奪資源(nonpreemptable)。一般來說對於由可剝奪資源引起的死鎖可以由系統的重新分配資源來解決,所以一般來說大家說的死鎖都是由於不可剝奪資源所引起的。死鎖的四個必要條件互斥條件(mutual
exclusion):資源不能被共享,只能由一個進程使用。
請求與保持條件(hold
and
wait):已經得到資源的進程可以再次申請新的資源。
非剝奪條件(no
pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
2.檢測死鎖並且恢復。
3.仔細地對資源進行動態分配,以避免死鎖。
4.通過破除死鎖四個必要條件之一,來防止死鎖產生。

閱讀全文

與利用死鎖定理的演算法相關的資料

熱點內容
windows下編譯python 瀏覽:607
linux藍牙連接 瀏覽:898
安卓qq郵箱格式怎麼寫 瀏覽:429
如何電信租用伺服器嗎 瀏覽:188
編程中計算根號的思維 瀏覽:181
可愛的程序員16集背景音樂 瀏覽:446
軟體代碼內容轉換加密 瀏覽:795
什麼app看電視不要錢的 瀏覽:16
烏班圖怎麼安裝c語言編譯器 瀏覽:278
plc通訊塊編程 瀏覽:923
我的世界伺服器怎麼清地皮 瀏覽:421
ftp伺服器如何批量改名 瀏覽:314
網易我的世界伺服器成員如何傳送 瀏覽:268
公司雲伺服器遠程訪問 瀏覽:633
法哲學pdf 瀏覽:637
清大閱讀app是什麼 瀏覽:447
怎麼用qq瀏覽器整體解壓文件 瀏覽:586
肺組織壓縮15 瀏覽:270
安卓手機為什麼換電話卡沒反應 瀏覽:797
諸子集成pdf 瀏覽:340