国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      進程更新方法和裝置的制造方法_2

      文檔序號:9865337閱讀:來源:國知局
      靈活的問題,進而達到了提高進程更新靈活性的效果。
      [0039]進一步地,在第一共享內存塊處于被調用狀態(tài)時更新處于未被調用狀態(tài)的第二共享內存塊中的鍵-值數據之后,本發(fā)明實施例的進程更新方法還包括:將第一共享內存塊由被調用狀態(tài)轉換為未被調用狀態(tài),并將更新后的第二共享內存塊由未被調用狀態(tài)轉換為被調用狀態(tài)塊。在對第二共享內存塊中的鍵-值數據進行更新,實現對進程的在線更新后,通過對第一共享內存塊和第二共享內存塊的調用狀態(tài)進行切換,實現對進程的檢查更新。
      [0040]優(yōu)選地,在獲取共享內存組的狀態(tài)信息之前,本發(fā)明實施例的進程更新方法還包括:將共享內存組中的每個共享內存塊均劃分為第一存儲區(qū)域、第二存儲區(qū)域和第三存儲區(qū)域,圖3是根據本發(fā)明實施例的進程更新方法中共享內存組的一種結構示意圖,如圖3所示,第一共享內存塊服務于更新進程LI,該第一共享內存塊包括第一存儲區(qū)域All、第二存儲區(qū)域A12和第三存儲區(qū)域A13 ;第二共享內存塊服務于服務進程L2,該第二共享內存塊包括第一存儲區(qū)域A21、第二存儲區(qū)域A22和第三存儲區(qū)域A23。然后,存儲用于查找鍵-值數據的查找數據至第一存儲區(qū)域,并存儲鍵-值數據中的第一數據至第二存儲區(qū)域,以及存儲鍵-值數據中的第二數據至第三存儲區(qū)域,其中,第一數據和第二數據組成鍵-值數據,在本發(fā)明實施例中,第一數據是鍵-值數據中的key數據,第二數據是鍵-值數據中的value數據,查找數據是對鍵-值數據進行md5Sum(key) % N散列運算,得到的數據,該數據可以存儲在第一存儲區(qū)域的Hash桶中,S卩,以Hash表對鍵-值數據進行組織,共享內存塊的三個存儲區(qū)域依次分別為Hash Area、Node Area和Data Area。
      [0041]其中,Hash Area由n個Hash桶組成的,一對鍵-值數據通過md5sum(key) % N的算法散列運算后,存儲到到其中一個Hash桶內,散列運算過程中key沖突通過開鏈法解決。圖4是根據本發(fā)明實施例的進程更新方法中共享內存組的另一種結構示意圖,如圖4所示,示意性示出了第一存儲區(qū)域包括η個Hash桶(HB1,HB2,...,HBn),其中,HBl中存儲有兩對鍵-值數據(KN1-V1和KN2-V2)的散列運算結果,HB2中存儲有一對鍵-值數據(KN3-V3)的散列運算結果。
      [0042]Node Area存儲鍵-值數據中的key數據。在將共享內存組中的每個共享內存塊均劃分為第一存儲區(qū)域、第二存儲區(qū)域和第三存儲區(qū)域之后,本發(fā)明實施例的進程更新方法還包括:確定第二存儲區(qū)域中用于存儲第二數據的字節(jié)長度為預設定長,其中,存儲鍵-值數據中的第一數據至第二存儲區(qū)域包括:將第一數據的長度轉換為預設定長;以及存儲轉換為預設定長后的第一數據至第二存儲區(qū)域。即,為每對儲鍵-值數據分配一個定長的字節(jié)來保存鍵-值數據中的key數據和value地址,這樣可以將變長的value抽出使得記錄變成定長,更方便管理。
      [0043]Data Area存儲鍵-值數據中的value數據,value數據的存儲空間可以通過分配算符(Allocator)進行分配。
      [0044]通過對共享內存塊進行存儲區(qū)域的劃分,實現了以統(tǒng)一的數據結構對鍵-值數據進行存儲,達到了提高鍵-值數據可移植性的效果。
      [0045]優(yōu)選地,在存儲用于查找鍵-值數據的查找數據至第一存儲區(qū)域,并存儲鍵-值數據中的第一數據至第二存儲區(qū)域,以及存儲鍵-值數據中的第二數據至第三存儲區(qū)域之后,本發(fā)明實施例的進程更新方法還包括:保存狀態(tài)信息至與共享內存組相互獨立的共享內存塊(以下稱作第三共享內存塊);以及添加用于對狀態(tài)信息的讀寫進行保護的信號量鎖。圖5是根據本發(fā)明實施例的進程更新方法中第三共享內存塊的結構示意圖,如圖5所示,示意性示出了第三共享內存塊中存儲有η個共享內存組(ShmPl,ShmP2,…,ShmPn)的狀態(tài)信息MD,其中,信號量鎖(Sem LOCK,簡稱SL)保護著狀態(tài)信息MD的讀寫進行保護。
      [0046]通過添加用于保護狀態(tài)信息的信號量鎖,在添加用于對狀態(tài)信息的讀寫進行保護的信號量鎖之后,并且在對狀態(tài)信息進行獲取之前,需要先獲取狀態(tài)信息的信號量鎖,如果獲取不到,則表示共享內存塊中的數據正在被第三方使用(比如:第三方正在更新共享內存塊中的數據),但尚未使用完成,此種情況,當前操作者不能對共享內存塊中的數據進行操作,需要退出操作,實現了避免多方同時對共享內存塊中數據進行操作所帶來的沖突,進而達到了提高共享內存塊進行數據共享的穩(wěn)定性。
      [0047]相應地,在更新處于未被調用狀態(tài)的共享內存塊中的數據之后,本發(fā)明實施例的進程更新方法還包括:釋放信號量鎖。
      [0048]需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
      [0049]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
      [0050]實施例2
      [0051]根據本發(fā)明實施例,還提供了一種用于實施上述進程更新方法的進程更新裝置,該進程更新裝置主要用于執(zhí)行本發(fā)明實施例上述內容所提供的進程更新方法,以下對本發(fā)明實施例所提供的進程更新裝置做具體介紹:
      [0052]圖6是根據本發(fā)明實施例的進程更新裝置的示意圖,如圖6所示,該進程更新裝置主要包括第一獲取單元10、第一確定單元20和更新單元30,其中:
      [0053]第一獲取單元10用于獲取共享內存組的狀態(tài)信息,其中,共享內存組包括至少兩個共享內存塊,每個共享內存塊均存儲有進程的鍵-值數據,在本發(fā)明實施例中,以共享內存組包括第一共享內存塊和第二共享內存塊,第一共享內存塊和第二共享內存塊均存儲有進程的鍵-值數據為例做具體說明,即,將進程的鍵-值數據存儲在具有多個共享內存塊的共享內存組中,其中,狀態(tài)信息主要包括共享內存組是否初始化的標志、共享內存塊是否被使用的標志和共享內存組中正在被使用的共享內存塊的關鍵字(shm_key)。
      [0054]第一確定單元20用于根據狀態(tài)信息確定共享內存組中每個共享內存塊的調用狀態(tài),以確定處于被調用狀態(tài)的第一共享內存塊和處于未被調用狀態(tài)的第二共享內存塊,因為狀態(tài)信息中保存了正在提供服務(即,正在被使用)的共享內存塊的關鍵字(shm_key),因此能夠根據狀態(tài)信息確定出共享內存組中哪塊共享內存塊處于被調用狀態(tài),哪塊共享內存塊處于未被調用狀態(tài),在本發(fā)明實施例中,以確定出的處于被調用狀態(tài)的共享內存塊為第一共享內存塊、確定出的處于未被調用狀態(tài)的共享內存塊為第二共享內存塊進行說明。
      [0055]更新單元30用于在第一共享內存塊處于被調用狀態(tài)時更新第二共享內存塊中的鍵-值數據,具體地,可以先清除處于未被調用狀態(tài)的共享內存塊中的鍵-值數據,然后再向這個共享內存塊中填寫新的鍵-值數據。
      [0056]本發(fā)明實施例所提供的進程更新裝置,通過利用共享內存組存儲進程的鍵-值數據,在一個共享內存塊處于被調用狀態(tài)時更新另一個處于未被調用狀態(tài)的共享內存塊中的鍵值-數據,實現了在一個共享內存塊提供服務的時候,可以對另一個共享內存塊中的鍵-值數據進行更新,這樣,在進程重啟時,只需從共享內存組進行鍵-值數據的加載即可,無需再次從數據源讀取數據并構建自己的私有數據結構;并且,基于共享內存組加載鍵-值數據的方式,實現了更新線程和服務線程的相互獨立,對進程鍵-值數據的在線更新不影響服務,解決了現有技術中鍵-值數據的加載方式導致進程更新不靈活的問題,進而達到了提高進程更新靈活性的效果。
      [0057]進一步地,本發(fā)明實施例的進程更新裝置還包括轉換單元,在第一共享內存塊處于被調用狀態(tài)時更新處于未被調用狀態(tài)的第二共享內存塊中的鍵-值數據之后,轉換單元用于將第一共享內存塊由被調用狀態(tài)轉換為未被調用狀態(tài),并將更新后的第二共享內存塊由未被調用狀態(tài)轉換為被調用狀態(tài)塊。在對第二共享內存塊中的鍵-值數據進行更新,實現對進程的在線更新后,通過對第一共享內存塊和第二共享內存塊的調用狀態(tài)進行切換,實現對進程的檢查更新。
      [0058]優(yōu)選地,本發(fā)明實施例的進程更新裝置還包括劃分單元和存儲單元,在獲取共享內存組的狀態(tài)信息之前,劃分單元用于將共享內存組中的每個共享內存塊均劃分為第一存儲區(qū)域、第二存儲區(qū)域和第三存儲區(qū)域,圖3是根據本發(fā)明實施例的進程更新方法中共享內存組的一種結構示意圖,如圖3所示,第一共享內存塊服務于更新進程LI,該第一共享內存塊包括第一存
      當前第2頁1 2 3 4 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1