銀行家算法
1、銀行家算法是最有代表性的避免死鎖算法,是Dijkstra提出的銀行家算法。這是由于該算法能用于銀行系統(tǒng)現(xiàn)金貸款的發(fā)放而得名。
2、銀行家算法是一種最有代表性的避免死鎖的算法。要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。安全狀態(tài)是若存在一個(gè)由系統(tǒng)中所有進(jìn)程構(gòu)成的安全序列P1,…,Pn,則系統(tǒng)處于安全狀態(tài),安全狀態(tài)一定是沒有死鎖發(fā)生。
3、銀行家算法。為了防止死鎖的資源占用,銀行家算法通過資源限制進(jìn)行避免,所以避免死鎖的一個(gè)著名的算法是銀行家算法。死鎖是指兩個(gè)或多個(gè)事務(wù)在同一資源上相互占用,并請(qǐng)求鎖定對(duì)方的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象。
一道操作系統(tǒng)題,在一個(gè)分頁存儲(chǔ)管理系統(tǒng)中,邏輯地址長度為16位,頁面大...
每個(gè)頁面大小為1kB,也就是400h B。首先計(jì)算塊號(hào):0A5Dh / 400h = 2,因此邏輯頁號(hào)為2,對(duì)應(yīng)的物理塊號(hào)為4,相應(yīng)的起始地址為4 * 400h = 1000h。
頁面大小為4096字節(jié),21134096等于2的12次方。故5261頁內(nèi)地址為12位。又邏輯4102地址長度為16位。故高4位表示頁號(hào)。則邏輯地址2F6AH在第2頁。根據(jù)頁表1653可知,第2頁存于第14塊中。
也就是4位頁地址加12位頁內(nèi)偏移地址組成,那16位邏輯地址中前面的4位就是頁號(hào)。想要求出物理地址,那還需要頁表,根據(jù)頁號(hào)查找對(duì)應(yīng)的頁表,頁表存放是的頁號(hào)對(duì)應(yīng)的物理頁地址,物理地址就是物理頁地址加上頁內(nèi)偏移。
怎么寫銀行家算法的代碼
銀行家算法可以描述為 四舍六入五考慮,五后非零就進(jìn)一,五后為零看基偶,五前為偶應(yīng)舍去,五前為基要進(jìn)一。Java的圖形界面從開始我就沒學(xué)過,學(xué)那些沒用,所以我只能用Java代碼實(shí)現(xiàn)這個(gè)需求。
(1)若進(jìn)程P1請(qǐng)求資源,發(fā)出請(qǐng)求向量Request1(1,0,2),編寫程序用銀行家算法判斷系統(tǒng)能否將資源分配給它;(2)若進(jìn)程P2提出請(qǐng)求Request(0,1,0),用銀行家算法程序驗(yàn)證系統(tǒng)能否將資源分配給它。
設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。(1)如果REQUEST [cusneed] [i]= NEED[cusneed][i],則轉(zhuǎn)(2);否則,出錯(cuò)。