第十五章—分佈式進程管理【計算機操作系統】

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

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

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

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

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

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

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

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

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

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

15.4 爲什麼不可能確定真正的全局狀態?

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

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

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

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

15.6 定義兩種類型的分佈式死鎖。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章