死鎖?
1 區(qū)分死鎖 饑餓 和死循環(huán)
共同點(diǎn):進(jìn)程得不到資源而無(wú)法順利向前推進(jìn)
不同點(diǎn)
死鎖:至少有兩個(gè)以上的進(jìn)程,都處于阻塞態(tài)
饑餓:可能就一個(gè)進(jìn)程,就緒態(tài)或者阻塞態(tài)
死循環(huán):?jiǎn)栴}來(lái)源于是被管理者問(wèn)題而非操作系統(tǒng)(比如人為設(shè)置死循環(huán),或者程序邏輯bug)
2 產(chǎn)生死鎖的三個(gè)必要條件
1 不剝奪條件2 循環(huán)等待條件?3請(qǐng)求和保持條件 4 互斥條件
死鎖一定循環(huán)等待,循環(huán)等待不一定死鎖accountability:資源在數(shù)量只有1時(shí),充分必要。
銀行家算法(dijkstra):
不安全序列:我有100萬(wàn),我借給了三個(gè)流氓一共80 萬(wàn) 他們還會(huì)再再借一次錢(qián),如果我剩余的錢(qián)滿足不了任何一個(gè)人的要求,那我的錢(qián)就不安全了!
解法

1:把已分配的列相加,然后用總資源數(shù)-已分配的=剩余資源(3,3,2)
2:再把最大需求的數(shù)-已分配的=最多還需要的
3:比較,找出安全序列;
c++算法實(shí)現(xiàn)
3死鎖的檢測(cè)和解除
解除:1 資源剝奪法 2 撤銷(xiāo)進(jìn)程法 3 進(jìn)程回退法
檢測(cè):資源分配圖:一個(gè)可動(dòng)的進(jìn)程讓它先動(dòng),然后回收資源
檢測(cè)算法:

標(biāo)簽: