一種分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于分布式計(jì)算機(jī)系統(tǒng)同步設(shè)計(jì)技術(shù)領(lǐng)域,是一種分布式計(jì)算機(jī)系統(tǒng)中節(jié)點(diǎn)間時(shí)鐘同步的保證方法。
【背景技術(shù)】
[0002]傳統(tǒng)嵌入式容錯(cuò)計(jì)算機(jī)系統(tǒng)通常采用專用同步硬件電路設(shè)計(jì)、握手同步算法等方式實(shí)現(xiàn)系統(tǒng)節(jié)點(diǎn)間的時(shí)鐘同步,以滿足系統(tǒng)同步工作需求;但該方法在不同系統(tǒng)余度構(gòu)型下,同步硬件電路接口設(shè)計(jì)、同步算法等實(shí)現(xiàn)復(fù)雜,通用性較差,導(dǎo)致系統(tǒng)不易擴(kuò)展升級(jí)。
【發(fā)明內(nèi)容】
[0003]為了解決【背景技術(shù)】中所存在的技術(shù)問(wèn)題,本發(fā)明提供一種分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)間時(shí)鐘同步的保證方法,能夠可靠地對(duì)系統(tǒng)節(jié)點(diǎn)間進(jìn)行同步對(duì)齊,在應(yīng)用層建立統(tǒng)一的全系統(tǒng)時(shí)間基準(zhǔn),從而實(shí)現(xiàn)系統(tǒng)的同步、協(xié)調(diào)工作,適用于新型嵌入式分布式容錯(cuò)計(jì)算機(jī)系統(tǒng)的同步管理,實(shí)現(xiàn)系統(tǒng)同步工作,提高系統(tǒng)任務(wù)可靠性。
[0004]本發(fā)明的技術(shù)解決方案是:一種分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)同步方法,其特征在于:所述方法包括以下步驟:
[0005]I)節(jié)點(diǎn)配置初始化;
[0006]1.1)計(jì)算機(jī)節(jié)點(diǎn)分區(qū)操作系統(tǒng)的模塊調(diào)度表添加“啟動(dòng)調(diào)度”配置,其中“啟動(dòng)調(diào)度”中僅設(shè)置包含用于進(jìn)行初始同步的“同步分區(qū)”;
[0007]1.2)“同步分區(qū)”的長(zhǎng)度設(shè)置為T,若網(wǎng)絡(luò)周期時(shí)鐘為T',設(shè)置T為T'的整約數(shù);
[0008]1.3)在“啟動(dòng)調(diào)度”中掛接主時(shí)間框架開(kāi)始執(zhí)行時(shí)的擴(kuò)展掛鉤,并初始化start_time_tick = 0;
[0009]2)初始同步;
[0010]2.1)主時(shí)間框架擴(kuò)展掛鉤在每周期開(kāi)始階段讀取網(wǎng)絡(luò)同步狀態(tài)及網(wǎng)絡(luò)簇周期時(shí)ltcycle_time_tick;
[0011]2.2)根據(jù)網(wǎng)絡(luò)狀態(tài)值判斷網(wǎng)絡(luò)是否處于穩(wěn)定同步;
[0012]3)調(diào)度切換;
[0013]3.1)初始同步成功后,刪除主時(shí)間框架開(kāi)始執(zhí)行時(shí)的擴(kuò)展掛鉤,掛接分區(qū)切換擴(kuò)展掛鉤;
[0014]3.2)根據(jù)模塊調(diào)度表中的調(diào)度ID加載新的“工作調(diào)度”表,在下一個(gè)時(shí)鐘tick到來(lái)時(shí),切換到需要加載的新的“工作調(diào)度”中;需要加載的“工作調(diào)度”中配置專用于周期同步的“同步分區(qū)”;
[0015]4)周期同步;
[0016]4.1)在“工作調(diào)度”的每周期MTF內(nèi),分區(qū)切換擴(kuò)展掛鉤首先讀取網(wǎng)絡(luò)的同步狀態(tài),判斷以下兩個(gè)條件是否同時(shí)滿足:a)網(wǎng)絡(luò)是否處于穩(wěn)定同步狀態(tài);b)操作系統(tǒng)開(kāi)始調(diào)度“同步分區(qū)”;若不滿足進(jìn)行步驟4.2);若滿足進(jìn)行步驟4.3);
[0017]4.2)等待“同步分區(qū)”結(jié)束后,將用于對(duì)MTF計(jì)時(shí)的系統(tǒng)tick速率設(shè)置為缺省值;
[0018]4.3)讀取網(wǎng)絡(luò)周期時(shí)鐘tte_cycle_time,計(jì)算“同步分區(qū)”在MTF的偏移sync_phase,計(jì)算 MTF與網(wǎng)絡(luò)周期時(shí)鐘的偏移off se t_temp= ((sync_phase+mtf_durat1n_time)tte_cycle_time)%mtf_durat i on_t ime;
[0019]其中mtf _durat i on_t ime 為MTF 長(zhǎng)度;
[0020]4.4)判斷條件<^€861:_七611^)〈11^;1^_(111作1:;[011_1:;[1116/2是否成立,根據(jù)判斷結(jié)果設(shè)置修正標(biāo)識(shí),并當(dāng)偏移大于設(shè)置的偏差界限offset_bound時(shí),在系統(tǒng)允許的tick速率范圍內(nèi)對(duì)系統(tǒng)tick速率進(jìn)行修正,使當(dāng)前MTF內(nèi)的“同步分區(qū)”的長(zhǎng)度被“拉長(zhǎng)”或“縮短”;
[0021 ] 4.5)在“同步分區(qū)”結(jié)束時(shí),將tick速率重新設(shè)置為缺省值,周期同步結(jié)束;最終實(shí)現(xiàn)“同步分區(qū)”結(jié)束后,MTF時(shí)鐘與網(wǎng)絡(luò)周期時(shí)鐘、不同計(jì)算機(jī)節(jié)點(diǎn)間的MTF的同步。
[0022]上述步驟2.2)判斷TTE網(wǎng)絡(luò)是否處于穩(wěn)定同步的方式是:
[0023]2.2.I)若網(wǎng)絡(luò)未穩(wěn)定同步,貝Ij重新設(shè)置start_time_tick = O;
[0024]2.2.2)若網(wǎng)絡(luò)穩(wěn)定同步,則判斷網(wǎng)絡(luò)周期時(shí)鐘0}^16_1:;[1116_1:;^1<:〈8七31'1:_1:;[1116_tick是否成立;若不成立,則將start_time_tick賦值為cycle_time_tick ;若成立,則初始同步成功,此時(shí)節(jié)點(diǎn)“啟動(dòng)調(diào)度”的MTF時(shí)鐘與網(wǎng)絡(luò)周期時(shí)鐘偏差< T0
[0025]根據(jù)權(quán)利要求2所述的分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)同步方法,其特征在于:所述步驟
3.2)的“同步分區(qū)”長(zhǎng)度設(shè)置為T'',若網(wǎng)絡(luò)周期時(shí)鐘為T',設(shè)置T''為T'的整約數(shù)。
[0026]本發(fā)明的優(yōu)點(diǎn)是:
[0027]1.實(shí)現(xiàn)了分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)間的時(shí)鐘同步功能,對(duì)新型開(kāi)放式架構(gòu)的分布式容錯(cuò)計(jì)算機(jī)系統(tǒng)的時(shí)鐘同步管理、系統(tǒng)同步工作提供有效技術(shù)支撐。
[0028]2.分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)同步方法實(shí)現(xiàn)簡(jiǎn)單,配置靈活,擴(kuò)展性強(qiáng)。
[0029]3.分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)同步方法利用系統(tǒng)網(wǎng)絡(luò)時(shí)鐘實(shí)現(xiàn)節(jié)點(diǎn)間的時(shí)鐘同步,實(shí)現(xiàn)了同步與通信功能在系統(tǒng)網(wǎng)絡(luò)上的共棲,有效降低了系統(tǒng)復(fù)雜度和SWAP。
【附圖說(shuō)明】
[0030]圖1是本發(fā)明初始同步方法流程圖;
[0031]圖2(a)是本發(fā)明“分區(qū)”調(diào)度切換方法流程圖;
[0032]圖2(b)是本發(fā)明“任務(wù)”調(diào)度切換方法流程圖;
[0033]圖3是本發(fā)明周期同步方法流程圖;
【具體實(shí)施方式】
[0034]本發(fā)明是一種分布式計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)同步方法,分布式容錯(cuò)計(jì)算機(jī)系統(tǒng)的每一個(gè)計(jì)算機(jī)節(jié)點(diǎn)均配置多個(gè)調(diào)度模式,節(jié)點(diǎn)在上電初始化后,首先執(zhí)行“啟動(dòng)調(diào)度”,根據(jù)獲取的與本地計(jì)算機(jī)節(jié)點(diǎn)進(jìn)行通信的系統(tǒng)網(wǎng)絡(luò)同步狀態(tài),嘗試計(jì)算機(jī)節(jié)點(diǎn)在“啟動(dòng)調(diào)度”模式下的“任務(wù)周期”與系統(tǒng)網(wǎng)絡(luò)時(shí)鐘的快速初始同步;在初始同步成功后,切換“啟動(dòng)調(diào)度”到正常的“工作調(diào)度”中;在“工作調(diào)度”模式下,每個(gè)任務(wù)周期內(nèi)的“同步任務(wù)”會(huì)根據(jù)系統(tǒng)網(wǎng)絡(luò)的同步狀態(tài)、周期時(shí)鐘等信息修正“同步任務(wù)”的長(zhǎng)度,與系統(tǒng)網(wǎng)絡(luò)周期時(shí)鐘進(jìn)行直接的對(duì)齊,以達(dá)到在“同步任務(wù)”運(yùn)行完后各節(jié)點(diǎn)同步執(zhí)行“應(yīng)用任務(wù)”的目的,在應(yīng)用層建立統(tǒng)一的全系統(tǒng)時(shí)間基準(zhǔn)。該方法主要由初始同步、調(diào)度切換和周期同步實(shí)現(xiàn)。
[0035]初始同步:在計(jì)算機(jī)節(jié)點(diǎn)上電初始化后,節(jié)點(diǎn)根據(jù)配置運(yùn)行“啟動(dòng)調(diào)度”,在“啟動(dòng)調(diào)度”中執(zhí)行初始同步,初始同步利用本地參數(shù)實(shí)現(xiàn)在開(kāi)始下一個(gè)網(wǎng)絡(luò)任務(wù)周期時(shí),完成計(jì)算機(jī)節(jié)點(diǎn)與系統(tǒng)網(wǎng)絡(luò)周期時(shí)鐘的初始同步。在系統(tǒng)網(wǎng)絡(luò)穩(wěn)定同步的基礎(chǔ)上,該方法實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)任務(wù)周期內(nèi)完成初始同步,初始同步后的節(jié)點(diǎn)間時(shí)鐘偏差不大于“啟動(dòng)調(diào)度”周期長(zhǎng)度。“啟動(dòng)調(diào)度”與其他調(diào)度相比周期很短,并且“啟動(dòng)調(diào)度”通常設(shè)置為網(wǎng)絡(luò)任務(wù)周期的整約數(shù)。
[0036]調(diào)度切換:若采用分區(qū)操作系統(tǒng):在完成初始同步后,利用操作系統(tǒng)提供的刪除擴(kuò)展掛鉤、掛接分區(qū)切換掛鉤、調(diào)度設(shè)置等接口,實(shí)現(xiàn)在操作系統(tǒng)的下一個(gè)tick到來(lái)時(shí),快速將節(jié)點(diǎn)操作系統(tǒng)由“啟動(dòng)調(diào)度”模式切換到“工作調(diào)度”模式下,開(kāi)始執(zhí)行周期任務(wù)。其他情況:在完成初始同步后,直接由“啟動(dòng)調(diào)度”模式切換到“工作調(diào)度”模式中,執(zhí)行周期任務(wù)。
[0037]周期同步:在“工作調(diào)度”中,設(shè)置有一個(gè)“同步任務(wù)”,該任務(wù)專門用于執(zhí)行任務(wù)周期與系統(tǒng)網(wǎng)絡(luò)周期時(shí)鐘同步的同步算法并對(duì)任務(wù)周期進(jìn)行相應(yīng)修正。在每個(gè)任務(wù)周期內(nèi)的“同步任務(wù)”開(kāi)始時(shí),讀取系統(tǒng)網(wǎng)絡(luò)同步狀態(tài)和同步周期時(shí)鐘值等信息,根據(jù)網(wǎng)絡(luò)同步周期時(shí)鐘值、“同步任務(wù)”在任務(wù)周期中的偏移計(jì)算任務(wù)周期時(shí)鐘與系統(tǒng)網(wǎng)絡(luò)周期時(shí)鐘的偏差,并根據(jù)偏差狀態(tài)及偏差范圍選擇對(duì)用于計(jì)時(shí)的系統(tǒng)tick速率或系統(tǒng)時(shí)鐘進(jìn)行修正,實(shí)現(xiàn)“同步任務(wù)”長(zhǎng)度的修正,進(jìn)而達(dá)到“同步任務(wù)”結(jié)束時(shí)節(jié)點(diǎn)任務(wù)周期時(shí)鐘與系統(tǒng)網(wǎng)絡(luò)任務(wù)周期時(shí)鐘的同步,也即多個(gè)節(jié)點(diǎn)間時(shí)鐘的同步對(duì)齊。注意若在“同步任務(wù)”中對(duì)t i ck速率進(jìn)行了修正,則在“同步任務(wù)”結(jié)束后,需要將系統(tǒng)tick速率設(shè)置為缺省值