分布計算系統學習隨筆 第五章同步和互斥

2022-07-31 13:33:10 字數 3560 閱讀 3054

5.1

1、資源管理方式

1)全集中管理方式:所有資源都由乙個服務員管理;

2)集中分布管理方式:乙個資源由乙個服務員管理;

3)全分布管理方式:乙個資源是由多個服務員共同管理。

2、多個服務員參加對同乙個資源進行控制的方式

1)順序方式:按某種順序,先由乙個服務員控制一段時間,之後再由另乙個服務員控制一段時間。

2)分工方式:由不同的服務員併發或順序地控制同一資源執行不同的活動。

3)民主方式:所有服務員共同協商一致對同一資源執行每個管理活動。

5.21、同步機構在互斥控制中的作用是對活動的執行進行排序。同步機構的目的就是給程序提供某種手段,使系統保持一致狀態。

2、分布計算系統的計算方式分為三種:

1)完全複製的計算。任何操作所激發的每個活動必須由所有的消費者共同處理,要求所有的活動均應完成。這時同步機構的目的是保證消費者處理活動的次序必須相同。

2)完全分割的計算。乙個操作所激發的不同活動由不同的消費者分別獨自處理。在這種情況下,同步機構的目的是保證所有相互干擾的活動成為有序的,使得該操作保持原子性(要麼完成操作,要麼乾脆不發生)。

3)分割和部分複製的計算。乙個操作所激發的活動中,某些是由不同的消費者獨自處理的,某些操作是由一些消費者共同處理。它兼有前面兩種計算形式的特點。對於不同的計算方式,同步機構的目的和要求也是不同的。

3、物理時鐘的同步過程:

1)a通過網路向b傳送請求;

2)b讀取本地時鐘值;

3)b的時鐘值通過網路傳遞給a;

4)按照網路所需的傳輸延遲對b的時鐘值進行校正;

5)比較a的時鐘值和b的時鐘值。

4、集中式物理時鐘的實現方式:基於廣播的方式、請求驅動的方式。

5、邏輯時鐘可以給分布計算系統中的事件乙個唯一的排序。邏輯時鐘的本質是基於lamport定義的「在先發生關係」 。

6、標量邏輯時鐘:

每個程序pi有乙個邏輯時鐘lci,lci被初始化為init(init≥0)並且它是乙個非減的整數序列。程序pi傳送的每個報文m都被標上lci的當前值和程序的標號i,從而形成乙個三元組(m,lci,i)。任何乙個邏輯時鐘lci基於以下兩條規則更新它的邏輯時鐘值:

1)當發生乙個事件(乙個外部傳送或內部事件)之前,我們更新lci: lci:=lci+d (d>0)

2)當收到乙個帶時間戳的報文(m,lcj,j)時,我們更新lci: lci:=max(lci,lcj)+d (d>0)

7、向量邏輯時鐘:

在向量邏輯時鐘中,每個程序pi和乙個時間向量lci[1,…,n]相關聯,其中

1)向量元素lci[i]描述了程序pi的邏輯時間進展情況,即自身的邏輯時間進展情況;

2)向量元素lci[j]表示程序pi所知的關於程序pj的邏輯時間進展情況;

3)向量lci[1,…,n]組成程序pi對於邏輯全域性時間的區域性檢視。

任何乙個邏輯時鐘lci基於以下兩條規則更新它的邏輯時鐘值:

1)當發生乙個事件(乙個外部傳送或內部事件)之前,pi更新lci[i]: lci[i]:=lci[i]+d (d>0)

2)每個報文捎帶傳送方在傳送時的時鐘向量,當收到乙個帶時間戳的報文(m,lcj,j)時,pi更新lci: lci[k]:=max(lci[k],lcj[k]) 1≤k≤n lci[i]:= lci[i]+d (d>0)

5.31、全域性狀態的獲取(快照演算法):

2)當接收者q通過它的輸入通道c收到乙個標誌,它將依據不同條件執行以下不同操作:

b)如果q已經記錄了自己的區域性狀態,通過通道c收到的標誌用來指示q應該記錄通道的狀態。通道的狀態是q記錄它的區域性狀態以來到收到這個標誌前所收到的報文系列。

3)如果乙個程序已經沿它的每個輸入通道接收到乙個標誌,並對每個標誌進行了處理,就稱它已經完成了它的那部分演算法。

4)乙個程序的區域性狀態,連同它的所有輸入通道的狀態將被傳送到這個快照的發起程序。

2、一致性定理:乙個檢查點集s,其中每個檢查點屬於不同的程序,它們屬於同乙個一致性的全域性狀態當且僅當s中不存在這樣的檢查點,它有一條到s中任何其他檢查點(包括它自身)的z字形路徑。

推論:1)檢查點c可以屬於乙個一致性全域性狀態當且僅當c不屬於乙個z字形迴圈;

2)屬於不同程序的兩個檢查點a和b,它們可以屬於同乙個一致性全域性狀態當且僅當

a)沒有包括a或b的z字形迴圈;

b)在a和b之間不存在z字形路徑。

5.41、互斥問題就是定義一些基本的操作來解決共享資源的多個併發程序的衝突問題。

2、互斥演算法的主要目標是保證在任乙個時刻只能有乙個程序訪問臨界區。乙個正確的互斥演算法必須避免衝突(死鎖和餓死)和保證公平性。為此,演算法應滿足以下三個條件:

1)已獲得資源的程序必須先釋放資源之後,另乙個程序才能得到資源;

2)不同的請求應該按照這些請求的產生順序獲得滿足,請求應該按照某種規則進行排序,例如使用邏輯時鐘確定請求的順序;

3)若獲得資源的每個程序最終都釋放資源,則每個請求最終都能滿足。

3、lamport時間戳互斥演算法由以下5條規則組成 :

1)乙個程序pi如果為了申請資源,它向其它各個程序傳送具有時間戳tm:pi的申請資源的報文,並把此報文也放到自己的申請佇列中;

2)乙個程序pj如果收到具有時間戳tm:pi的申請資源的報文,它把此報文放到自己的申請佇列中,並將向pi傳送乙個帶有時間戳的承認報文。如果pj正在臨界區或正在傳送自己的申請報文,則此承認報文要等到pj從臨界區中退出之後或pj傳送完自己的申請報文之後再傳送,否則立即傳送;

3)乙個程序pi如果想釋放資源,它先從自己的申請佇列中刪除對應的tm:pi申請報文,並向所有其他程序傳送具有時間戳的pi釋放資源的報文;

4)乙個程序pj如果收到pi釋放資源的報文,它從自己的申請佇列中刪除tm:pi申請報文;

5)當滿足下述兩個條件時,申請資源的程序pi獲得資源:

a)pi的申請佇列中有tm:pi申請報文,並且根據時間戳它排在所有其它程序發來的申請報文前面;

b)pi收到所有其它程序的承認報文,其上面的時間戳值大於tm。

4、ricart-agrawala互斥演算法

1)乙個程序申請資源時向所有其他程序發出申請報文;

2)其它程序收到申請報文後若不在臨界區並且自己未申請進入臨界區,或者自己雖然發出了申請報文,但自己的報文排在收到的申請報文之後,則回答表示同意;

3)申請資源的程序僅在收到所有程序的回答報文後才進入臨界區使用資源;

4)乙個程序使用完資源後,它向所有未給回答的其它申請傳送回答報文。

5、maekawa互斥演算法 

請求子集:在maekawa互斥演算法中,乙個程序p在發出申請報文後,不用得到所有其他程序的回答,而只須得到乙個程序子集s中的所有程序的回答即可進入臨界區。稱s是p的請求子集。假設ri和rj分別是程序pi和pj的請求子集,要求ri∩rj≠null。

1)當程序pi請求進入臨界區時,它只向ri中的程序傳送請求報文。

2)當程序pj收到乙個請求報文時,如果它自上一次臨界區釋放後還沒有發出過回答報文給任何程序,且自己的請求佇列中無任何請求,它就給該請求報文乙個回答。否則,請求報文被放入請求佇列中。

3)程序pi只有收到ri中的所有程序的回答後,才能進入臨界區。 在釋放臨界區時,程序pi只給ri中的所有程序傳送釋放報文。

6、自穩定系統:乙個系統,如果無論它的初始狀態是什麼,總是能在有限的步驟內達到乙個合法的狀態,那麼它是自穩定的。

第五章隨筆

開發板是開發和學習嵌入式技術的主要硬體裝置,我們可以在pc上開發 linux 驅動,並且重新編譯成 arm架構的 linux 驅動模組。但是做種都是要在開發板上進行測試的。在這一章中了解到了 s3c6410 是一種低功耗,高價效比的 risc 精簡指令集計算機 處理器,他是基於 arm11 核心。客...

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

第五章 系統呼叫

系統呼叫在使用者程序和硬體裝置之間新增了乙個中間層。該層的作用有三個 系統呼叫是使用者空間訪問核心的唯一手段 除異常和陷入外,它們是核心唯一的合法入口,實際上其它裝置檔案和 proc之類的方式,最終也還是要通過系統呼叫進行訪問。一般情況下,應用程式通過使用者空間時線的應用程式設計介面 api 而不是...