国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【操作系統(tǒng)】死鎖問題---死鎖的消除方法

這篇具有很好參考價(jià)值的文章主要介紹了【操作系統(tǒng)】死鎖問題---死鎖的消除方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本文章將主要解釋死鎖的消除方法

一、死鎖的概念

? ? ? ? 這是《操作系統(tǒng)》對(duì)于死鎖的定義:

有并發(fā)進(jìn)程P1,P2,…Pn,它們共享資源R1,R2,…Rm (n>0,m>0, n>=m)。其中,每個(gè)Pi(1≤i≤n)擁有資源Rj(1≤j ≤m),直到不再有剩余資源。同時(shí),各Pi又在不釋放Rj的前提下要求Rk(k≠j,1≤k ≤m),從而造成資源的互相占有和互相等待。在沒有外力驅(qū)動(dòng)的情況下,該組并發(fā)進(jìn)程停止往前推進(jìn),陷入永久等待狀態(tài)。

? ? ? ? 說人話就是,我自己的資源不給別人,別人的資源不給我,導(dǎo)致兩個(gè)人都因?yàn)闇惒积R資源而不能執(zhí)行相關(guān)操作而一直等待,這就是死鎖。結(jié)構(gòu)圖如下所示:

如何解決死鎖,操作系統(tǒng),算法

?二、死鎖產(chǎn)生的必要條件

? ? ? ? 如果產(chǎn)生死鎖則一定會(huì)滿足以下條件:

1、互斥條件。一個(gè)資源不能同時(shí)被兩個(gè)或兩個(gè)以上的進(jìn)程所擁有。

2、不剝奪條件。一個(gè)進(jìn)程未結(jié)束前,任何進(jìn)程都不能得到該進(jìn)程的資源。

3、部分分配。進(jìn)程每次申請(qǐng)所需要的一部分資源,在等待申請(qǐng)其他資源的時(shí)間里,不會(huì)釋放它已經(jīng)擁有的資源。

4、環(huán)路條件。如下圖所示:

如何解決死鎖,操作系統(tǒng),算法

而只要上述的條件被破壞就不會(huì)產(chǎn)生死鎖,這就是我們解決死鎖問題的思路。

三、死鎖的消除方法

1、死鎖預(yù)防

? ? ? ? 死鎖預(yù)防是一種靜態(tài)的消除死鎖的方法。它是采用某種策略,限制并發(fā)進(jìn)程對(duì)資源的請(qǐng)求,從而使得死鎖的必要條件在系統(tǒng)執(zhí)行的任何時(shí)間都不滿足。

方法:

①、互斥條件是資源固有屬性,不能避免

②、破壞“部分分配(請(qǐng)求和保持)”條件。預(yù)先全分配,等待釋放。缺點(diǎn):資源嚴(yán)重浪費(fèi)(不使用也被占用)、降低進(jìn)程并發(fā)性

③、破壞“不剝奪”條件。缺點(diǎn):增加系統(tǒng)開銷,且進(jìn)程前段工作可能失效。

④、破壞“環(huán)路等待”條件。將資源分類并按順利排列,規(guī)定按遞增順序請(qǐng)求資源;如果需要多個(gè)資源,必須同時(shí)請(qǐng)求(先低后高),如果占用了高的資源而請(qǐng)求低的資源時(shí),必須先釋放高的資源。如此可以避免形成環(huán)路。缺點(diǎn):限制進(jìn)程對(duì)資源的請(qǐng)求,系統(tǒng)開銷大。具體操作如下圖所示,P3占有s3資源,當(dāng)它想申請(qǐng)s2資源時(shí)必須釋放s3資源。

如何解決死鎖,操作系統(tǒng),算法

2、死鎖避免

? ? ? ? 死鎖避免可被稱為動(dòng)態(tài)預(yù)防,因?yàn)橄到y(tǒng)采用動(dòng)態(tài)分配資源,在分配過程中預(yù)測(cè)出死鎖發(fā)生的可能性并加以避免的方法。?

方法:

  • 進(jìn)程啟動(dòng)拒絕:如果進(jìn)程對(duì)資源的申請(qǐng)可能導(dǎo)致死鎖,就不啟動(dòng)這個(gè)進(jìn)程
  • 資源分配拒絕:如果進(jìn)程對(duì)資源的申請(qǐng)可能導(dǎo)致死鎖,就不給進(jìn)程分配該資源?

詳解:

進(jìn)程啟動(dòng)拒絕

如何解決死鎖,操作系統(tǒng),算法

該表說明表達(dá)的意思如下:

如何解決死鎖,操作系統(tǒng),算法

(j=1…m)

由公式知道,只有當(dāng)申請(qǐng)的資源小于剩余的資源,就會(huì)分配給進(jìn)程資源,否則就不分配進(jìn)程資源。

? ? ? ?僅當(dāng)滿足以上條件時(shí),才啟動(dòng)一個(gè)新進(jìn)程Pn+1(即:只有滿足新進(jìn)程的請(qǐng)求及所有當(dāng)前進(jìn)程的最大請(qǐng)求量時(shí),才啟動(dòng)該進(jìn)程) 這個(gè)策略不是最優(yōu)的,因?yàn)樗僭O(shè)了最壞的情況:所有進(jìn)程同時(shí)發(fā)出它們的最大請(qǐng)求

資源分配拒絕

避免死鎖的著名算法——銀行家算法(Dijkstra)

類比的問題:

客戶向銀行申請(qǐng)貸款的數(shù)量是有限的 每個(gè)客戶在第一次申請(qǐng)貸款時(shí)要聲明完成該項(xiàng)目所需的最大資金量 在滿足所有貸款要求時(shí),客戶應(yīng)及時(shí)歸還貸款 銀行家在客戶申請(qǐng)的貸款數(shù)量不超過自己擁有的最大值時(shí),都應(yīng)盡量滿足客戶的需要

例子:

設(shè)銀行家有10萬元資金,有三個(gè)客戶A、B、C,分別需要8、3、9萬元貸款完成項(xiàng)目 客戶要求分期貸款,目前A已貸到4萬 此時(shí),B要申請(qǐng)2萬,C要申請(qǐng)4萬 銀行家需要評(píng)估貸款請(qǐng)求的安全性,避免出現(xiàn)壞賬 ? ?B借2萬,C借4萬,能借嗎?在這個(gè)例子中銀行家是操作系統(tǒng), 資金是資源 ,客戶是要申請(qǐng)資源的進(jìn)程。

允許進(jìn)程動(dòng)態(tài)申請(qǐng)資源,在系統(tǒng)分配資源之前,先計(jì)算此次分配是否安全

? ? 本次分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配, 否則,本次請(qǐng)求資源的進(jìn)程等待

安全狀態(tài)

? ? 本次分配之后,存在一個(gè)進(jìn)程安全序列{P1, …, Pn},對(duì)其中每一個(gè)Pi來說,它還需要的資源量不超過系統(tǒng)當(dāng)前剩余的資源量與所有Pj (j<i)占有的資源量之和

不安全狀態(tài)

? ? 不存在安全序列

算法中用到的數(shù)據(jù)結(jié)構(gòu)

?Available可用資源數(shù)組

? ? Available[j] = k ?? ?目前資源j有k個(gè)

Max最大需求矩陣

? ? Max[i,j] = l?? ??? ?進(jìn)程Pi對(duì)資源j的最大需求數(shù)量是l個(gè)

Allocation分配矩陣??

? ? Allocation[i, j] = m ?? ?進(jìn)程Pi已分配到資源j的數(shù)量是m個(gè)

Need需求矩陣

? ? Need[i, j] = n ?? ?進(jìn)程Pi還需要資源j的數(shù)量是n個(gè)

Request[i]資源請(qǐng)求

? ? 若Request[i, j] = q, 進(jìn)程Pi請(qǐng)求資源j的數(shù)量是q個(gè)

流程圖如下:

分配資源流程圖

如何解決死鎖,操作系統(tǒng),算法

?文章來源地址http://www.zghlxwxcb.cn/news/detail-555509.html

釋放資源流程圖:

Work:系統(tǒng)運(yùn)行過程中可用資源數(shù)量,初值=Available

Finish[i]:系統(tǒng)是否有足夠資源分配給進(jìn)程Pi,使其運(yùn)行結(jié)束,初始為false

如何解決死鎖,操作系統(tǒng),算法

?

到了這里,關(guān)于【操作系統(tǒng)】死鎖問題---死鎖的消除方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 操作系統(tǒng)-進(jìn)程和線程-同步、互斥、死鎖

    操作系統(tǒng)-進(jìn)程和線程-同步、互斥、死鎖

    目錄 一、同步互斥 ?二、互斥的實(shí)現(xiàn)方法 2.1軟件實(shí)現(xiàn) 2.1.1單標(biāo)志法 2.1.2雙標(biāo)志先檢查 2.1.3雙標(biāo)志后檢查 2.1.4Petersons算法 2.2硬件實(shí)現(xiàn) 2.2.1 TestAndSet指令 2.2.2 Swap指令? ?三、信號(hào)量機(jī)制 3.1整形變量 ?3.2 記錄型變量 ?3.3用信號(hào)量實(shí)現(xiàn)進(jìn)程互斥、同步、前驅(qū)關(guān)系 3.3.1互斥 ?3.3.2同步

    2024年02月08日
    瀏覽(95)
  • 操作系統(tǒng)進(jìn)程線程(三)—進(jìn)程狀態(tài)、同步互斥、鎖、死鎖

    操作系統(tǒng)進(jìn)程線程(三)—進(jìn)程狀態(tài)、同步互斥、鎖、死鎖

    原子操作的概念 原子操作就是不可中斷的一個(gè)或者一系列操作。 原子操作如何實(shí)現(xiàn) 總線鎖定 使用處理器提供的一個(gè)LOCK#信號(hào),當(dāng)一個(gè)處理器在總線上輸出此信號(hào)的時(shí)候,其他處理器的請(qǐng)求將被阻塞住,那么該處理器可以獨(dú)占內(nèi)存。 緩存鎖 總線鎖開銷比較大,因?yàn)榘袰PU和內(nèi)

    2024年02月04日
    瀏覽(107)
  • 操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

    操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

    死鎖 ?(1)定義 ?(2)死鎖產(chǎn)生的原因 ?(3)死鎖產(chǎn)生的必要條件 ?(4)死鎖的處理策略 銀行家算法 ?(1)核心思想 ?(2)數(shù)據(jù)結(jié)構(gòu) ?(3)算法描述 ?? (4)? 安全性檢查算法 銀行家算法的模擬 (1)數(shù)據(jù)結(jié)構(gòu) (2)完整代碼 (3)測(cè)試 所謂死鎖,是指多個(gè)進(jìn)程因?yàn)楦偁庂Y

    2024年02月01日
    瀏覽(16)
  • 【第三章 | 處理機(jī)調(diào)度與死鎖】《操作系統(tǒng) 慕課版》課后答案 + 復(fù)習(xí)

    【第三章 | 處理機(jī)調(diào)度與死鎖】《操作系統(tǒng) 慕課版》課后答案 + 復(fù)習(xí)

    目錄 【第三章】處理機(jī)調(diào)度與死鎖 | 本章概念 1.處理機(jī)調(diào)度概述 2.調(diào)度算法相關(guān)概念 3.實(shí)時(shí)調(diào)度相關(guān)概念 4.死鎖 5.資源分配圖 | 本章算法 1.周轉(zhuǎn)時(shí)間與帶權(quán)周轉(zhuǎn)時(shí)間的計(jì)算公式 2.調(diào)度算法 FCFS? SJF? PR? RR 3.實(shí)時(shí)調(diào)度算法 EDF 4.避免死鎖 —— 銀行家算法 | 課后簡答題 1.處理機(jī)調(diào)

    2024年02月01日
    瀏覽(25)
  • 【JAVA】云HIS系統(tǒng)使用和操作過程中的常見問題及解決方法

    【JAVA】云HIS系統(tǒng)使用和操作過程中的常見問題及解決方法

    一、門診業(yè)務(wù)中遇到的問題 (1)門診醫(yī)生如何查詢往期病人? 答: 點(diǎn)擊門診醫(yī)生站左側(cè)患者列表,在彈出的頁面點(diǎn)擊已診分頁,在搜索框輸入患者姓名,在結(jié)果中找到對(duì)應(yīng)患者,點(diǎn)擊詳情按鈕即可查詢患者往期就診信息,點(diǎn)擊想要查詢的門診記錄前方的方框即可查詢相應(yīng)的

    2024年02月16日
    瀏覽(32)
  • 關(guān)于Surface系列重裝系統(tǒng)的操作方法,出現(xiàn)的問題并給出了解決辦法。

    關(guān)于Surface系列重裝系統(tǒng)的操作方法,出現(xiàn)的問題并給出了解決辦法。

    ?我去年在微軟官網(wǎng)淘到了一個(gè)surface go的平板電腦,由于我把Windows系統(tǒng)從Win10更新到了Win11,導(dǎo)致系統(tǒng)很卡頓(不是更新的Win11的原因,我猜測(cè)可能是平板電腦的自身版本有關(guān),處理器性能太低了,帶不動(dòng)),所以我試著去還原系統(tǒng),在還原的過程中,遇到了一些問題,現(xiàn)記

    2024年02月08日
    瀏覽(21)
  • 【操作系統(tǒng)-進(jìn)程】PV操作——讀者寫者問題

    【操作系統(tǒng)-進(jìn)程】PV操作——讀者寫者問題

    讀者寫者問題,其本質(zhì)就是連續(xù)多個(gè)同類進(jìn)程訪問同一個(gè)臨界資源的問題。 第一個(gè)進(jìn)程開始訪問臨界資源前,需要對(duì)資源加上互斥鎖,后面的進(jìn)程再訪問時(shí)就不用再對(duì)資源加互斥鎖了,直到最后一個(gè)進(jìn)程訪問完后,發(fā)現(xiàn)自己是最后一個(gè)進(jìn)程,就解鎖互斥鎖。這就像一種情況:

    2024年01月16日
    瀏覽(21)
  • 電腦無法找到操作系統(tǒng)的解決方法

    在編程中遇到電腦無法找到操作系統(tǒng)的問題是比較常見的情況。這種情況通常發(fā)生在啟動(dòng)計(jì)算機(jī)時(shí),計(jì)算機(jī)無法找到正確的操作系統(tǒng)來加載。下面將介紹一些可能的解決方法,幫助您解決這個(gè)問題。 檢查引導(dǎo)順序:首先,您需要確保計(jì)算機(jī)的引導(dǎo)順序正確設(shè)置。引導(dǎo)順序決定

    2024年01月19日
    瀏覽(24)
  • 凝思操作系統(tǒng)配置IP地址方法

    凝思操作系統(tǒng)配置IP地址方法

    方法1: /etc/network/interfaces文件中配置: 如上,以此配置所有的eth*,, 測(cè)試: 1)未加allow-hotplug eth0? ? ?ip不生效; 2)這句可以不加:gateway 193.168.100.1 ? 另外,正如,windows系統(tǒng)一塊網(wǎng)卡可以設(shè)置多個(gè)ip地址, linux系統(tǒng)一塊網(wǎng)卡,也可以設(shè)置多個(gè)ip 注意:第二個(gè)ip,沒有添加g

    2024年02月12日
    瀏覽(21)
  • 如何編寫Windows操作系統(tǒng)

    編寫一個(gè)完整的操作系統(tǒng)是一項(xiàng)非常復(fù)雜的任務(wù),需要深入了解計(jì)算機(jī)體系結(jié)構(gòu)和操作系統(tǒng)的工作原理,還需要熟悉匯編語言和C/C++編程語言。在這里,我們簡單介紹一下編寫Windows操作系統(tǒng)的基本步驟。 Windows操作系統(tǒng)是由微軟公司開發(fā)的,因此微軟提供了一些用于Windows操作

    2024年02月07日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包