專利名稱:一種多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法
技術領域:
本發(fā)明涉及計算機技術領域,尤其涉及一種多核平臺上控制系統(tǒng)配置并發(fā)與同步
的方法。
背景技術:
隨著CPU的換代升級,多核CPU已經進入到了商用階段,在PC市場及網(wǎng)絡設備市 場均占有了一席之地。這就要求各個廠商需要在新的多核平臺上開發(fā)產品或者將以前的軟 件移植到多核平臺上來提升自身產品的競爭力。 在多核平臺上,對于一些共享資源的并發(fā)訪問問題是整個體系結構中的關鍵技 術。在現(xiàn)有技術中,對于多核平臺上的共享資源的并發(fā)訪問大多是基于下面一些鎖(或它 們的變形)的保護來實現(xiàn)的,具體包括 讀寫鎖(rwlock):對于同一資源可以同時上多個讀鎖,從而可以并行執(zhí)行這些代
碼;對于同一資源在同一時間只能上一個寫鎖,不能并行訪問要保護的資源。
自旋鎖(spin_l0Ck):如果上鎖不成功,就一直等下去,直到上鎖成功為止。它是
一種互斥鎖,在同一時間只能有一個訪問者能夠獲得自旋鎖。 RCU(Read-Copy Update)鎖一種讀_拷貝修改的鎖,它是基于其原理命名的。對 于被RCU保護的共享數(shù)據(jù)結構,讀者不需要獲得任何鎖就可以訪問它,但寫者在訪問它時 首先拷貝一個副本,然后對副本進行修改,最后使用一個回調(callback)機制在適當?shù)?時機把指向原來數(shù)據(jù)的指針重新指向新的被修改的數(shù)據(jù)。等待適當時機的這一時期稱為 grace period (RCU周期),而CPU發(fā)生了上下文切換稱為經歷一個quiescent state (靜止 狀態(tài),在這個時期這個CPU讀到的數(shù)據(jù)保持一致性),RCU周期就是所有CPU都經歷一次靜 止狀態(tài)所需要的等待的時間。垃圾收集器就是在靜止狀態(tài)之后調用寫者注冊的回調函數(shù)來 完成真正的數(shù)據(jù)修改或數(shù)據(jù)釋放操作的。RCU實際上是一種改進的讀寫鎖,讀者在訪問被 RCU保護的共享數(shù)據(jù)期間不能被阻塞,這是RCU機制得以實現(xiàn)的一個基本前提,也就說當讀 者在引用被RCU保護的共享數(shù)據(jù)期間,讀者所在的CPU不能發(fā)生上下文切換,自旋鎖和讀寫 鎖都需要這樣的前提。寫者在訪問被RCU保護的共享數(shù)據(jù)時不需要和讀者競爭任何鎖,只 有在有多于一個寫者的情況下需要獲得某種鎖以與其他寫者同步。 目前在大型的系統(tǒng)中往往需要綜合運用上面的幾種鎖來實現(xiàn)共享資源的并發(fā)訪
問。綜合使用上面幾種鎖來實現(xiàn)共享資源的并發(fā)訪問有以下幾個不足之處 1)效率低,使用鎖就有開銷,如果有大量需要保護的資源那么鎖的開銷就會很
大; 2)實現(xiàn)復雜,對于一個大型的操作系統(tǒng),若使用鎖來保護的資源很復雜,則很容易 出現(xiàn)死鎖,鎖嵌套等問題; 3)不適合移植系統(tǒng),多核CPU是近幾年才大量商用的,對于那些從以前單核系統(tǒng)
的移植項目來說,使用鎖來保護以前那些從未考慮過并發(fā)的資源是非常困難的。 TOS(topsec operating system, T0PSEC操作系統(tǒng))系統(tǒng)的系統(tǒng)配置主要包括資源對象和策略對象,他們是由用戶配置添加的,在內存中維護來對轉發(fā)的數(shù)據(jù)進行匹配,并 可以保存在存儲介質上。TOS控制系統(tǒng)主要用于對系統(tǒng)配置進行維護,包括增加、刪除、修改 系統(tǒng)配置,由于控制系統(tǒng)對系統(tǒng)配置是互斥訪問的,所以這些操作不會出問題。TOS轉發(fā)系 統(tǒng)分別運行在多個核上,主要用于讀取系統(tǒng)配置并對轉發(fā)的數(shù)據(jù)進行匹配,運行在多個核 上的轉發(fā)系統(tǒng)對系統(tǒng)配置是讀共享的,它們之間也不會出問題。因此需要解決的是TOS控 制系統(tǒng)和TOS轉發(fā)系統(tǒng)之間對系統(tǒng)配置的并發(fā)訪問的問題。然而由于TOS控制系統(tǒng)和TOS 轉發(fā)系統(tǒng)是由以前在單核平臺上開發(fā)的TOS系統(tǒng)移植到多核平臺上得到的,因此并不能采 用上述通過綜合運用幾種鎖的方式來實現(xiàn)系統(tǒng)配置的并發(fā)訪問。
發(fā)明內容
本發(fā)明提供一種多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法,用以實現(xiàn)TOS控制 系統(tǒng)和TOS轉發(fā)系統(tǒng)對系統(tǒng)配置的并發(fā)訪問。
本發(fā)明所述技術方案如下 —種多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法,包括步驟 A、 TOS控制系統(tǒng)在啟動時加載用于互斥修改的系統(tǒng)配置,并初始化臨時系統(tǒng)配置
的基地址和用于共享訪問的系統(tǒng)配置的基地址; B、在用戶操作系統(tǒng)配置時,若用戶命令是修改命令,則TOS控制系統(tǒng)通過互斥信
號完成對用于互斥修改的系統(tǒng)配置的對象實例的修改,在修改完成后,啟動克隆定時器并
釋放互斥信號,若在預設時間間隔內沒有接收到新的修改命令,克隆定時器執(zhí)行; C、所述克隆定時器獲得互斥信號后,將用于互斥修改的系統(tǒng)配置的對象實例復制
為臨時系統(tǒng)配置的對象實例,復制完成后釋放互斥信號; D、所述克隆定時器將臨時系統(tǒng)配置的指針與共享訪問的系統(tǒng)配置的指針交換。
具體地,所述步驟D中,在指針交換完成后,經過一個RCU周期后所述克隆定時器 釋放臨時系統(tǒng)配置中的對象實例。 進一步地,所述步驟B中,若用戶命令是讀取命令,則T0S控制系統(tǒng)在獲得互斥信 號后讀取用于互斥修改的系統(tǒng)配置,將其顯示給用戶,在顯示完成后釋放互斥信號。
具體地,所述步驟B具體包括步驟 Bl、在接收到修改命令后,TOS控制系統(tǒng)獲得互斥信號,判斷克隆定時器是否已啟 動,若是,則刪除克隆定時器并將該克隆定時器的狀態(tài)記錄到本地,否則,將直接將該定時 器的狀態(tài)記錄到本地; B2、 T0S控制系統(tǒng)按照接收到的修改命令對用于互斥修改的系統(tǒng)配置的對象實例 進行相應的修改,若修改完成或本地記錄的克隆定時器的狀態(tài)為啟動狀態(tài),則啟動新的克 隆定時器并釋放互斥信號; B3、若在預設時間間隔內TOS控制系統(tǒng)沒有接收到新的修改命令,則克隆定時器 執(zhí)行,否則返回步驟B1。 進一步地,所述步驟D后還包括步驟 在指針交換完成后,經過一個RCU周期后,T0S轉發(fā)系統(tǒng)通過所述用于共享訪問的
系統(tǒng)配置的基地址訪問更新后的系統(tǒng)配置的對象實例。 較佳地,所述預設時間間隔為1秒。
具體地,所述用于互斥修改的系統(tǒng)配置和用于共享訪問的系統(tǒng)配置存儲于內存 中。
本發(fā)明有益效果如下 采用本發(fā)明所述技術方案后,在T0S控制系統(tǒng)修改用于互斥修改的系統(tǒng)配置的對 象實例時,只是先把修改后的用于互斥修改的系統(tǒng)配置的對象實例復制為臨時系統(tǒng)配置的 對象實例,在此過程中TOS轉發(fā)系統(tǒng)還是用未修改的用于共享訪問的系統(tǒng)配置一直在處理 轉發(fā)數(shù)據(jù)包,在系統(tǒng)配置復制完成后,TOS控制系統(tǒng)將臨時系統(tǒng)配置和用于共享訪問的系統(tǒng) 配置的指針交換一下,在交換完成后,等待一個RCU周期,TOS轉發(fā)系統(tǒng)就可以使用新的用 于共享訪問的系統(tǒng)配置了,這個過程是平滑過度的。本發(fā)明使得多核系統(tǒng)能夠安全、快速、 并行的訪問共享資源,T0S轉發(fā)系統(tǒng)不需要任何互斥開銷就可以并行訪問用于共享訪問的 系統(tǒng)配置。
圖1為本發(fā)明所述多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法的流程圖。
具體實施例方式
本發(fā)明的主要技術構思是在內存中存儲兩份系統(tǒng)配置(如防火墻配置),一份 是用于互斥修改的系統(tǒng)配置(FWJX)NFIG),另一份是用于共享訪問的系統(tǒng)配置(CL0NG_ CONFIG)。在TOS控制系統(tǒng)修改FW_C0NFIG的對象實例后,只是先把修改后的FW_C0NFIG的 對象實例復制為臨時系統(tǒng)配置(TMP_C0NFIG)的對象實例,在此過程中TOS轉發(fā)系統(tǒng)還是用 未修改的CL0NG_C0NFIG —直在處理轉發(fā)數(shù)據(jù)包,在系統(tǒng)配置復制完成后,TOS控制系統(tǒng)將 TMP_C0NFIG和CL0NG_C0NFIG的指針交換一下,在交換完成后,等待一個RCU周期,TOS轉 發(fā)系統(tǒng)就可以使用新的CL0NG_C0NFIG 了,這個過程是平滑的過度的,使得多核系統(tǒng)能夠安 全、快速、并行的訪問共享資源。 下面將結合附圖對本發(fā)明的具體實現(xiàn)過程予以進一步詳細的說明。 請參閱圖l,該圖為本發(fā)明所述多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法的流
程圖,其具體實現(xiàn)過程如下 步驟10、 TOS控制系統(tǒng)在啟動時加載FW_C0NFIG,并初始化TMP_CONFIG的基地址 和CL0NG_C0NFIG的基地址。 具體地,本發(fā)明實現(xiàn)過程中,TOS轉發(fā)系統(tǒng)是通過CL0NE_C0NFIG的基地址訪問系 統(tǒng)配置的,因此只有TMP_CONFIG的基地址和CL0NE_C0NFIG的基地址保持不變,才能保證 TOS轉發(fā)系統(tǒng)能夠正確訪問系統(tǒng)配置。 步驟11、在用戶操作系統(tǒng)配置時,TOS控制系統(tǒng)判斷接收到的用戶命令是修改命
令還是讀取命令,若是讀取命令,執(zhí)行步驟12,若是修改命令,執(zhí)行步驟13。 步驟12、 TOS控制系統(tǒng)獲得一個互斥信號,讀取FW_C0NFIG并將其顯示給用戶,在
顯示完成后釋放互斥信號。 步驟13、 TOS控制系統(tǒng)獲得一個互斥信號,判斷克隆定時器是否已啟動,若是,執(zhí) 行步驟14,否則,執(zhí)行步驟15。 本步驟中,克隆定時器啟動時 其狀態(tài)值為l,克隆定時器未啟動時,其狀態(tài)值為0。 步驟14、 T0S控制系統(tǒng)刪除克隆定時器并將該克隆定時器的狀態(tài)值1記錄到本地 變量state中,執(zhí)行步驟16。 步驟15、T0S控制系統(tǒng)將克隆定時器的狀態(tài)值0記錄到本地變量state中,執(zhí)行步 驟16。 步驟16、 TOS控制系統(tǒng)按照接收到的修改命令對內存中的FW_CONFIG的對象實例 進行相應的修改,若修改完成后或本地記錄的變量state為l,則啟動新的克隆定時器并釋 放互斥信號。 步驟17、判斷在新的克隆定時器啟動后的預設時間間隔內TOS控制系統(tǒng)是否接收 到了新的修改命令,若是,則返回步驟13,否則,執(zhí)行步驟18。
具體地,所述預設時間間隔可以為1秒。 步驟18、 TOS控制系統(tǒng)中的克隆定時器執(zhí)行,在獲得一個互斥信號后,將FW—
CONFIG的對象實例復制為TMP_CONFIG的對象實例,復制完成后釋放互斥信號。 步驟19、 TOS控制系統(tǒng)中的克隆定時器將TMP_CONFIG的指針與CLONG_CONFIG的
指針交換。 在指針交換完成后,經過一個RCU周期后克隆定時器釋放TMP_CONFIG的對象實 例,此時,TOS轉發(fā)系統(tǒng)即可通過CLONG_CONFIG的基地址訪問更新后的系統(tǒng)配置的對象實 例。 顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍 之內,則本發(fā)明也意圖包含這些改動和變型在內。
權利要求
一種多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法,其特征在于,包括步驟A、TOS控制系統(tǒng)在啟動時加載用于互斥修改的系統(tǒng)配置,并初始化臨時系統(tǒng)配置的基地址和用于共享訪問的系統(tǒng)配置的基地址;B、在用戶操作系統(tǒng)配置時,若用戶命令是修改命令,則TOS控制系統(tǒng)通過互斥信號完成對用于互斥修改的系統(tǒng)配置的對象實例的修改,在修改完成后,啟動克隆定時器并釋放互斥信號,若在預設時間間隔內沒有接收到新的修改命令,克隆定時器執(zhí)行;C、所述克隆定時器在獲得互斥信號后,將用于互斥修改的系統(tǒng)配置的對象實例復制為臨時系統(tǒng)配置的對象實例,復制完成后釋放互斥信號;D、所述克隆定時器將臨時系統(tǒng)配置的指針與共享訪問的系統(tǒng)配置的指針交換。
2. 如權利要求1所述的方法,其特征在于,所述步驟D中,在指針交換完成后,經過一個 RCU周期后所述克隆定時器釋放臨時系統(tǒng)配置中的對象實例。
3. 如權利要求1或2所述的方法,其特征在于,所述步驟B中,若用戶命令是讀取命令, 則T0S控制系統(tǒng)在獲得互斥信號后讀取用于互斥修改的系統(tǒng)配置,將其顯示給用戶,在顯 示完成后釋放互斥信號。
4. 如權利要求1或2所述的方法,其特征在于,所述步驟B具體包括步驟 B1、在接收到修改命令后,T0S控制系統(tǒng)獲得互斥信號,判斷克隆定時器是否已啟動,若是,則刪除克隆定時器并將該克隆定時器的狀態(tài)記錄到本地,否則,將直接將該定時器的狀 態(tài)記錄到本地;B2、 T0S控制系統(tǒng)按照接收到的修改命令對用于互斥修改的系統(tǒng)配置的對象實例進行 相應的修改,若修改完成或本地記錄的克隆定時器的狀態(tài)為啟動狀態(tài),則啟動新的克隆定 時器并釋放互斥信號;B3、若在預設時間間隔內TOS控制系統(tǒng)沒有接收到新的修改命令,則克隆定時器執(zhí)行, 否則返回步驟B1。
5. 如權利要求1所述的方法,其特征在于,所述步驟D后還包括步驟 在指針交換完成后,經過一個RCU周期后,TOS轉發(fā)系統(tǒng)通過所述用于共享訪問的系統(tǒng)配置的基地址訪問更新后的系統(tǒng)配置的對象實例。
6. 如權利要求1所述的方法,其特征在于,所述預設時間間隔為1秒。
7. 如權利要求1所述的方法,其特征在于,所述用于互斥修改的系統(tǒng)配置和用于共享 訪問的系統(tǒng)配置存儲于內存中。
全文摘要
本發(fā)明公開了一種多核平臺上控制系統(tǒng)配置并發(fā)與同步的方法,在TOS控制系統(tǒng)修改用于互斥修改的系統(tǒng)配置的對象實例時,只是先把修改后的用于互斥修改的系統(tǒng)配置的對象實例復制為臨時系統(tǒng)配置的對象實例,在此過程中TOS轉發(fā)系統(tǒng)還是用未修改的用于共享訪問的系統(tǒng)配置一直在處理轉發(fā)數(shù)據(jù)包,在系統(tǒng)配置復制完成后,TOS控制系統(tǒng)將臨時系統(tǒng)配置和用于共享訪問的系統(tǒng)配置的指針交換,在交換完成后,等待一個RCU周期,TOS轉發(fā)系統(tǒng)即可使用新的用于共享訪問的系統(tǒng)配置,這個過程是平滑過度的,本發(fā)明使得多核系統(tǒng)能夠安全、快速、并行的訪問共享資源。
文檔編號G06F15/177GK101770403SQ20081024112
公開日2010年7月7日 申請日期2008年12月30日 優(yōu)先權日2008年12月30日
發(fā)明者吳亞飚, 王震 申請人:北京天融信網(wǎng)絡安全技術有限公司