《分布式操作系统》知识点(8~14)二
注:
(4)8 P160:(4)代表該道題屬于第4章的內容,8是題號(第8題),P160是該習題在書中的大體頁碼。
(4)8在實時分布式系統中,事件觸發和時間觸發系統的含義是什么,給出一個例子,并說明為什么動態調度適合于事件觸發系統,給出三種動態調度算法。P160、P166
答:事件觸發:在一個事件觸發的實時系統中,當一個重要的外部事件觸發時,它被傳感器察覺到,并導致與傳感器相連的CPU得到一個中斷請求。事件觸發系統因此就是中斷驅動的,多數的實時系統也是以這樣的方式工作的。
時間觸發:在時間觸發系統中,每△T毫秒產生一次時鐘中斷。在每一次時鐘滴答時,對(選定的)傳感器進行采樣,并且驅動(特定的)執行機構。中斷僅在時鐘滴答時發生。
動態調度不要求事先做多少工作,它是執行期間動態地作出決定。動態調度在運行期間決定下面運行哪一個進程。這樣更能容易的捕獲系統中的觸發中斷,因此動態調度適合于事件觸發系統。
三種動態調度算法:
第一種:比率單調算法:它是設計用來搶占式調度一個單一處理機上的沒有順序和互斥限制的周期性任務的。事先給每個任務分配一個與其執行頻率相等的優先級。運行時,運行程序總是選擇優先級最高的任務運行,如果有必要,可先暫停當前運行任務。
第二種:最早時限優先法:每當檢測到事件時,調度程序將其加入到等待任務隊列中。這個等待隊列根據這些任務的時限排序,最近的時限排在最前邊(對周期性任務時限就是它下一次發生時間)。然后,調度程序就從列表選擇地一個任務調度,即距它最后時限最近的一個。同比率單調算法一樣,它也產生最優結果,即使是對μ=1的任務集合也是一樣的。
?
(4)9主動復制容錯的典型例子是三模冗余容錯,說明某組成部件出錯和某表決器出錯時,是如何容錯的。如果在某一級上同時有兩個表決器出錯,其它所有部件和表決器均正常,能否屏蔽錯誤,為什么?如果服務器采用主動復制的方法會存在什么問題,如何解決?P152
答:每個設備復制三次,每級電路都設置三個表決器,每個表決器都有三個輸入和一個輸出。若兩個或三個輸入相同,輸出則等于輸入。若三個輸入各不相同,則輸出為不定值。
如果某部件出錯,三個表決器都能得到兩個好的(相同的)輸入和一個壞的輸出,這樣都能輸出正確值到下一級,這一部件的出錯影響被徹底屏蔽了。如果某表決器出錯,其他兩個表決器都能輸出正確的結果,下一級部件中只有出錯表決器對應的部件的輸入出錯,這樣再次經過三個正確的表決器,得到正確的輸出,出錯影響被屏蔽掉。
不能,因為每一級只有三個表決器,如果同時有兩個表決器壞掉的話,超過了三分之二的要求,不能輸出正確的結果,無法屏蔽錯誤。
主動復制時,讀請求不改變服務器狀態,但寫請求改變。一個重要的問題是需要多少復制才合適。要保證系統在K個部件出錯時仍能正常運行,則當錯誤是fail-silent型時需要K+1個部件,Byzantine型的至少需要2K+1個部件。一個容錯系統還需要進行一些概率分析。
?
(4)10使用主機后備容錯方法容錯的主要思想是:在任何一個時刻都有一臺服務器是主機,若主機失效了,后備的服務器將承擔其任務。試說明主機后備方法的工作原理及存在的問題,及解決辦法。P154
答:基本思想:在任一時刻都有一臺服務器是主機,它完成所有的工作。若這個主服務器失效了,后備的服務器將承擔其任務。
在RPC過程中,主機崩潰后產生情況如下:
1.如果主機在執行任務前崩潰,則沒有損失。客戶端會超時重發直到連上后備機,任務只被執行一次。
解決方案:客戶端只是在超時后,再次重新發送請求消息,直到發送一定次數后,或者因得不到響應而停止發送請求消息,或者它的請求分別得到主服務器和備份服務器的處理,并且只執行一次。
2.如果主機在執行任務后向后備機發送更新消息前崩潰,此時后備機接管,請求消息再次到來,則任務被執行2次。
解決方案:還沒有有效的解決方案,一般來說,在主服務器崩潰后,只正確執行一次請求消息的處理是非常困難的。
3.如果主機在后備機執行任務后自己發送響應消息前崩潰,則任務共被執行三次。一次主機完成,一次后備機完成,一次后備機接管時完成。如果請求消息帶有序號,則可以減少任務執行次數。
解決方案:若每個請求消息都帶有標志信息,那么請求消息只被執行兩次。一般來說,在主服務器崩潰后,只正確執行一次請求消息的處理是非常困難的,以至幾乎是不可能的。
?
(4)11一個典型的集中的、啟發式的處理機分配算法,即上-下算法。說明該算法的目標,并說明該算法的主要原理。P145
答:目標:讓一個等了很久的,沒有使用任何處理機的申請優先于已經占用了許多多處理機的申請。此為該算法的目標即公平的分配系統資源。
主要原理:該算法是一個不需要事前了解任何信息的啟發性算法。算法中有一個協調者,保存著一張使用情況的表,每個工作站在表中都有一個條目,初值為0。當有重要的時間發生時,將給協調者發信息以更新使用情況表。算法將根據使用情況表決定處理機的分配。這些決定發生在調度事件發生時:有進程請求處理機、處理機進入空閑狀態或者是發生了時鐘中斷。使用情況表中的記錄值可以為整數、零或是負數。整數表示用戶純粹是在使用系統資源,負數表示用戶需要系統資源,零則介于兩者中間。
?
(4)12 在支持多線程的系統中,可采用三種模型來組織多線程,詳細說明這三種模型。如果在不支持多線程系統中實現文件服務,如何構造文件服務器。P121、P122
答:派遣者/工作者模型:某一個線程作為派遣者,它從系統郵箱內讀出輸入請求,然后檢查請求,選擇一個空閑的工作者線程去處理它。然后派遣者喚醒睡眠的工作者。 工作者被喚醒后,它檢查共享塊緩沖區是否可以滿足這個請求。如不能滿足,給磁盤發送消息,要求所需的數據塊。且進入休眠狀態等待磁盤操作的完成.
團隊模型:所有線程都是批平等的,每個都獲得和處理自己的請求。沒有派遣者。如果工作來了不能處理,尤其是如果每個線程用來處理一種特殊的工作,可以維護一個隊列,掛起的作業保存在作業隊列中。線程在察看系統信箱前先察看作業隊列。
管道線模型:這種模型中第一個線程產生一些數據傳給下一個線程去處理。數據持續從一個線程傳到另一個線程,經過的每一個線程都進行處理。(生產者-消費者問題)
構造文件服務器:
另一種可能性是將服務器作為大的有限狀態機運行,當請求到來后有唯一的一個線程檢查它,如果緩存區能滿足,則運行之,但如果不能滿足,則必須向磁盤發送一條消息。
?
(3)13 在機器0上進程0在等待機器0上進程1所擁有的資源,進程1在等待機器1上進程2所擁有的資源,進程2在等待進程機器1上3,4所擁有的資源,進程3在等待機器2上進程5所擁有的資源,機器2上的進程5在等待機器0上進程0所擁有的資源,畫出簡化的資源圖并說明用Chandy-Misra-Hass提出的分布式死鎖檢測算法如何檢測死鎖,并打破死鎖。P113
答:資源圖:
檢測死鎖:進程0等待進程1,將調用Chandy-Misra-Has算法。此時,生成一個特殊的探測消息并發送給占用資源的進程。消息由三個數字構成:阻塞的進程,發送消息的進程,接收消息的進程,由0到1的初始消息包含三元組(0,0,1)。接到消息后,接受者檢查以確定它自己是否也在等待其它進程。如果是,那么消息就要被更新,第一個字段保持不變,第二個字段改為當前進程號,第三個字段改為等待的進程號。然后消息接著被發送到等待的進程。如果在等待多個進程,就需要發送多個不同的消息。不論資源時在本地還是在遠程,該算法都要繼續下去。如圖中我們可以看到標記為(0,1,2),(0,3,5),(0,5,0)的遠程消息。如果消息轉了一圈后又回到了最初的發送者,那么就說明存在一個有死鎖的環路系統。
打破死鎖:一種方法是使最初發送探測消息的進程自殺。然而若有多個進程同時調用了此算法,那就會出問題。如圖中假設進程0到5都同時阻塞,而且都初始化了探測消息,那么每個進程最終都會發現死鎖,并且因此而自殺。然而這是不必要的,終止掉一個進程就足夠了。
另一個算法是將每個進程的標識符添加到探索消息的末尾,這樣當它返回到最初的發送者時,完整的環路就可以列出來了。于是發送者就能看出那個進程的編號最大,可以將它中止或發送消息給它請求自殺。無論如何,若多個進程同時發現了同一個環路,它們就一定會選擇同一個犧牲者。
?
(3)14在分布式系統事務提交操作可能需要不同機器上的多個進程的協作,舉一個實際例子,并說明實現原子性提交的兩階段提交協議的基本思想。P108
答:例子:航空訂票系統
預定一張從A到D的機票:
(a)預定三個航班機票的事務
BEGIN_TRANSACTION
reserve? A_B
reserve? B_C
reserve? C_D
END_TRANSACTION
(b) 當第三個航班的機票預定失敗后事務中止
BEGIN_TRANSACTION
reserve A_B
reserve B_C
C_D full--->
ABORT_TRANSACTION
兩階段提交協議:
如上圖所示,兩階段提交協議的基本思想是有一個進程作為協調者,通常是執行事務的進程。在準備提交階段,協調者向日志中寫入Prepare,然后向所有服務器發送準備提交消息。服務器接收消息后,檢查自己是否準備提交,如果是,就向日志中寫入Ready,然后向協調者發送準備好消息。在提交階段,協調者接收所有響應后決定提交或終止。如果所有所有服務器都準備提交,則提交事務。如果有一個服務器未準備好,則終止事務。無論結果如何,協調者都會寫入日志,并發送決定消息。服務器接到消息后,也將結果寫入日志。并發送結束消息,完成整個過程。
總結
以上是生活随笔為你收集整理的《分布式操作系统》知识点(8~14)二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《分布式操作系统》知识点(1~7)一
- 下一篇: 《分布式操作系统》知识点(15~21)三