怎樣用C語言描述操作系統(tǒng)里的死鎖算法?謝謝。
C語言中函數(shù)參數(shù)為結(jié)構(gòu)體時(shí),一般采用傳地址方式。(偽代碼其實(shí)不用這么寫)這里采用了同時(shí)請(qǐng)求左右筷子的策略。每個(gè)哲學(xué)家吃飯前需要請(qǐng)求筷子,也就是 P(&fork[i]);P(&fork[(i+1) % N]);直接這么寫會(huì)有死鎖。
銀行家算法是死鎖避免的重要算法。銀行家算法:資源==錢;收回資源==收回貸款;收不回資源==不會(huì)放貸;例題:假設(shè)系統(tǒng)中有三類互斥資源R1,R2,R3。
免死鎖的算法。 要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。 安全狀態(tài):如果存在一個(gè)由系統(tǒng)中所有進(jìn)程構(gòu)成的安全序列P1,…,Pn,則系統(tǒng)處于安全狀態(tài)。安全狀態(tài)一定是沒有死鎖發(fā)生。 不安全狀態(tài):不存在一個(gè)安全序列。
銀行家算法的算法實(shí)現(xiàn)
銀行家算法是從當(dāng)前狀態(tài)出發(fā),逐個(gè)按安全序列檢查各客戶中誰能完成其工作,然后假定其完成工作且歸還全部貸款,再進(jìn)而檢查下一個(gè)能完成工作的客戶。如果所有客戶都能完成工作,則找到一個(gè)安全序列,銀行家才是安全的。
v取值:根據(jù)進(jìn)程需求賦初始值。v實(shí)現(xiàn):二維數(shù)組。Max【i,j】=K,表示進(jìn)程 i 需要Rj類資源的最大數(shù)目為K。算法過程:就是對(duì)各進(jìn)程的Request向量及資源數(shù)量進(jìn)行一系列判斷及值操作。
銀行家算法是一種預(yù)防死鎖的算法。具體算法步驟可以參考百度百科: 銀行家算法 例子 :某系統(tǒng)有A、B、C、D , 4類資源共5個(gè)進(jìn)程(P0、PPPP4)共享,各進(jìn)程對(duì)資源的需求和分配情況如下表所示。
銀行家算法問題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對(duì)資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系銀行家算法統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
銀行家算法中的數(shù)據(jù)結(jié)構(gòu)。為了實(shí)現(xiàn)銀行家算法,在系統(tǒng)中必須設(shè)置這樣四個(gè)數(shù)據(jù)結(jié)構(gòu),分別用來描述系統(tǒng)中可利用的資源,所有進(jìn)程對(duì)資源的最大需求,系統(tǒng)中的資源分配以及所有進(jìn)程還需要多少資源的情況。
實(shí)驗(yàn)報(bào)告心得體會(huì)模板合集
1、實(shí)驗(yàn)報(bào)告心得體會(huì)模板合集(篇一) 實(shí)驗(yàn)?zāi)康?熟悉會(huì)計(jì)中多涉及的知識(shí)和問題,為實(shí)際工作打下良好基礎(chǔ)。 加強(qiáng)對(duì)財(cái)務(wù)管理這門課程的了解,培養(yǎng)對(duì)此課程的興趣和熱情,激發(fā)學(xué)習(xí)專業(yè)理論知識(shí)的積極性。
2、【篇一】實(shí)驗(yàn)心得體會(huì)優(yōu)秀范文 在公司實(shí)習(xí)的這段時(shí)間里,我在公司主要負(fù)責(zé)xxx。我想這些對(duì)于一個(gè)實(shí)習(xí)生來說是太難得的鍛煉機(jī)會(huì),所以我也十分的珍惜。
3、實(shí)事求是做實(shí)驗(yàn)。不騙自己更不要騙他人。 認(rèn)真仔細(xì)地做好實(shí)驗(yàn)紀(jì)錄。不要當(dāng)你真正用到它時(shí)才知它的重要所在。 【篇四】實(shí)驗(yàn)報(bào)告心得體會(huì) 高校實(shí)驗(yàn)室是培養(yǎng)高層次人才和開展科學(xué)研究的重要基地。
怎樣用C語言實(shí)現(xiàn)銀行家算法?
利用銀行家算法避免死鎖 . 銀行家算法 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti〔j〕=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源。
銀行家算法的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是,才分配。它是最具有代表性的避免死鎖的算法。設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。
擴(kuò)展的銀行家算法 就是銀行家算法的擴(kuò)展。描述:n:系統(tǒng)中的進(jìn)程個(gè)數(shù)。m:系統(tǒng)中的資源類型數(shù)。Available(1:m):現(xiàn)有資源向量。Available(j)=k 表示有k個(gè)未分配的j類資源。