用C語(yǔ)言或C++編寫(xiě)操作系統(tǒng)作業(yè):銀行家算法
1、銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系 銀行家算法統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
2、利用銀行家算法避免死鎖 . 銀行家算法 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti〔j〕=K,表示進(jìn)程Pi需要K個(gè)Rj類(lèi)型的資源。
3、打開(kāi)VC0,在菜單欄中選擇“文件-新建”,或者Ctrl+N,彈出所示的對(duì)話(huà)框。
4、銀行家算法的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是,才分配。它是最具有代表性的避免死鎖的算法。設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。
什么是擴(kuò)展的銀行家算法,求大神解釋一下
1、Dijkstra(1965)提出了一種能夠避免死鎖的調(diào)度算法,稱(chēng)為銀行家算法(bankers algorithm),這是1節(jié)中給出的死鎖檢測(cè)算法的擴(kuò)展。該模型基于一個(gè)小城鎮(zhèn)的銀行家,他向一群客戶(hù)分別承諾了一定的貸款額度。
2、銀行家算法: 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti[j]=K,表示進(jìn)程Pi需要K個(gè)Rj類(lèi)型的資源。
3、預(yù)防死鎖、避免死鎖(銀行家算法)、檢測(cè)死鎖(資源分配)、解除死鎖:剝奪資源、撤銷(xiāo)進(jìn)程 遞歸鎖 在Python中為了支持同一個(gè)線(xiàn)程中多次請(qǐng)求同一資源,Python提供了可重入鎖。
4、作業(yè)調(diào)度的主要功能是:根據(jù)作業(yè)控制塊中的信息,審查系統(tǒng)能否滿(mǎn)足用戶(hù)作業(yè)的資源需求,以及按照一定的算法,從外存的后備隊(duì)列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源。
5、)不能.如果滿(mǎn)足P1的請(qǐng)求Request(1,0,2)后,P1的需求沒(méi)有完全滿(mǎn)足,也就是說(shuō)P1獲得該資源后不會(huì)結(jié)束,依然在等待系統(tǒng)分配資源。
怎樣用C語(yǔ)言描述操作系統(tǒng)里的死鎖算法?謝謝。
利用銀行家算法避免死鎖 . 銀行家算法 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti〔j〕=K,表示進(jìn)程Pi需要K個(gè)Rj類(lèi)型的資源。
銀行家算法是死鎖避免的重要算法。銀行家算法:資源==錢(qián);收回資源==收回貸款;收不回資源==不會(huì)放貸;例題:假設(shè)系統(tǒng)中有三類(lèi)互斥資源R1,R2,R3。
C語(yǔ)言中函數(shù)參數(shù)為結(jié)構(gòu)體時(shí),一般采用傳地址方式。(偽代碼其實(shí)不用這么寫(xiě))這里采用了同時(shí)請(qǐng)求左右筷子的策略。每個(gè)哲學(xué)家吃飯前需要請(qǐng)求筷子,也就是 P(&fork[i]);P(&fork[(i+1) % N]);直接這么寫(xiě)會(huì)有死鎖。
免死鎖的算法。 要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。 安全狀態(tài):如果存在一個(gè)由系統(tǒng)中所有進(jìn)程構(gòu)成的安全序列P1,…,Pn,則系統(tǒng)處于安全狀態(tài)。安全狀態(tài)一定是沒(méi)有死鎖發(fā)生。 不安全狀態(tài):不存在一個(gè)安全序列。
用銀行家算法判斷下述每個(gè)狀態(tài)是否安全
1、從上述分析中可以看出,此時(shí)存在一個(gè)安全序列{P0,P3,P4,P1,P2},故該狀態(tài)是安全的。
2、銀行家算法是死鎖避免的重要算法。銀行家算法:資源==錢(qián);收回資源==收回貸款;收不回資源==不會(huì)放貸;例題:假設(shè)系統(tǒng)中有三類(lèi)互斥資源R1,R2,R3。
3、根據(jù)銀行家算法(試探性分配之后驗(yàn)證系統(tǒng)所處的狀態(tài)是否安全):進(jìn)程p1申請(qǐng)資源(2,2,1)時(shí),如果分配,那剩余資源為(2,0,1),此時(shí)有沒(méi)有被死鎖的進(jìn)程(如p2),系統(tǒng)是安全的,所以能滿(mǎn)足。
4、算法開(kāi)始時(shí)work=Available;系統(tǒng)找安全序列的過(guò)程需要不斷判斷和修改當(dāng)前資源數(shù)量,不能直接修改原始數(shù)據(jù)記錄Aailable。v標(biāo)志向量Finish 表示每個(gè)進(jìn)程是否有足夠的資源使之運(yùn)行完成。
5、再利用安全性算法檢查系統(tǒng)是否安全,可用資源Available(1,1,1)已不能滿(mǎn)足任何進(jìn)程,故系統(tǒng)進(jìn)入不安全狀態(tài),此時(shí)系統(tǒng)不能將資源分配給P1。
怎么寫(xiě)銀行家算法的代碼
1、設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。(1)如果REQUEST [cusneed] [i]= NEED[cusneed][i],則轉(zhuǎn)(2);否則,出錯(cuò)。
2、你這段代碼有輸出,怎么沒(méi)有包含 stdio.h 頭文件,你打錯(cuò)單詞了吧 studio.h studio是 套件、工作室 的意思吧 應(yīng)該是包含stdio.h,std是‘標(biāo)準(zhǔn) standard’的縮寫(xiě),io是 in/out 輸出輸入。
3、用銀行家算法判斷下述每個(gè)狀態(tài)是否安全。如果安全,說(shuō)明所有進(jìn)程是如何能夠運(yùn)行完畢的。如果不安全,說(shuō)明為什么可能出現(xiàn)死鎖。
4、頁(yè)面大小4096B,那頁(yè)內(nèi)需要12位才能表示,邏輯地址16位,也就是4位頁(yè)地址加12位頁(yè)內(nèi)偏移地址組成,那16位邏輯地址中前面的4位就是頁(yè)號(hào)。
5、銀行家在客戶(hù)申請(qǐng)的貸款數(shù)量不超過(guò)自己擁有的最大值時(shí),都應(yīng)盡量滿(mǎn)足客戶(hù)的需要。在這樣的描述中,銀行家就好比操作系統(tǒng),資金就是資源,客戶(hù)就相當(dāng)于要申請(qǐng)資源的進(jìn)程。銀行家算法是一種最有代表性的避免死鎖的算法。
怎樣用C語(yǔ)言實(shí)現(xiàn)銀行家算法?
銀行家算法是從當(dāng)前狀態(tài)出發(fā),逐個(gè)按安全序列檢查各客戶(hù)中誰(shuí)能完成其工作,然后假定其完成工作且歸還全部貸款,再進(jìn)而檢查下一個(gè)能完成工作的客戶(hù)。如果所有客戶(hù)都能完成工作,則找到一個(gè)安全序列,銀行家才是安全的。
銀行家算法的基本思想是分配資源之前,判斷系統(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)中的資源類(lèi)型數(shù)。Available(1:m):現(xiàn)有資源向量。Available(j)=k 表示有k個(gè)未分配的j類(lèi)資源。
要用窮舉法實(shí)現(xiàn)一元人民幣換成一分、兩分和五分的硬幣共五十枚的硬幣方案,可以使用三個(gè)循環(huán)來(lái)遍歷所有可能的組合。
重復(fù)上述步驟,直到只剩下一個(gè)元素為止。其中,每經(jīng)過(guò)一輪,就能確定出一個(gè)元素的位置。通過(guò)n-1輪選擇,就能將這n個(gè)元素按照從大到小的順序排好序。選擇排序的時(shí)間復(fù)雜度為O(n^2)。