999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenWrt平臺的進程間通信

2014-07-08 02:34:17張一弓
科技創新與應用 2014年21期

張一弓

摘 要:OpenWrt是一款基于Linux內核的開源路由器操作系統,文章研究內容是,利用Linux進程間通信中的命名管道方法,設計一系列接口函數,提供消息的注冊、注銷、發送、接收。使消息傳遞在簡單、方便的同時,也能滿足路由器系統的要求。這種函數庫稱為消息總線。

關鍵詞:進程間通信(IPC);Linux;消息總線

1 消息總線設計需求

D-Bus消息總線是面向桌面系統設計,接口豐富,但占用資源較多。重新設計的消息總線將滿足占用系統資源少,且可以滿足路由器軟件系統的消息轉發需求。消息總線(Message Bus,以后簡稱M-Bus)模塊作為路由器軟件系統的基礎軟件模塊,M-Bus被設計成了一個為路由器操作系統各應用程序提供模塊間通信的唯一上層平臺。M-Bus自身被抽象化成一個提供進程間通信方法的函數功能庫,負責路由器軟件系統各模塊間的消息轉發和消息廣播,實現的方式是向整個系統提供C的API接口以供其他應用程序調用。M-Bus底層是使用套接字、信號量、管道等Linux基本進程間通信方法進行封裝。M-Bus在消息處理方式是消息的直接轉發。消息的直接轉發使用命名管道來實現,參與通信的各個進程直接調用M-Bus庫函數,各個應用程序根據自身注冊到消息總線上的消息處理函數,做出下一步的動作。

2 消息總線總體設計

消息總線被設計成了一個為路由器操作系統各應用程序提供模塊間通信的唯一上層平臺。消息總線自身被抽象化成一個提供進程間通信方法的函數功能庫,負責路由器軟件系統各模塊間的消息轉發和消息廣播,實現的方式是向整個系統提供C的API接口以供其他應用程序調用。消息總線底層是使用套接字、信號量、管道等Linux基本進程間通信方法進行封裝。消息總線在消息處理方式是消息的直接轉發。消息的直接轉發使用命名管道來實現,參與通信的各個進程直接調用消息總線庫函數,各個應用程序根據自身注冊到消息總線上的消息處理函數,做出下一步的動作。消息總線包括以下三個子模塊:(1)消息總線的接口集合,包括消息的發送、消息的接收、消息發送者與接收者的登記等一系列消息總線能夠提供的API函數。(2)消息總線的守護進程。(3)消息總線內部工作處理,為上層API函數提供基礎。路由器的各應用程序通過調用消息總線的API函數來使用消息總線的功能。消息總線提供了本地資源初始化、銷毀本地資源、注冊、卸載、發送消息、接收消息、登記消息處理等API函數。消息總線中所定義的消息,是進程間傳遞數據的載體,消息的定義遵循以下原則:(1)每個消息都有自身的名字,消息的名字表示要發送的消息是什么命令。(2)消息的名字在系統中是唯一的。(3)系統能處理消息的種類的能力是有限的。各個模塊收到消息后會跟據消息的名字執行相應的處理函數,(4)消息具有統一定義的數據結構,包括消息頭、攜帶數據、消息上下文(Context)。消息的名字(也可稱為消息的類型)作為消息頭中的一個數據域的形式存在。

3 消息總線數據結構的設計

消息的自身是數據傳遞的載體并且消息具有相應的結構。消息結構組織分為兩類:一類是各模塊之間通信的消息結構;另一類是各模塊本地維護的消息結構。

其中,消息頭被定義成各模塊間通信的唯一結構,各模塊間的通信是通過解析消息頭來提取數據,從而實現進程間的通信。而各模塊本地維護的消息結構稱之為消息上下文,每個模塊都會有自身的消息上下文,由各個模塊自己組織與管理,與外界隔離。圖1描述了消息頭的數據結構:

圖1 消息頭數據結構示意圖

消息頭中包含以下定義內容:(1)消息的發送者:定義該消息是由哪個模塊發送的,路由器所有模塊的名稱均用宏定義。(2)當前進程PID:該消息的發送進程的PID。(3)消息的名字:該消息發的是什么指令。(4)消息的同步:當接收進程收到消息后需要做反饋操作,回復發送進程進行收到確認。如果不做同步操作則不需要回復。(5)數據長度:消息所攜帶的數據長度。(6)攜帶數據起始位:所攜帶數據的起始位地址。起始位地址加上所攜帶數據的長度就可以表示該消息攜帶的所有數據,即消息的消息體。作者稱各模塊自身維護的消息為本地消息,描述本地消息的數據結構稱為消息上下文,路由器軟件系統中每個模塊(每個應用程序)自身只能存在一個消息上下文。設計消息上下文的原因在于是想把使用消息總線的所有數據與操作方式都組織到一起,然后封裝成統一的結構來進行描述。每個應用程序注冊到消息總線上的時候,都會生成自身的消息上下文。圖2描述了消息上下文的數據結構定義。

圖2 消息上下文數據結構示意圖

消息上下文中包括了以下內容:(1)注冊到消息總線上的應用程序自身名字。名字由字符串表示,系統中所有的應用程序名字均使用宏進行定義。(2)當前注冊到消息總線上的進程ID。進程ID用于表示消息總線使用者的身份。(3)當前接收消息的文件描述符。當一個進程新注冊到消息總線上時,該文件描述符設置為-1。當該進程參與消息的發送或接收時,該文件描述符表示文件操作句柄。(4)進程退出函數指針,typedef void(*pf_user_exit)(void)。當一個已在消息總線上注冊過的進程想要從消息總線上卸載時,調用自身定義的退出函數實現退出。(5)消息處理函數指針。當應用程序收到消息時解析該消息,根據解析到的消息名字調用相對應的消息處理函數。當應用程序向消息總線上注冊時,必須注冊對應消息的處理函數。(6)默認消息處理函數指針。(7)消息頭。

參考文獻

[1]Bird Intern Articles on Routing Software Openwrt[M].Hephaestus Books,2011:115-120.

[2]Jim Brown.Articles on Routers[M].Hephaestus Books,2011:45-59.

[3]Andrew.Network Security Hacks Lockhart[M].USA:Media Inc,2006:245-230.endprint

摘 要:OpenWrt是一款基于Linux內核的開源路由器操作系統,文章研究內容是,利用Linux進程間通信中的命名管道方法,設計一系列接口函數,提供消息的注冊、注銷、發送、接收。使消息傳遞在簡單、方便的同時,也能滿足路由器系統的要求。這種函數庫稱為消息總線。

關鍵詞:進程間通信(IPC);Linux;消息總線

1 消息總線設計需求

D-Bus消息總線是面向桌面系統設計,接口豐富,但占用資源較多。重新設計的消息總線將滿足占用系統資源少,且可以滿足路由器軟件系統的消息轉發需求。消息總線(Message Bus,以后簡稱M-Bus)模塊作為路由器軟件系統的基礎軟件模塊,M-Bus被設計成了一個為路由器操作系統各應用程序提供模塊間通信的唯一上層平臺。M-Bus自身被抽象化成一個提供進程間通信方法的函數功能庫,負責路由器軟件系統各模塊間的消息轉發和消息廣播,實現的方式是向整個系統提供C的API接口以供其他應用程序調用。M-Bus底層是使用套接字、信號量、管道等Linux基本進程間通信方法進行封裝。M-Bus在消息處理方式是消息的直接轉發。消息的直接轉發使用命名管道來實現,參與通信的各個進程直接調用M-Bus庫函數,各個應用程序根據自身注冊到消息總線上的消息處理函數,做出下一步的動作。

2 消息總線總體設計

消息總線被設計成了一個為路由器操作系統各應用程序提供模塊間通信的唯一上層平臺。消息總線自身被抽象化成一個提供進程間通信方法的函數功能庫,負責路由器軟件系統各模塊間的消息轉發和消息廣播,實現的方式是向整個系統提供C的API接口以供其他應用程序調用。消息總線底層是使用套接字、信號量、管道等Linux基本進程間通信方法進行封裝。消息總線在消息處理方式是消息的直接轉發。消息的直接轉發使用命名管道來實現,參與通信的各個進程直接調用消息總線庫函數,各個應用程序根據自身注冊到消息總線上的消息處理函數,做出下一步的動作。消息總線包括以下三個子模塊:(1)消息總線的接口集合,包括消息的發送、消息的接收、消息發送者與接收者的登記等一系列消息總線能夠提供的API函數。(2)消息總線的守護進程。(3)消息總線內部工作處理,為上層API函數提供基礎。路由器的各應用程序通過調用消息總線的API函數來使用消息總線的功能。消息總線提供了本地資源初始化、銷毀本地資源、注冊、卸載、發送消息、接收消息、登記消息處理等API函數。消息總線中所定義的消息,是進程間傳遞數據的載體,消息的定義遵循以下原則:(1)每個消息都有自身的名字,消息的名字表示要發送的消息是什么命令。(2)消息的名字在系統中是唯一的。(3)系統能處理消息的種類的能力是有限的。各個模塊收到消息后會跟據消息的名字執行相應的處理函數,(4)消息具有統一定義的數據結構,包括消息頭、攜帶數據、消息上下文(Context)。消息的名字(也可稱為消息的類型)作為消息頭中的一個數據域的形式存在。

3 消息總線數據結構的設計

消息的自身是數據傳遞的載體并且消息具有相應的結構。消息結構組織分為兩類:一類是各模塊之間通信的消息結構;另一類是各模塊本地維護的消息結構。

其中,消息頭被定義成各模塊間通信的唯一結構,各模塊間的通信是通過解析消息頭來提取數據,從而實現進程間的通信。而各模塊本地維護的消息結構稱之為消息上下文,每個模塊都會有自身的消息上下文,由各個模塊自己組織與管理,與外界隔離。圖1描述了消息頭的數據結構:

圖1 消息頭數據結構示意圖

消息頭中包含以下定義內容:(1)消息的發送者:定義該消息是由哪個模塊發送的,路由器所有模塊的名稱均用宏定義。(2)當前進程PID:該消息的發送進程的PID。(3)消息的名字:該消息發的是什么指令。(4)消息的同步:當接收進程收到消息后需要做反饋操作,回復發送進程進行收到確認。如果不做同步操作則不需要回復。(5)數據長度:消息所攜帶的數據長度。(6)攜帶數據起始位:所攜帶數據的起始位地址。起始位地址加上所攜帶數據的長度就可以表示該消息攜帶的所有數據,即消息的消息體。作者稱各模塊自身維護的消息為本地消息,描述本地消息的數據結構稱為消息上下文,路由器軟件系統中每個模塊(每個應用程序)自身只能存在一個消息上下文。設計消息上下文的原因在于是想把使用消息總線的所有數據與操作方式都組織到一起,然后封裝成統一的結構來進行描述。每個應用程序注冊到消息總線上的時候,都會生成自身的消息上下文。圖2描述了消息上下文的數據結構定義。

圖2 消息上下文數據結構示意圖

消息上下文中包括了以下內容:(1)注冊到消息總線上的應用程序自身名字。名字由字符串表示,系統中所有的應用程序名字均使用宏進行定義。(2)當前注冊到消息總線上的進程ID。進程ID用于表示消息總線使用者的身份。(3)當前接收消息的文件描述符。當一個進程新注冊到消息總線上時,該文件描述符設置為-1。當該進程參與消息的發送或接收時,該文件描述符表示文件操作句柄。(4)進程退出函數指針,typedef void(*pf_user_exit)(void)。當一個已在消息總線上注冊過的進程想要從消息總線上卸載時,調用自身定義的退出函數實現退出。(5)消息處理函數指針。當應用程序收到消息時解析該消息,根據解析到的消息名字調用相對應的消息處理函數。當應用程序向消息總線上注冊時,必須注冊對應消息的處理函數。(6)默認消息處理函數指針。(7)消息頭。

參考文獻

[1]Bird Intern Articles on Routing Software Openwrt[M].Hephaestus Books,2011:115-120.

[2]Jim Brown.Articles on Routers[M].Hephaestus Books,2011:45-59.

[3]Andrew.Network Security Hacks Lockhart[M].USA:Media Inc,2006:245-230.endprint

摘 要:OpenWrt是一款基于Linux內核的開源路由器操作系統,文章研究內容是,利用Linux進程間通信中的命名管道方法,設計一系列接口函數,提供消息的注冊、注銷、發送、接收。使消息傳遞在簡單、方便的同時,也能滿足路由器系統的要求。這種函數庫稱為消息總線。

關鍵詞:進程間通信(IPC);Linux;消息總線

1 消息總線設計需求

D-Bus消息總線是面向桌面系統設計,接口豐富,但占用資源較多。重新設計的消息總線將滿足占用系統資源少,且可以滿足路由器軟件系統的消息轉發需求。消息總線(Message Bus,以后簡稱M-Bus)模塊作為路由器軟件系統的基礎軟件模塊,M-Bus被設計成了一個為路由器操作系統各應用程序提供模塊間通信的唯一上層平臺。M-Bus自身被抽象化成一個提供進程間通信方法的函數功能庫,負責路由器軟件系統各模塊間的消息轉發和消息廣播,實現的方式是向整個系統提供C的API接口以供其他應用程序調用。M-Bus底層是使用套接字、信號量、管道等Linux基本進程間通信方法進行封裝。M-Bus在消息處理方式是消息的直接轉發。消息的直接轉發使用命名管道來實現,參與通信的各個進程直接調用M-Bus庫函數,各個應用程序根據自身注冊到消息總線上的消息處理函數,做出下一步的動作。

2 消息總線總體設計

消息總線被設計成了一個為路由器操作系統各應用程序提供模塊間通信的唯一上層平臺。消息總線自身被抽象化成一個提供進程間通信方法的函數功能庫,負責路由器軟件系統各模塊間的消息轉發和消息廣播,實現的方式是向整個系統提供C的API接口以供其他應用程序調用。消息總線底層是使用套接字、信號量、管道等Linux基本進程間通信方法進行封裝。消息總線在消息處理方式是消息的直接轉發。消息的直接轉發使用命名管道來實現,參與通信的各個進程直接調用消息總線庫函數,各個應用程序根據自身注冊到消息總線上的消息處理函數,做出下一步的動作。消息總線包括以下三個子模塊:(1)消息總線的接口集合,包括消息的發送、消息的接收、消息發送者與接收者的登記等一系列消息總線能夠提供的API函數。(2)消息總線的守護進程。(3)消息總線內部工作處理,為上層API函數提供基礎。路由器的各應用程序通過調用消息總線的API函數來使用消息總線的功能。消息總線提供了本地資源初始化、銷毀本地資源、注冊、卸載、發送消息、接收消息、登記消息處理等API函數。消息總線中所定義的消息,是進程間傳遞數據的載體,消息的定義遵循以下原則:(1)每個消息都有自身的名字,消息的名字表示要發送的消息是什么命令。(2)消息的名字在系統中是唯一的。(3)系統能處理消息的種類的能力是有限的。各個模塊收到消息后會跟據消息的名字執行相應的處理函數,(4)消息具有統一定義的數據結構,包括消息頭、攜帶數據、消息上下文(Context)。消息的名字(也可稱為消息的類型)作為消息頭中的一個數據域的形式存在。

3 消息總線數據結構的設計

消息的自身是數據傳遞的載體并且消息具有相應的結構。消息結構組織分為兩類:一類是各模塊之間通信的消息結構;另一類是各模塊本地維護的消息結構。

其中,消息頭被定義成各模塊間通信的唯一結構,各模塊間的通信是通過解析消息頭來提取數據,從而實現進程間的通信。而各模塊本地維護的消息結構稱之為消息上下文,每個模塊都會有自身的消息上下文,由各個模塊自己組織與管理,與外界隔離。圖1描述了消息頭的數據結構:

圖1 消息頭數據結構示意圖

消息頭中包含以下定義內容:(1)消息的發送者:定義該消息是由哪個模塊發送的,路由器所有模塊的名稱均用宏定義。(2)當前進程PID:該消息的發送進程的PID。(3)消息的名字:該消息發的是什么指令。(4)消息的同步:當接收進程收到消息后需要做反饋操作,回復發送進程進行收到確認。如果不做同步操作則不需要回復。(5)數據長度:消息所攜帶的數據長度。(6)攜帶數據起始位:所攜帶數據的起始位地址。起始位地址加上所攜帶數據的長度就可以表示該消息攜帶的所有數據,即消息的消息體。作者稱各模塊自身維護的消息為本地消息,描述本地消息的數據結構稱為消息上下文,路由器軟件系統中每個模塊(每個應用程序)自身只能存在一個消息上下文。設計消息上下文的原因在于是想把使用消息總線的所有數據與操作方式都組織到一起,然后封裝成統一的結構來進行描述。每個應用程序注冊到消息總線上的時候,都會生成自身的消息上下文。圖2描述了消息上下文的數據結構定義。

圖2 消息上下文數據結構示意圖

消息上下文中包括了以下內容:(1)注冊到消息總線上的應用程序自身名字。名字由字符串表示,系統中所有的應用程序名字均使用宏進行定義。(2)當前注冊到消息總線上的進程ID。進程ID用于表示消息總線使用者的身份。(3)當前接收消息的文件描述符。當一個進程新注冊到消息總線上時,該文件描述符設置為-1。當該進程參與消息的發送或接收時,該文件描述符表示文件操作句柄。(4)進程退出函數指針,typedef void(*pf_user_exit)(void)。當一個已在消息總線上注冊過的進程想要從消息總線上卸載時,調用自身定義的退出函數實現退出。(5)消息處理函數指針。當應用程序收到消息時解析該消息,根據解析到的消息名字調用相對應的消息處理函數。當應用程序向消息總線上注冊時,必須注冊對應消息的處理函數。(6)默認消息處理函數指針。(7)消息頭。

參考文獻

[1]Bird Intern Articles on Routing Software Openwrt[M].Hephaestus Books,2011:115-120.

[2]Jim Brown.Articles on Routers[M].Hephaestus Books,2011:45-59.

[3]Andrew.Network Security Hacks Lockhart[M].USA:Media Inc,2006:245-230.endprint

主站蜘蛛池模板: 日韩欧美国产精品| 久久99蜜桃精品久久久久小说| 国产日韩欧美在线播放| 在线播放91| 91精品视频网站| 欧美激情首页| 一级一级一片免费| 在线va视频| 在线观看国产精品第一区免费| 久青草免费视频| 精品综合久久久久久97超人该| 亚洲综合狠狠| 国产小视频网站| 女人18毛片久久| 2021精品国产自在现线看| 亚洲欧美成人在线视频| 沈阳少妇高潮在线| 18禁不卡免费网站| 57pao国产成视频免费播放| 国产成人福利在线视老湿机| 亚洲精品777| 精品欧美一区二区三区久久久| 蜜桃视频一区二区三区| 亚洲中文精品人人永久免费| 精品五夜婷香蕉国产线看观看| 麻豆精品视频在线原创| 亚洲国产成人精品青青草原| 欧美日韩中文字幕二区三区| 欧美日韩午夜视频在线观看 | 91精品综合| 日本伊人色综合网| 四虎在线观看视频高清无码| 天天综合天天综合| 精品欧美日韩国产日漫一区不卡| 亚国产欧美在线人成| 日韩精品中文字幕一区三区| 欧美日韩福利| 国产精品一区二区久久精品无码| 日韩毛片免费| 亚洲色精品国产一区二区三区| 亚洲日韩欧美在线观看| 日韩欧美网址| 女人天堂av免费| 中文字幕免费视频| 毛片免费观看视频| 成人在线观看一区| 国产激爽大片在线播放| 四虎影视无码永久免费观看| 亚洲男人天堂久久| 制服丝袜国产精品| 国产在线精彩视频二区| 麻豆精选在线| 2048国产精品原创综合在线| 国产福利观看| 国产区成人精品视频| 小说 亚洲 无码 精品| 亚洲中文字幕手机在线第一页| 又粗又大又爽又紧免费视频| 国产美女人喷水在线观看| 欧美视频在线第一页| 亚洲码一区二区三区| 国产香蕉国产精品偷在线观看| 国产无码高清视频不卡| 久久精品视频亚洲| 亚洲色图欧美激情| 午夜性刺激在线观看免费| 精品一区二区久久久久网站| 色综合五月| 免费日韩在线视频| 呦女亚洲一区精品| 国产主播一区二区三区| 国产成人精品第一区二区| 免费在线a视频| 亚洲IV视频免费在线光看| 97一区二区在线播放| 欧美一区精品| 国产精品自拍露脸视频| 午夜色综合| 精品视频一区在线观看| 免费无码又爽又刺激高| 全部免费毛片免费播放| 国产69精品久久久久孕妇大杂乱|