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