化簡資源分配圖判斷是否發生死鎖

目錄

1.資源分配圖的概念

2.判斷是否發生死鎖


1.資源分配圖的概念

資源分配圖表示進程和資源之間的請求關系,例如下圖:

P代表進程,R代表資源,R方框中 有幾個圓球就表示有幾個這種資源,在圖中,R1指向P1,表示R1已經分配了一個資源給P1了,R1指向P1的邊叫做分配邊(資源-->進程);P1指向R2,表示P1還需要一個R2才能執行,P1指向R2的邊叫做請求邊(進程-->資源)。

阻塞節點:某進程中所請求的資源已全部分配完畢,無法獲取所需資源,則該進程被阻塞了無法繼續執行,如上圖P2。

非阻塞節點:某進程所請求的資源還有剩余,可以分配給該進程繼續運行。如上圖中P1,P3。 當一個進程資源圖中所有進程都是阻塞節點時,即進入死鎖狀態

說明一下:

上面的圖表示,系統分配一個 R1 資源給進程 p2,然后又分配一個 R1類資源給進程 p1,
最后進程 p1 收到一個 R1 類資源后又繼續申請1個R1類資源,此時,還剩下一個 R1類資源可以分配給 P1,但還沒分配給 P1。(注意:圖中P1的申請是還沒得到響應的,不要以為 R1 指向P1的那個箭頭是響應 P1的申請,而分配了資源給 P1)。“右箭頭”跟“左箭頭”是沒任何關系的。

也就是先分配,再看進程的請求是否能夠被滿足。如果某個進程的請求能被滿足,那么這個進程就是非阻塞節點,不能被滿足,就是阻塞節點。

2.判斷是否發生死鎖

判斷下圖是否存在死鎖:

1.先看資源,r1分配了一個資源給p1,分配了一個資源給p2,還剩1個資源;r2分配了1個資源給p2,還剩1個資源。

2.再看p1進程,p1向r2申請了一個資源,r2剛好剩余一個資源,p1是非阻塞節點。

3.再看p2進程,p2向r1申請1個資源,r1剛好剩余一個資源,p2是非阻塞節點。

所以該圖不存在死鎖。

再看下面這個例子:

1.對于r1,分配了2個資源,剩余1個資源。對于r2,分配了1個資源,剩余2個資源。

2.先看p1,p1向r1申請了1個資源,r1剛好剩余1個資源,向r2申請1個資源,而r2剩余2個資源,綽綽有余。所以p1是非阻塞節點。p1進程完成后,釋放資源。

3.此時r1剩余2個資源,r2剩余2個資源,p2可以申請到r1的1個資源,p2非阻塞。

當所有的點都處于“孤立狀態”,那么這個進程不存在死鎖。

若資源分配圖如下圖所示,也就是對于p2而言,只有分配邊,沒有請求邊:

那么可以直接“孤立”這一進程:

總結:

1.先將分配給進程,再看進程的請求(順序一定不能亂)。

2.對于較復雜的資源分配圖,當一個進程是非阻塞節點時,可以想將它“孤立”起來。

3.進程請求資源才可能發生死鎖,所以只有分配邊沒有請求邊的進程節點可以直接“孤立”起來。

利用上面的總結,做一下題吧:

1.下面的進程資源圖是()

1.R1無剩余資源,R2無剩余資源,R3剩余1個資源。

2.由于R1,R2都沒有資源分配了,突破口就來自R3,先看連接R3的請求邊:

P3向R3請求1個資源,R3剛好剩余1個資源,P3是非阻塞節點。P3“孤立”起來。

3.重新計算一下剩余資源,R1剩余1個資源,R2剩余1個資源,首先看P1,P1向R2申請了1個資源,可以被滿足。“孤立”p1。

4.剩下的資源對P2而言綽綽有余了,所以P2也不會阻塞,所以這個資源分配圖不存在死鎖。

2.系統中有3個不同的臨界資源R1,R2,R3,被4個進程p1,p2,p3,p4共享。各進程對資源的需求為:p1申請R1和R2;p2申請R2和R3,p3申請R1和R3,p4申請R2。若系統出現死鎖,則處于死鎖狀態的進程數至少是()

A. 1 ????????B. 2 ????????C. 3 ????????D. 4

答案:C

解答:

1.根據題目,畫出的資源分配圖如下:

2.P4不影響系統最終狀態,只要給它分配資源,完成后就會釋放資源。所以,不管給不給P4分配資源,最終三類資源都是在P1,P2,P3之間進行分配。簡化資源分配圖:

第一種情況:形成循環

由于題目中沒有給出各類資源的具體個數,P2申請1個R2資源和1個R3資源,這里我們假設R3給到了P2一個資源,同理,R2給P1一個資源,R1給了P3一個資源,這樣就形成了循環,發生死鎖。三個進程都無法進行,因為只要有一個進程申請的資源得到滿足,完事后就會釋放相鄰的資源。循環狀態就被破壞了,沒有循環,一定不會發生死鎖。

補充:死鎖的必要條件

1.互斥? ? ? ? 2.不可剝奪? ? ? ? 3.請求和保存? ? ? ? 4.循環

第二種情況:沒有形成循環

若沒有形成循環,可以完全化簡成孤立狀態的,即不會發生死鎖。

所以若資源分配圖死鎖,那么至少P1,P2,P3進程處于死鎖。若沒有事先給P4分配進程,那么處于死鎖狀態的進程為P1,P2,P3,P4。

3.假定某計算機系統有R1設備3臺,R2設備4臺,它們被P1、P2、P3和P4這4個進程互斥共享,且已知這4個進程均以下面所示的順序使用現有設備:

一>申請R1一>申請R2一>申請R1一>釋放R1一>釋放R2一>釋放R1

請問系統運行過程中是否可能產生死鎖?如果有可能的話,請舉出一種情況,并畫出表示該死鎖狀態的資源分配圖。

首先p1,p2,p3,p4都申請r1資源,但是r1只有3個資源:

所以這里假設只有p1,p2,p3被分配到了資源:

由于p4沒有被分配到r1資源,所以接下來的步驟也不能完成。接下來p1,p2,p3繼續申請r2資源,由于r2有4個資源,所以p1,p2,p3也能被分配到r2資源:

接下來p1,p2,p3會繼續申請r1資源,由于r1已經沒有資源可以分配了,進而發生死鎖。

4.系統中有5個資源(R1~R5),現有進程p1依次申請R1, R5,R3;p2依次申請 R3,R4,R2;p3依次申請 R2,R5。
當 3個進程并發執行時有可能發生死鎖嗎?為什么?

依照題目畫出的資源分配圖,如下所示:

由于是并發執行,R1先給p1資源,R3給p2資源,R2給p3資源:

接下來,若R5再給p1分配資源,就會導致循環,必定發生死鎖。

若是在這之前,R5先分配資源給p3,p3進程完成后,釋放資源,就不會發生死鎖:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13865.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ RPC ORM 高速解析

支持所有常用編程語 https://capnproto.org/GitHub - capnproto/capnproto: Capn Proto serialization/RPC system - core tools and C library https://capnproto.org/capnproto-c-win32-1.0.2.zip 常用命令: capnp help capnp compile -oc myschema.capn…

java文件上傳時給pdf、word、excel、ppt、圖片添加水印

前言 在開發的過程中,因為文件的特殊性,需要給pdf、word、excel、ppt、圖片添加水印。添加水印可以在文件上傳時添加,也可以在文件下載時添加。因為業務的某些原因,文件需要在瀏覽器預覽,如果用戶將文件另存為則無法添…

算法與數據結構匯總

基本 數組 字符串 排序 矩陣 模擬 枚舉 字符串匹配 桶排序 計數排序 基數排序 回文:中心擴展 馬拉車 樹上啟發式合并 括號 數學表達式 字符串:前后綴分解。 貢獻法 分組: 【狀態機dp 狀態壓縮 分組】1994. 好子集的數目 【動態規劃】【前綴…

Excel中sum的跨表求和

#實際工作中,一個xlsx文件中會包含多個Excel表格,一般會有“總-分”的關系,如何把分表里的數字匯總到總表里呢? 一般有上圖所示的兩種表達方式。 可以使用通配符 *:代表任意個數、任意字符; ?&…

51單片機的最小系統詳解

51單片機的最小系統詳解 1. 引言 在嵌入式系統中,51單片機被廣泛應用于各種小型控制器和嵌入式開發板中。相信很多人都接觸過51單片機,但是對于51單片機的最小系統卻了解得不夠深入。本文將從振蕩電路、電源模塊、復位電路、LED指示燈和調試接口五個方面詳細介紹51單片機的…

quartz定時任務

Quartz 數據結構 quartz采用完全二叉樹:除了最后一層每一層節點都是滿的,而且最后一層靠左排列。 二叉樹節點個數規則:每層從左開始,第一層只有一個,就是2的0次冪,第二層兩個就是2的1次冪,第三…

DOS學習-目錄與文件應用操作經典案例-attrib

新書上架~👇全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目錄 一.前言 二.使用 三.案例 一.前言 DOS系統中的attrib命令是一個用于顯示或更改文件&#…

設計模式——職責鏈(責任鏈)模式

目錄 職責鏈模式 小俱求實習 結構圖 實例 職責鏈模式優點 職責鏈模式缺點 使用場景 1.springmvc流程 ?2.mybatis的執行流程 3.spring的過濾器和攔截器 職責鏈模式 使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系。將這個對象連成…

github設置項目分類

https://www.php.cn/faq/541957.html https://docs.github.com/zh/repositories/working-with-files/managing-files/creating-new-files

什么是回表,如何解決回表問題

下面表中:主鍵id是聚簇索引,name是輔助索引。 執行這樣一條SQL: select name from A where name"s;name字段是有索引,所以MYSQL在通過name進行査詢的時候,是需要掃描兩顆Btree樹的。 第一遍:先通過二級索引定位主鍵值1。第二遍:根據主鍵…

免費發布web APP的四個途徑(Python和R)

免費發布數據分析類🌐web APP的幾個途徑📱 數據分析類web APP目前用來部署生信工具,統計工具和預測模型等,便利快捷,深受大家喜愛。而一個免費的APP部署途徑,對于開發和測試APP都是必要的。根據筆者的經驗…

word-形狀繪制、smartart、visio

一、人員架構圖繪制 小技巧: 1、ctrlshift水平復制 2、點擊圖形,右鍵設置為默認形狀 3、插入-形狀-右鍵-鎖定繪圖模式,按esc退出狀態 4、插入-形狀-新建繪圖畫布,代替組合問題 畫布中存在錨點,便于直線連接 二、s…

網絡安全相關面試題(hw)

網絡安全面試題 報錯注入有哪些函數 updatexml注入 載荷注入 insert注入 updata注入 delete注入 extractvalue()注入 注入防御方法 涵數過濾 直接下載相關防范注入文件,通過incloud包含放在網站配置文件里面 PDO預處理,從PHP 5.1開始&…

electron中BrowserWindow的show事件沒有觸發踩坑記錄

class ElectronApi {static mainWindow;//主窗口createWindow() {try {// Create the browser window.this.mainWindow new BrowserWindow({width: 1200,height: 800,minHeight: 800,minWidth: 1200,webPreferences: {preload: preloadPath,// nodeIntegration: true,// conte…

windows怎么復制文件到vmware 中ubantu虛擬機,vmware中的虛擬機怎么聯網,NAT參數和DHCP參數。

目錄 windows怎么復制文件到vmware 中ubantu虛擬機 vmware中的虛擬機怎么聯網 NAT參數和DHCP參數。

Linux環境Docker安裝,使用Docker搭建Mysql服務實戰

1、環境:阿里云Linxu服務器 2、安裝docker # 1、yum 包更新到最新 yum update # 2、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的 yum install -y yum-utils device-mapper-persistent-data…

OpenSSL之API編程 - C/C++實現AES、DES、3DES、SM4對稱加密算法

文章介紹 本文章介紹了OpenSSL計算對稱加解密算法(AES、DES、3DES、SM4等)的相關接口,并使用C語言實現了AES和SM4加解密。 對稱加解密算法 對稱加密與非對稱加密算法 OpenSSL介紹 openssl是一個功能豐富且自包含的開源安全工具箱。它提供的主要功能有&#xff…

深度學習之基于YOLOV5的口罩檢測系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景 隨著全球公共衛生事件的頻發,口罩成為了人們日常生活中不可或缺的一部分。在公共場所&am…

10、SpringBoot 源碼分析 - 自動配置深度分析三

SpringBoot 源碼分析 - 自動配置深度分析三 refresh和自動配置大致流程AutoConfigurationImportSelector的getAutoConfigurationEntry獲取自動配置實體(重點)AutoConfigurationImportSelector的getCandidateConfigurations獲取EnableAutoConfiguration類型的名字集合AutoConfig…

Android中JVM內存回收機制

文章目錄 分代收集算法:新生代(Young Generation)老年代(Old Generation) 垃圾回收器:JVM常見三大回收算法:Mark-Sweep(標記清除)優點:缺點: 復制算法優點:缺點: Mark-Co…