系统架构设计师考试知识点整理-4:死锁问题、银行家算法、管程与线程
死鎖問題
1.死鎖是指多個進(jìn)程之間相互等待對方的資源,而在得到對方資源之前又不釋放自己的資源所造成的循環(huán)等待的現(xiàn)象。
2.死鎖產(chǎn)生的根本原因在于系統(tǒng)提供的資源少于并發(fā)進(jìn)程所要求的該類資源數(shù)。
3.死鎖產(chǎn)生的必要條件
(1)互斥條件:即一個資源每次只能被一個進(jìn)程使用。
(2)保持與等待條件:有一個進(jìn)程已經(jīng)獲得了一些資源,但因請求其他資源被阻塞時,對已經(jīng)獲得的資源保持不放。
(3)不可搶占條件:有些系統(tǒng)資源是不可搶占的,當(dāng)某個進(jìn)程已獲得這種資源后 ,系統(tǒng)不能強(qiáng)行收回,只能由進(jìn)程使用完自己釋放。
(4)循環(huán)等待條件:若干個進(jìn)程形成環(huán)形鏈,每個都占用對方要申請的下一個資源。
?
銀行家算法
1.銀行家算法是指在分配資源之前先看清楚資源分配后是否會導(dǎo)致系統(tǒng)死鎖,如果會死鎖,則不分配,否則就分配。
2.按照銀行家算法的思想,當(dāng)進(jìn)程請求資源時,系統(tǒng)將按如下原則分配資源:
(1)當(dāng)一個進(jìn)程對資源的最大需求量不超過系統(tǒng)中的資源數(shù)時可以接納該進(jìn)程。
(2)進(jìn)程可以分期請求資源,但請求的總數(shù)不能超過最大需求量。
(3)當(dāng)系統(tǒng)現(xiàn)有的資源不能滿足進(jìn)程尚需資源數(shù)時,對進(jìn)程的請求可以推遲分配,但總能使進(jìn)程在有效的時間里得到資源。
(4)當(dāng)系統(tǒng)中現(xiàn)有的資源能滿足進(jìn)程尚需資源數(shù)時,必須測試系統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源數(shù),若能滿足則按當(dāng)前的申請量分配資源,否則也要推遲分配。
解決死鎖的策略
1.死鎖預(yù)防:破壞導(dǎo)致死鎖必要條件中的任意一個就可以預(yù)防死鎖。例如,要求用戶申請資源時一次性申請所有的資源,這就破壞了保持和等待條件。預(yù)防通常會降低系統(tǒng)的效率。
2.死鎖避免:避免是指進(jìn)程在每次申請資源時判斷這些操作是否安全,例如:使用銀行家算法。死鎖避免算法的執(zhí)行會增加系統(tǒng)的開銷。
3.死鎖檢測:死鎖預(yù)防和避免都是事前措施,而死鎖的檢測則是判斷系統(tǒng)是否處于死鎖狀態(tài),如果是,則執(zhí)行死鎖解除策略。
4.死鎖解除:這是與死鎖檢測結(jié)合使用的,它使用的方式就是剝奪。即將,某進(jìn)程所擁有的資源強(qiáng)行收回,分配給其他的進(jìn)程。
?
管程與進(jìn)程
1.管程由管程名、局部子管程的變量說明、使用共享資源并在數(shù)據(jù)集上進(jìn)行操作的若干過程、對變量賦初值的語句等4個基本部分組成。
2.每一個管程管理一個臨界資源,當(dāng)有幾個進(jìn)程調(diào)用某管程時,僅允許一個進(jìn)程進(jìn)入管程,其他調(diào)用者必須等待,也就是申請進(jìn)程必須互斥地進(jìn)入管程。
3.線程是進(jìn)程的活動部分,是處理器分配資源的最小單位,它可以共享進(jìn)程的資源與地址空間。
?
?
總結(jié)
以上是生活随笔為你收集整理的系统架构设计师考试知识点整理-4:死锁问题、银行家算法、管程与线程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Winform中给DataGridVie
- 下一篇: Winform中DevExpress的T