《分布式操作系统》知识点(1~7)一
注:
(6)1 ?P210:(6)代表該習題是第6章的內容,1是題號(第1題),P210是所在書中的大體頁數。
(6)1在交換式Dash多處理機系統中,為了保持緩存一致性,采用了Dash協議,某一簇中的一CPU寫一未緩存的數據塊,之后另外一簇的另外一CPU讀該數據塊。試詳細說明寫操作和讀操作是如何進行的。P210
答:寫操作:寫數據塊的CPU先在本地總線發送請求察看鄰近CPU的緩存中是否有該數據塊。鄰近CPU的緩存中沒有該數據塊,本次查找失敗,數據塊所在的其他地方,CPU發送信包到其宿主所在簇。這里塊的狀態為UNCACHED,標記為DIRTY并發送給請求者。
讀操作:讀數據塊的CPU首先檢查自己的內存,緩存中無此字,則在本地簇中發出請求,詢問本地簇的其他CPU緩存中是否有此字。數據塊不在任何簇的緩存中,CPU發一請求信包給該塊的宿主所在簇。宿主所在簇的目錄管理硬件檢查它的表以確定其狀態。此處狀態為DIRTY,則擁有DIRTY塊的簇將數據塊發送給請求簇,將其狀態改為CLEAN,它還要給宿主所在簇發回一個拷貝以更新存儲器,此時塊的狀態置為CLEAN。
?
(6 P207)2在基于總線的多處理機系統中,遵循write once協議,假設有C1,C2,C3,C4四個CPU,一操作序列如下:C1讀一字W1(只存在于共享存儲器中)、C1繼續讀該字、C2讀該字;C1修改該字、C3讀該字、C4讀該字。試詳細說明以上操作序列是如何執行的。
答:如下圖:
C1將將字W1的地址放到總線上,并在控制總線上加上“讀”信號,存儲器讀出需要的數據,將其放在總線上,在控制總線上加“準備好”信號,C1即可以讀到字W1。由于C1的緩存中含有字W1,所以C1第二次讀取時從緩存中讀取字W1。C2讀取字W1時,C1監聽到此讀操作,不做響應,內存響應C2 的請求,經過總線將字W1 發給C2。C1將新值寫入字W1,C2監聽到此寫操作,將自己的緩存項置為無效,C1的緩存塊狀態置為DIRTY,此時C1 擁有字W1的唯一拷貝,存儲器中的字已失效。C3發出字請求訪問信號,C1發現總線上的訪問請求,則發信號禁止存儲器響應,然后C1 提供C3需要的字并將自己的項置為無效。C3發現字來自其他的緩存而不是存儲器,則將其狀態置為DIRTY,則也相應地標示了自己的緩存項。同樣,C4發出字請求,C3發信號禁止存儲器響應,C3提供C需要的字并將自己的項置為無效,C4將自己的狀態置為DIRTY。
?
(5)3在分布式系統,為了獲得文件讀寫的效率,需要使用高速緩存,說明設置緩存的各種方法及用途。并說明解決一致性問題的四種算法及各種算法存在的問題。P185
答:設置緩存的方法和用途:
有三種可使用的選擇來精確定義高速緩存的位置。
第一個是在每個用戶進程自己的地址空間直接進行文件高速緩存。典型地,高速緩存由系統調用庫管理。當打開、關閉、讀和寫文件時,該庫只是保存最常用的文件,這樣當重新使用文件時,它已經是可用的了。當該進程退出時,所有被修改過的文件都回寫到服務器中。盡管這種模式的系統開銷很小,但它僅當單個進程重復地打開和關閉文件時才有效率。一個數據庫管理程序進程可能滿足這種要求,但是在通常的程序開發環境中,大多數進程對每個文件只讀一次,因此庫中的高速緩存是無益可獲的。
第二個是設置高速緩存的地方是在內核中。這里的缺點是在所有情況下都需要內核調用,甚至對于高速緩存命中。但事實是,高速緩存使進程獲益比補償多。例如,假設一個兩遍掃描編譯器作為兩個進程運行。第一遍掃描寫一個中間文件而由第一遍掃描來讀。當第一遍掃描進程結束后,該中間文件可能在高速緩存中,所以在第二遍掃描進程讀入時沒有必要進行服務器調用。
第三個是在一個單獨的用戶級高速緩存管理者進程中,用戶級高速緩存器管理者的優點是它保持了(微)內核獨立于文件系統編碼,因為它是完全孤立的,因此易十編程,并巨更加靈活。
解決一致性問題的四種算法:
1直接寫算法:(WRITE-THRONG算法)當修改一個高速緩存項(文件或塊)時,新的值保存在高速緩存中并立即寫到服務器。
2延遲寫:延遲寫操作使得語義變得不清楚。當另一個進程讀此文件時,它所得結果取決于時間選擇。延遲寫只好在運行效率和清晰的語義之間權衡。
3關閉時寫:僅當文件關閉后才將文件寫到服務器,與對話語義相配;
4集中控制算法:當打開一個文件時,打開該文件的機器向服務器發送一條消息。服務器保存誰打開了哪個文件以及打開是為了讀還是寫或者兩者兼有。如果文件是為讀而打開,允許其他進程為讀而打開,避免為寫而打開。如果某個進程為寫而打開一個文件,必須禁止所有其他訪問。當關閉文件時,必須報告,以便服務器更新。
四種算法存在的問題:
直接寫:有效,但不影響寫流量。高速緩存向任何客戶提供文件時,須先和服務器進行核對,這要付出一些時間代價。對寫來說,網絡傳輸是相同的,就像根本沒有高速緩存一樣。
延遲寫:效率較高,但可能語義不清。
關閉時寫:與會話語義相配。如果兩個已放入高速緩存的文件被依次回寫,第二個或覆蓋第一個。解決此問題的唯一方法是注意它是否比第一次出現時已好得很多了。
集中控制:UNIX語義,但不健壯,不能規模化。盡管發送自發消息是肯定可行的,但卻非常生硬,必須要小心。
?
(5)4給出實現文件復制的三種方法,并舉例說明更新復制文件的Gifford算法,并說明某些服務器崩潰時,應該采取什么措施。P190
答:文件復制的三種方法:
顯式文件復制,是為編程人員控制整個進程而用。當進程產生一個文件時,可以在其他服務器上生成另外的拷貝。如果目錄服務存在允許一個文件有多個拷貝,所有拷貝的網絡地址都可以和這個文件名聯系起來。
懶惰復制,只要在某個服務器上建立每個文件的一個拷貝,服務器自己在其他的服務器上也可自動生成副本。
用組復制文件,所有的寫系統調用同時傳送到所有的服務器。于是,其他的拷貝在原文件產生時就產生了。
Gifford算法即表決(voting)。基本思想:在讀或寫一個復制文件之前要求申請并獲得多個服務器的允許。服務器在改變文件時,將一個新的版本號和新的文件聯系起來。版本號用來該文件的版本。讀一個已有N個復制存在的文件時,客戶需要獲得一個讀法定數Nr,修改一個文件需要一個寫法定數Nw,Nr和Nw的值必須滿足約束條件Nr+Nw>N。即只有在適當數目的服務器參與時,文件才能被讀或寫。
舉例:例如,有5個服務器,客戶已確定它們中的下個有版本號8,則其他兩個的版本號不可能是9。因為任何從版本號8到版本號9的成功更新需要3個服務器同意,而不是兩個。
解決辦法:虛像表決(Voting With Ghosts)通過為每個已經崩潰的服務器建立一個沒有存儲器的虛擬服務器解決了這個問題。虛設者不允許出現在讀法定數中(畢竟它沒有任何文件),但它可以加入寫法定數中,在這種情況下,它只須去掉寫入的文件即可。只要有一個真實的服務器存在,寫操作就能成功。當一個崩潰的服務器重新啟動時,它必須獲得一個讀法定數來找到最新的版本。在它開始正常工作之前,它將為自己拷貝一份該拷貝。由于該算法和基本的表決算法.具有相同的特性,因此它是可行的。
?
(5)5 試說明舉例什么是有狀態服務器,什么是無狀態服務器,并對有狀態和無狀態服務器進行詳細的比較。P183
答:有狀態服務器:服務器應該保存兩個請求之間的客戶的狀態信息。畢竟,集中式操作系統保存了關于活動進程的狀態信息。
無狀態服務器:當客戶發送一個請求給服務器時,服務器完成請求,發送一個應答,然后從內部表中移出該請求的所有信息。在請求之間,服務器不保存具體客戶的信息。
為了更好地理解這個差別,我們考慮擁有打開、讀、寫和關閉文件通用命令的文件服務器。文件打開之后,服務器必須保存哪個客戶打開了哪個文件的信息。典型地,當一個文件打開時,客戶將獲得一個文件描述符或其他用于后續調用的編號,以便識別這個文件。當有請求到來時,服務器就使用.文件描述符來確定需要哪個文件。將文件描述符變換成文件本身的表就是狀態信息。
對于不保留狀態信息的服務器,每一個請求必須是獨立的。為了使服務器能夠工作,它必須包含全文件名和文件中的偏移址。此信息增加了消息的長度。
研究狀態信息的另一種方法是:如果服務器壞了并且它的所有表都永久性丟失了,將會發生什么情況,當服務器重新啟動時,它已不能再知道哪些客戶打開了哪些文件。以后對已打開文件進行讀與寫操作就會失敗,而且如果有可能的話,將完全由客戶決定恢復。其結果是,不保留狀態的服務器比保留狀態的服務器有助于更好地容錯。這是贊成前者的理由之一。
正如我們已提到的那樣,無狀態服務器在本質上有更多的容錯。不需要OPEN和CLOSE調用,這就減少了消息編號,特別對于那些整個文件用一次就可讀出的普通情況,服務器不用浪費空間來存放表。使用表時,如果太多的客戶一次打開太多的文件,則將表填滿,從而不能打開新的文件。最后對于狀態服務器,如在文件們一開始客戶出了故障,服務器就會處于困境中。如果它對此束手無策,它的表最終將充滿垃圾。如果它超時了還未打開文件,那么客戶因兩個請求之間等待時間太長將被拒絕服務,而校正程序就會失去校正功能。無狀態服務就不存在這些問題。
有狀態服務器也可以對這些問題進行處理。由于READ和WRITE消息并不是必須包含文件名,所以他可以以更短些。這樣就可使用更小的網絡帶寬。由于關于打開文件(在UNIX項中,i節點)的信息在文件關閉之前都可保存在主存儲器中,所以有較好的性能。由于人多數文件都是按順序讀的,可以預先讀信息塊減少延遲。如果一個客戶已用完時間片并且兩次發送了同一請求,例如APEEND ,那么用狀態信息(通過每一條消息的次序號)就可以很容易地檢測到,在無狀態操作的不可靠通信前,實現冪等性需要更多的努力。最后,在一個真正的無狀態系統中,要使文件鎖定是不可能的,因為建立鎖定的唯一效果是使狀態進入系統。在無狀態系統中,文件鎖定必須通過一個特定的鎖定服務器來完成。
?
(5)6 在分布式系統中,可支持上載/下載文件模式或遠程訪問模式,說明這兩種模式并進行比較。P174~P175
答:在上載/下載模式中,文件服務只提供兩種上要的操作:讀文件和寫文件。前一個操作是將整個文件從一個文件服務器傳送到提出i求的客戶;后一個操作是將整個文件從客戶傳送到服務器。因此這種概念模式是在任一方向上傳送整個文件。這些文件可以存儲在內存或本地的硬盤中,視需要而定。
上載/下載的優點是概念簡單。應用程序取得它們所需的文件,然后在本地使用它們。任何修改過的文件或新創建的文件在程序結束時都要將它回寫。使用這種模式不需要掌握復雜的文件接口,而且整個文件傳送也是高效的.,但是,客戶端必須具有足夠大的存儲空間來存儲所需的所有文件。而且,如果只需要文件的一小部分,移動整個文件是很浪費的。
文件服務的另一種類型是遠程訪問模式,在這種模式中,文件服務提供了大量的操作用于打開和關閉文件,讀寫文件的一部分,在文件中來回移動檢查和改變文件屬性,等等。而在上載/下載模式中,文件服務只提供物理存儲和傳送,在這里文件系統運行在服務器上而不是運行在客戶端。遠程存取模式的優點是在客戶端不需要很大的空間,與下又需要文件的一小部分時,不需要傳送整個文件。
?
(4)7 分布式協同一致算法的目標是使所有無故障處理機對待某些問題的意見達到一致,在3個正常處理機,2個出錯處理機的情況下,用Lamport算法能否達成一致,給出算法的具體步驟。P156
答:用Lamport算法不能達成一致,至少得5個正常的處理機才能達成一致。
在Lamport等的論文中,已證明了一個有m個處理機出錯的系統中要實現協同一致,只有當有2m + 1個正常處理機時才可能。處理機總數為3m+ 1。換種說法即是,只有大于2/3的處理機正常工作時,協同一致才是可能的。
Lamport具體算法的步驟:
1.每個將軍發送消息給其它將軍,聲明自己真實的軍隊人數
2.把第一步聲明的結果收集組成向量的形式。(b)
3.每個將軍將各自的向量傳遞給其它每個將軍。(c)
4.每個將軍檢查所有接收向量的第i個元素。若某個值占多數,放入結果向量中,否則,標記為UNKNOWN。
總結
以上是生活随笔為你收集整理的《分布式操作系统》知识点(1~7)一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《分布式操作系统》部分知识点整理
- 下一篇: 《分布式操作系统》知识点(8~14)二