1. 程式人生 > >第十五章—分散式程序管理【計算機作業系統】

第十五章—分散式程序管理【計算機作業系統】

15.1 討論實現程序遷移的原因。

負載共享:通過將程序從負載較重的系統遷移到負載較輕的系統,負載就會得到平衡,從而提高整體效能。通訊效能:可以將互動密集的多個程序移動到同一節點上,以減少因為它們之間的互動而帶來的通訊開銷。同樣,當一個程序在某些檔案或某組檔案上執行資料分析,且檔案的大小比程序要大很多時,將該程序移動到資料端也許是更有利的。可用性:需要長時間執行的程序,在得到錯誤的預先通知時,或者在預定的關機時間之前,為了能夠存活下來,可能需要遷移到其他機器中。如果作業系統提供了這樣的通知,則那些需要繼續執行的程序可以遷移到另一個系統上,或者保證在稍後的某個時間在當前系統上能重新啟動。特殊功能的使用:程序的遷移可以充分利用特定節點上獨特的硬體或軟體功能。

15.2 在程序遷移過程中,程序地址空間是如何處理的?

下列策略可能被採用:Eager(all):在遷移時轉移整個地址空間。

預先複製(precopy):程序繼續在源節點上執行,而地址空間已經複製到了目標節點上。在預先複製的過程中,源節點上的某些頁有可能又被修改,這些頁必須被複制第二次。

Eager(dirty):僅僅轉移那些位於主存中且已被修改了的地址空間的頁。虛地址空間的所有其他塊將在需要時才轉移。

基於引用的複製(copy-on-reference):這是Eager(dirty)的變體,只有在引用某頁時,該頁才被取入。

重新整理(flushing):通過把髒頁寫回磁碟,該程序的頁可以從源機器的主存中清除。這樣,在需要時可以從磁碟訪問到頁,而不是從源節點的儲存器中訪問。

15.3 搶佔式和非搶佔式程序遷移的動機是什麼?

非搶佔式程序遷移對於負載平衡是很有用的,它的優點是能夠避免全面性程序遷移的開銷,缺點是該方法對於負載分佈的突然變化反應不佳。

15.4 為什麼不可能確定真正的全域性狀態?

因為系統之間的通訊延遲,不可能在系統範圍內維護一個所有系統都隨時可用的時鐘。而且,維護一箇中央時鐘並讓所有本地時鐘與之保持精確同步,這在技術上也是不現實的,因為經過一段時間後,在各個本地時鐘之間就會產生一些偏差,這將導致同步的丟失。

15.5 集中式演算法和分散式演算法所實行的分散式互斥有何區別?

在完全集中式演算法中,一個節點被指定為控制節點,它控制對所有共享物件的訪問。當任何程序請求對一個臨界資源進行訪問時,就向本地資源控制程序傳送一個請求,這個程序接著向控制節點發送一條請求訊息,當共享物件可用時,將返回一條許可訊息。當程序結束使用資源後,向控制節點發送一條釋放訊息。

在分散式演算法中,互斥演算法涉及到每個離散的實體之間的同步合作。

15.6 定義兩種型別的分散式死鎖。

在資源分配中產生的死鎖以及由於訊息通訊而產生的死鎖。