操作系統之QQ作業-11

在這裏插入圖片描述
第一題:
在這裏插入圖片描述
1)此時可以找出安全序列{p1,p3,p0,p2}或{p3,p1,p0,p2},因此當前狀態安全。
以{p3,p1,p0,p2}舉例
剩餘資源爲{7,1,0,5},滿足p3需求,將其加入安全序列,並更新後,剩餘資源變爲{10,2,1,5}
剩餘資源爲{10,2,1,5},滿足p1需求,將其加入安全序列,並更新後,剩餘資源變爲{11,4,2,5}
剩餘資源爲{11,4,2,5},滿足p0需求,將其加入安全序列,並更新後,剩餘資源變爲{15,4,2,6}
剩餘資源爲{15,4,2,6},滿足p2需求,將其加入安全序列,並更新後,剩餘資源變爲{16,5,2,8}

2)允許p1進程申請1個單位的R1,當p1進程申請1個單位的R1後,系統中就只有0個單位的R1,剩餘資源就要變爲{7,0,0,5},相應Recourse變爲{16,4,2,8}此時判斷系統處於安全狀態,安全序列{p3,p1,p0,p2}
剩餘資源爲{7,0,0,5},滿足p3需求,將其加入安全序列,並更新後,剩餘資源變爲{10,1,1,5}
剩餘資源爲{10,1,1,5},滿足p1需求,將其加入安全序列,並更新後,剩餘資源變爲{11,3,2,5}
剩餘資源爲{11,3,2,5},滿足p0需求,將其加入安全序列,並更新後,剩餘資源變爲{15,3,2,6}
剩餘資源爲{15,3,2,6},滿足p2需求,將其加入安全序列,並更新後,剩餘資源變爲{16,4,2,8}
滿足,則爲安全狀態

3)允許p3進程申請6個單位的R0,當p3進程申請6個單位的R0後,剩餘資源就要變爲{1,1,0,5},相應Recourse變爲{10,5,2,8}此時系統處於安全狀態,有安全序列{p3,p1,p0,p2}
剩餘資源爲{1,0,0,5},滿足p3需求,將其加入安全序列,並更新後,剩餘資源變爲{4,2,1,5}
剩餘資源爲{4,2,1,5},滿足p1需求,將其加入安全序列,並更新後,剩餘資源變爲{5,4,2,5}
剩餘資源爲{5,4,2,5},滿足p0需求,將其加入安全序列,並更新後,剩餘資源變爲{9,4,2,6}
剩餘資源爲{9,4,2,6},滿足p2需求,將其加入安全序列,並更新後,剩餘資源變爲{10,5,2,8}

4)允許p2進程申請2個單位的R3,當p2進程申請2個單位的R3後,剩餘資源就要變爲{7,1,0,3},相應Recourse變爲{16,5,2,6}此時系統處於安全狀態,有安全序列{p3,p1,p0,p2}
剩餘資源爲{7,1,0,3},滿足p3需求,將其加入安全序列,並更新後,剩餘資源變爲{10,2,1,3}
剩餘資源爲{10,2,1,3},滿足p1需求,將其加入安全序列,並更新後,剩餘資源變爲{11,4,2,3}
剩餘資源爲{11,4,2,3},滿足p0需求,將其加入安全序列,並更新後,剩餘資源變爲{15,4,2,4}
剩餘資源爲{15,4,2,4},滿足p2需求,將其加入安全序列,並更新後,剩餘資源變爲{16,5,2,6}

第二題

設系統進程爲p1、p2、p3,系統資源爲R1、R2、R3、R4

在這裏插入圖片描述
1)系統資源分配圖
這裏解釋一下:系統資源裏面的點表示擁有的單位數。
資源單位數→進程
進程→系統資源
在這裏插入圖片描述
2)不會發生死鎖,檢測結果如下圖所示:

這裏解釋一下:系統資源裏面的點表示擁有的單位數。
資源單位數→進程
進程→系統資源

第一步:將p3進程的邊簡化地:
這裏面就是R1的兩個單位指向p2進程,R3的一個單位指向p1進程,R4的一個單位指向p2進程
在這裏插入圖片描述
第二步:
將p3進程釋放資源後,再將p2進程可以獲得資源,能夠運行,簡化p2,如下圖所示:
在這裏插入圖片描述
第三步:
將p2進程釋放資源後,p1進程將獲得資源,繼續運行,簡化得到下圖:
在這裏插入圖片描述
得出結論:系統中所有的節點都是孤立的,所有能夠完全簡化,不會發生死鎖

3)如果檢測到死鎖,一般採用資源剝奪法、撤銷進程法和進程回退法使系統從死鎖中恢復。

資源剝奪法:掛起某些死鎖進程,並搶佔它的資源,將這些資源分配給其他死鎖進程,但是要防止被掛起的進程長時間得不到資源而飢餓。

撤銷進程法:強制撤銷部分、甚至全部死鎖進程,並剝奪這些進程的資源。

進程回退法:讓一個或多個死鎖進程回退到足以避免死鎖的地步。要求系統要記錄進程的歷史信息,設置還原點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章