操作系統(tǒng)(死鎖避免)---銀行家算法解題
1、銀行家算法是死鎖避免的重要算法。銀行家算法:資源==錢(qián);收回資源==收回貸款;收不回資源==不會(huì)放貸;例題:假設(shè)系統(tǒng)中有三類互斥資源R1,R2,R3。
2、銀行家算法(Bankers Algorithm)是一種用于避免計(jì)算機(jī)系統(tǒng)中死鎖的算法。其基本思想是在系統(tǒng)資源分配給進(jìn)程之前,先計(jì)算每個(gè)進(jìn)程所需資源量與系統(tǒng)實(shí)際資源量之間的差值,然后根據(jù)這個(gè)差值判斷該進(jìn)程是否會(huì)發(fā)生死鎖。
3、Need[i,j]∶=Need[i,j]-Requesti[j];(4) 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。
4、銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系 銀行家算法統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
5、作為避免死鎖的一種算法,銀行家算法可以說(shuō)是最為出名的了。這個(gè)名字的來(lái)源是因?yàn)樵撍惴ㄆ鸪跏菫殂y行系統(tǒng)設(shè)計(jì)的,以確保銀行在發(fā)放現(xiàn)金貸款時(shí),不會(huì)發(fā)生不能滿足所有客戶需要的情況。在操作系統(tǒng)中也可以用它來(lái)實(shí)現(xiàn)避免死鎖。
銀行家算法的數(shù)據(jù)結(jié)構(gòu)
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),則分配,否則等待。為實(shí)現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。
2、(4) 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進(jìn)程Pi,以完成本次分配;否則, 將本次的試探分配作廢,恢復(fù)原來(lái)的資源分配狀態(tài),讓進(jìn)程Pi等待。
3、銀行家算法中的數(shù)據(jù)結(jié)構(gòu)。為了實(shí)現(xiàn)銀行家算法,在系統(tǒng)中必須設(shè)置這樣四個(gè)數(shù)據(jù)結(jié)構(gòu),分別用來(lái)描述系統(tǒng)中可利用的資源,所有進(jìn)程對(duì)資源的最大需求,系統(tǒng)中的資源分配以及所有進(jìn)程還需要多少資源的情況。
4、銀行家算法問(wèn)題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對(duì)資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
5、為實(shí)現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。銀行算法的背景:在銀行中,客戶申請(qǐng)貸款的數(shù)量是有限的,每個(gè)客戶在第一次申請(qǐng)貸款時(shí)要聲明完成該項(xiàng)目所需的最大資金量,在滿足所有貸款要求時(shí),客戶應(yīng)及時(shí)歸還。
操作系統(tǒng)-銀行家算法問(wèn)題
1、作為避免死鎖的一種算法,銀行家算法可以說(shuō)是最為出名的了。這個(gè)名字的來(lái)源是因?yàn)樵撍惴ㄆ鸪跏菫殂y行系統(tǒng)設(shè)計(jì)的,以確保銀行在發(fā)放現(xiàn)金貸款時(shí),不會(huì)發(fā)生不能滿足所有客戶需要的情況。在操作系統(tǒng)中也可以用它來(lái)實(shí)現(xiàn)避免死鎖。
2、高。在銀行家算法中,操作系統(tǒng)通過(guò)分析進(jìn)程當(dāng)前的資源占用情況,預(yù)測(cè)其未來(lái)的資源需求情況,決定是否分配資源給該進(jìn)程,從而避免了資源浪費(fèi)和爭(zhēng)奪的情況,提高了資源的利用率,銀行家算法可以有效地提高資源利用率,減少資源浪費(fèi)。
3、銀行家算法: 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti[j]=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源。
4、比如1單位是1千美元),銀行家知道不可能所有客戶同時(shí)都需要最大貸款額,所以他只保留10個(gè)單位而不是22個(gè)單位的資金來(lái)為客戶服務(wù)。這里將客戶比作進(jìn)程,貸款單位比作資源,銀行家比作操作系統(tǒng)。
5、銀行家算法: 我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶向銀行家貸款。
什么是擴(kuò)展的銀行家算法,求大神解釋一下
Dijkstra(1965)提出了一種能夠避免死鎖的調(diào)度算法,稱為銀行家算法(bankers algorithm),這是1節(jié)中給出的死鎖檢測(cè)算法的擴(kuò)展。該模型基于一個(gè)小城鎮(zhèn)的銀行家,他向一群客戶分別承諾了一定的貸款額度。
銀行家算法: 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti[j]=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源。
每個(gè)CPU在同一時(shí)間只能執(zhí)行一個(gè)線程,那么其他的線程就必須等待該線程的全局解釋器,使用權(quán)消失后才能使用全局解釋器,即使多個(gè)線程直接不會(huì)相互影響在同一個(gè)進(jìn)程下也只有一個(gè)線程使用cpu,這樣的機(jī)制稱為全局解釋器鎖(GIL)。
作業(yè)調(diào)度的主要功能是:根據(jù)作業(yè)控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一定的算法,從外存的后備隊(duì)列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源。