網路同步時鐘,時間源,電腦時鐘校對—京準電子科技
網路同步時鐘,時間源,電腦時鐘校對—京準電子科技
網路同步時鐘,時間源,電腦時鐘校對—京準電子科技
咨詢我京準電子科技,請+官微 ahjzsz
因為分布式系統使用分布式演算法,所以它的同步機制比集中式系統更為復雜,在集中式系統中能夠做到的,在某一位置上能集收到系統的所有資訊,然后由某些行程檢測這些資訊,再做出同步決策,而這在分布式系統中常常是不可能做到的,分布式演算法一般有以下特點:
1)相關資訊分布在多臺機器上,
2)行程只根據本地可用的資訊做出決策,
3)應避免系統中單機失效,
4)沒有公共時鐘或其他精確的全域時間源,
前面三點都是說在處理程序中的單個點上無法收集到系統的所有資訊,例如,在做資源分配(以不會出現死鎖的方式分配I/O設備)時,通常不應將所有的IO請求發送給一個管理行程.管理行程檢查所有的I/O請求,根據其設備表中的資訊決定滿足請求或拒絕請求,在大系統中,將所有的請求發送給單個管理行程,會使這個行程的負擔過重,而且象這樣的單機失效會使整個系統變得不可靠,理想情況下,分布式系統應該比單機更可靠,如果分布式系統中某臺機器停止作業,剩余的機器應該能夠繼續完成系統功能,最不希望看到的是,由于某臺機器的失敗(如資源分配器)導致許多其他機器(如它的客戶)終止作業,為了在沒有集中控制的情況下實作同步,需要采取與傳統作業系統不同的方式,
上面列出的第4點也很重要,在集中式系統中,時間是很明確的,每個行程要知道當前時間,只要執行一個系統呼叫,作業系統內核就會回傳當前系統時間給行程,如果行程A查詢了系統時間,稍后行程B也去查詢系統時間,那么行程B得到的時間將在行程A得到的時間值之后(也可能相等),肯定不會在此之前,分布式系統中,要達到這種時間的一致性不是件簡單的事,
作為一個簡單例子,考慮一下缺乏全域一致的時間對UNIX中make程式的意義,在UNIX中,大型程式通常分割成多個源檔案,這樣在修改某個檔案時只要編譯這一個檔案,而不是編譯所有的檔案,如果程式有一百個檔案,則不需因為有一個檔案發生了較大的變化而重新編譯所有檔案,從而大大加快了程式員作業的速度,
通常,make程式的作業方式很簡單,程式員在修改源檔案后,啟動nla~e,Make程式檢查源檔案及與它相應的目標檔案的最后修改時間,如果源檔案input.C的最后修改時間為2151,而相應目標程minput.o的最后修改時間為2150,make程式就可以確定在創建input.o后,修改了源檔案input.C,因此要重新編譯源檔案input.C,相反,如果output.c的最后修改時間為2144,而output,o的最后改時間為2145,就不需要重新編譯output,c了,Make程式遍歷所有的源檔案,找
出需要重新編譯的檔案,呼叫編譯器編譯這些檔案,
現在,想象在沒有全域—致時間的分布式系統中執行make程式,假設ouput.o的最后修改時間還是2144,隨即修改了源檔案output.c,但是由于編輯output.c的機器的時鐘慢,所以修改后output.c的最后時間被指定為2143,如圖11-1所示.這時,make程式就不會重新編譯output.c結果,生成的可執行檔案就包括由舊的源檔案生成的目標檔案和新的源檔案產生的目標檔案, 這樣,程式的運行就會存在問題,而程式員要在代碼中找到問題的出處,也是大傷腦筋的事,
上面我們看到,時間是人們考慮問題的基礎,時鐘之間的不同步會產生戲劇性的結果,因此,以“分布系統中的所有時鐘可能同步嗎?”這樣一個簡單問題開始研究同步是比較合適的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21008.html
標籤:其他
