本發(fā)明專利技術公開了中控信息調度算法,屬中控應用程序領域,其特征在于,所述調度算法為共享內存與消息隊列的組合,所述共享內存是Unix下的多進程之間的通信方法,主要用于一個程序的多進程間通信,多個程序間也可以通過共享內存來傳遞信息;所述消息隊列是一個消息的鏈表,對消息隊列有寫權限的進程可以向消息隊列中按照一定的規(guī)則添加新消息;對消息隊列有讀權限的進程則可以從消息隊列中讀取消息。本發(fā)明專利技術可以占用最少的硬件資源,將中控中各個進程有條不紊的聯系起來,快速的找到消息要傳遞的目的地址,將消息及時的傳遞出去。
【技術實現步驟摘要】
本專利技術涉及中控應用程序領域,具體地說,是中控信息調度算法。
技術介紹
中控應用程序主要負責上位云端和終端應用程序與各種智能設備之間的交互,將上位與各設備串聯起來,實現對智能設備的統一管理,將設備與上位軟件進行邏輯隔離,上位軟件不用關心設備是如何接入到中控系統,都可以進行統一的監(jiān)控、管理。由于硬件資源有限,并且數據的處理實時性要求較高,所以,消息調度一定要做到盡可能的減少資源的占用,并且能夠快速的找到消息要傳遞的目的地址,將消息及時的傳遞出去。
技術實現思路
本專利技術公開了中控信息調度算法,其特征在于,所述調度算法為共享內存與消息隊列的組合,所述共享內存是Unix下的多進程之間的通信方法,主要用于一個程序的多進程間通信,多個程序間也可以通過共享內存來傳遞信息;所述消息隊列是一個消息的鏈表,對消息隊列有寫權限的進程可以向消息隊列中按照一定的規(guī)則添加新消息;對消息隊列有讀權限的進程則可以從消息隊列中讀取消息。進一步地,所述共享內存包括進程個數、進程鎖區(qū)域、群發(fā)區(qū)域、注冊信息區(qū)域、發(fā)送結果區(qū)域。進一步地,所述進程個數表示當前有多少個進程需要接收到進程的消息。進一步地,所述進程鎖區(qū)域包括鎖初始化標志、鎖和鎖屬性。進一步地,所述群發(fā)區(qū)域中存放各個進程的消息隊列句柄,系統中有某些消息需要群發(fā)時,可以通過這個區(qū)域得到對各個進程發(fā)送消息的句柄,從而將消息群發(fā)至所有進程。進一步地,所述注冊信息區(qū)域中存放各個進程注冊的信息,這些信息采用事件數組方式存儲。進一步地,所述發(fā)送結果區(qū)域存放對各個進程發(fā)送消息的結果,如果進程個數為n,則區(qū)域字節(jié)大小為n個字節(jié),用-1表示未發(fā)送,0來表示發(fā)送失敗,1表示發(fā)送成功。進一步地,所述消息隊列采用POSIX消息隊列。與現有技術相比,本專利技術的積極效果是:1.本專利技術可以占用最少的硬件資源,將中控中各個進程有條不紊的聯系起來,快速的找到消息要傳遞的目的地址,將消息及時的傳遞出去。附圖說明圖1是需要發(fā)送消息的進程的調用流程圖;圖2是接收事件消息的進程的調用流程圖;圖3是圖1、圖2中初始化步驟的流程圖;圖4是圖1、圖2中注銷步驟的流程圖。具體實施方式本專利技術提供中控信息調度算法,為使本專利技術的目的、技術方案及效果更佳清楚、明確,以下對本專利技術進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本專利技術,并不用與限定本專利技術。本專利技術公開了中控信息調度算法,其特征在于,所述調度算法為共享內存與消息隊列的組合,所述共享內存是Unix下的多進程之間的通信方法,主要用于一個程序的多進程間通信,多個程序間也可以通過共享內存來傳遞信息;所述消息隊列是一個消息的鏈表,對消息隊列有寫權限的進程可以向消息隊列中按照一定的規(guī)則添加新消息;對消息隊列有讀權限的進程則可以從消息隊列中讀取消息。進一步地,所述共享內存包括進程個數、進程鎖區(qū)域、群發(fā)區(qū)域、注冊信息區(qū)域、發(fā)送結果區(qū)域。進一步地,所述進程個數表示當前有多少個進程需要接收到進程的消息。進一步地,所述進程鎖區(qū)域包括鎖初始化標志、鎖和鎖屬性。由于消息中心要在多個進程中進行消息傳遞,這就涉及到了多進程間的信息資源共享,要解決資源爭用問題,就需要運用讀寫鎖的機制,進一步要解決多進程間進行資源的問題,就要采用這種方式,將鎖放置到共享內存區(qū)域,并有第一個注冊使用的進程進行資源鎖的初始化,在進程需要用到共享資源時,就要先申請相應的讀鎖或者寫鎖,鎖定資源,當運用結束后,應無條件的釋放鎖。這就帶來了一定的風險,比如一個進程對某一事件資源使用時間過長,或者一個進程在資源使用結束后,由于種種原因,沒有將鎖釋放,其他的進程就無法對此資源進行處理。這時就要加入鎖定超時機制,在其它進程占用資源時間過長,超出了設定超時時間時,將鎖重置,并依照給定的策略進行后期處理,使其它進程能夠繼續(xù)正常的使用資源。進一步地,所述群發(fā)區(qū)域中存放各個進程的消息隊列句柄,系統中有某些消息需要群發(fā)時,可以通過這個區(qū)域得到對各個進程發(fā)送消息的句柄,從而將消息群發(fā)至所有進程。進一步地,所述注冊信息區(qū)域中存放各個進程注冊的信息,這些信息采用事件數組方式存儲。假設前面定義的進程個數為n,則每一個消息都有n個存放空間,如果有哪個進程注冊了相應的消息,則在相應的位置放置消息發(fā)送句柄。當消息中心得到一個消息時,就能夠直接找到注冊該消息的消息發(fā)送句柄列表,直接通過對這些句柄的處理,將消息傳遞到給個進程中去。假定定義的進程數為3,消息類型的總個數為10,那相應共享內存消息注冊區(qū)域初始情況如表1:表1假設進程1注冊了消息類型1、2,進程2注冊了消息類型2、5,進程3注冊了消息類型2和10,并且假設進程1消息句柄為100,進程2消息句柄為200,進程3消息句柄位300,則共享內存注冊區(qū)域內情況如表2:表2進一步地,所述發(fā)送結果區(qū)域存放對各個進程發(fā)送消息的結果,如果進程個數為n,則區(qū)域字節(jié)大小為n個字節(jié),用-1表示未發(fā)送,0來表示發(fā)送失敗,1表示發(fā)送成功。進一步地,所述消息隊列采用POSIX消息隊列。如圖1-4所示,經測試,采用該調度算法發(fā)送、接收時間,消息發(fā)送及接收可以達到每秒10000次。對于本領域技術人員而言,顯然本專利技術不限于上述示范性的實施例的細節(jié),而且在不背離本專利技術的精神或基本特征的情況下,能夠以其他的具體形式實現本專利技術。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本專利技術的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化囊括在本專利技術內,不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。本文檔來自技高網...
【技術保護點】
中控信息調度算法,其特征在于,所述調度算法為共享內存與消息隊列的組合,所述共享內存是Unix下的多進程之間的通信方法,主要用于一個程序的多進程間通信,多個程序間也可以通過共享內存來傳遞信息;所述消息隊列是一個消息的鏈表,對消息隊列有寫權限的進程可以向消息隊列中按照一定的規(guī)則添加新消息;對消息隊列有讀權限的進程則可以從消息隊列中讀取消息。
【技術特征摘要】
1.中控信息調度算法,其特征在于,所述調度算法為共享內存與消息隊列的組合,所述共享內存是Unix下的多進程之間的通信方法,主要用于一個程序的多進程間通信,多個程序間也可以通過共享內存來傳遞信息;所述消息隊列是一個消息的鏈表,對消息隊列有寫權限的進程可以向消息隊列中按照一定的規(guī)則添加新消息;對消息隊列有讀權限的進程則可以從消息隊列中讀取消息。2.根據權利要求1所述的中控信息調度算法,其特征在于,所述共享內存包括進程個數、進程鎖區(qū)域、群發(fā)區(qū)域、注冊信息區(qū)域、發(fā)送結果區(qū)域。3.根據權利要求2所述的中控信息調度算法,其特征在于,所述進程個數表示當前有多少個進程需要接收到進程的消息。4.根據權利要求2所述的中控信息調度算法,其特征在于,所述進程...
【專利技術屬性】
技術研發(fā)人員:陳寶鈞,
申請(專利權)人:天津九洲云物聯科技有限公司,
類型:發(fā)明
國別省市:天津;12
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。