国产精品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>

      一種多主機(jī)進(jìn)程間通信的方法

      文檔序號(hào):6501812閱讀:188來(lái)源:國(guó)知局
      一種多主機(jī)進(jìn)程間通信的方法
      【專(zhuān)利摘要】本發(fā)明公開(kāi)一種多主機(jī)進(jìn)程間通信的方法,包括如下內(nèi)容:若是同一主機(jī)內(nèi)的不同進(jìn)程間需要通信,使用兩級(jí)共享內(nèi)存來(lái)收發(fā)報(bào)文,從而實(shí)現(xiàn)數(shù)據(jù)的零拷貝;若是不同主機(jī)內(nèi)的進(jìn)程需要通信,將報(bào)文組織成二層以太網(wǎng)幀格式,不經(jīng)過(guò)協(xié)議棧直接發(fā)送給接收方;且前述兩種通信方式采用統(tǒng)一的函數(shù)接口和統(tǒng)一的通信報(bào)文格式。此種通信方法可提高多主機(jī)環(huán)境下進(jìn)程間的通信效率,降低應(yīng)用程序編程接口的復(fù)雜度。
      【專(zhuān)利說(shuō)明】一種多主機(jī)進(jìn)程間通信的方法

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及一種多主機(jī)進(jìn)程間通信的方法。

      【背景技術(shù)】
      [0002] 傳統(tǒng)的操作系統(tǒng)進(jìn)程間通信的方法包括套接字、管道、消息隊(duì)列及共享內(nèi)存。當(dāng)采 用套接字、管道、消息隊(duì)列進(jìn)行進(jìn)程間通信時(shí),數(shù)據(jù)的傳遞模式為:A進(jìn)程將數(shù)據(jù)拷貝至內(nèi) 核緩沖區(qū),通知B進(jìn)程;B進(jìn)程得到通知后將數(shù)據(jù)從內(nèi)核拷貝至進(jìn)程緩沖區(qū),然后處理數(shù)據(jù)。 這種模式下有效數(shù)據(jù)需要在進(jìn)程態(tài)和內(nèi)核態(tài)之間拷貝兩次,降低了程序運(yùn)行的效率。當(dāng)采 用共享內(nèi)存進(jìn)行進(jìn)程間通信時(shí),數(shù)據(jù)的傳遞模式為:A進(jìn)程將數(shù)據(jù)寫(xiě)入共享內(nèi)存,通知B進(jìn) 程;B進(jìn)程得到通知后直接從共享內(nèi)存區(qū)讀取數(shù)據(jù)。這種模式下有效數(shù)據(jù)不需要在進(jìn)程態(tài) 和內(nèi)核態(tài)之間進(jìn)行拷貝,相比前一種模式,提高了效率。但是,A進(jìn)程通知B進(jìn)程的這個(gè)動(dòng) 作,需要通過(guò)一個(gè)短消息來(lái)實(shí)現(xiàn),這個(gè)短消息還是需要從進(jìn)程地址空間向內(nèi)核地址空間拷 貝數(shù)據(jù),降低了系統(tǒng)性能。
      [0003] 當(dāng)網(wǎng)絡(luò)上不同主機(jī)間的進(jìn)程需要通信時(shí),必須選擇合適的網(wǎng)絡(luò)協(xié)議,使用套接字 在不同主機(jī)間傳遞消息。使用套接字接口需要將通信報(bào)文壓入操作系統(tǒng)協(xié)議棧,經(jīng)過(guò)協(xié)議 棧的層層處理和封裝才能把有效通信報(bào)文發(fā)送出去,降低了進(jìn)程間通信的實(shí)時(shí)性。當(dāng)進(jìn)行 多主機(jī)進(jìn)程間的通信時(shí)必須選擇兩種函數(shù)接口,一種用于同一個(gè)主機(jī)內(nèi)的不同進(jìn)程通信, 另一種用于不同主機(jī)進(jìn)程間的通信,增加了應(yīng)用程序編程接口的復(fù)雜度。


      【發(fā)明內(nèi)容】

      [0004] 本發(fā)明的目的,在于提供一種多主機(jī)進(jìn)程間通信的方法,其可提高多主機(jī)環(huán)境下 進(jìn)程間的通信效率,降低應(yīng)用程序編程接口的復(fù)雜度。
      [0005] 為了達(dá)成上述目的,本發(fā)明的解決方案是:
      [0006] -種多主機(jī)進(jìn)程間通信的方法,包括如下內(nèi)容:若是同一主機(jī)內(nèi)的不同進(jìn)程間需 要通信,使用兩級(jí)共享內(nèi)存來(lái)收發(fā)報(bào)文,從而實(shí)現(xiàn)數(shù)據(jù)的零拷貝;若是不同主機(jī)內(nèi)的進(jìn)程需 要通信,將報(bào)文組織成二層以太網(wǎng)幀格式,不經(jīng)過(guò)協(xié)議棧直接發(fā)送給接收方;且前述兩種通 信方式采用統(tǒng)一的函數(shù)接口和統(tǒng)一的通信報(bào)文格式。
      [0007] 上述方法中,對(duì)于同一主機(jī)內(nèi)的不同進(jìn)程間的通信:各進(jìn)程將第一級(jí)共享內(nèi)存映 射到進(jìn)程自己的地址空間,通信的發(fā)起方通過(guò)指針直接在第一級(jí)共享內(nèi)存區(qū)中組織報(bào)文, 通信的接收方通過(guò)指針直接在第一級(jí)共享內(nèi)存區(qū)中訪問(wèn)報(bào)文,實(shí)現(xiàn)了進(jìn)程間數(shù)據(jù)的零拷 貝;各進(jìn)程將第二級(jí)共享內(nèi)存映射到進(jìn)程自己的地址空間,進(jìn)程在調(diào)用內(nèi)核模塊提供的各 種函數(shù)時(shí),將函數(shù)實(shí)參直接寫(xiě)入第二級(jí)共享內(nèi)存,內(nèi)核模塊直接讀取進(jìn)程的第二級(jí)共享內(nèi) 存,獲取函數(shù)實(shí)參,實(shí)現(xiàn)了進(jìn)程和內(nèi)核間數(shù)據(jù)的零拷貝。
      [0008] 上述方法中,對(duì)于不同主機(jī)間進(jìn)程的通信:將報(bào)文組織成二層以太網(wǎng)幀格式,不經(jīng) 過(guò)協(xié)議棧,直接調(diào)用系統(tǒng)網(wǎng)絡(luò)設(shè)備的以太網(wǎng)發(fā)送函數(shù),將報(bào)文發(fā)送給接收方主機(jī),縮短了報(bào) 文發(fā)送的時(shí)間,提高了通信的實(shí)時(shí)性。
      [0009] 采用上述方案后,本發(fā)明的有益效果是:通過(guò)提供一種多主機(jī)進(jìn)程間的通信方法, 提高了多主機(jī)環(huán)境下進(jìn)程間的通信效率,降低應(yīng)用程序編程接口的復(fù)雜度。對(duì)于同一主機(jī) 內(nèi)的不同進(jìn)程,采用兩級(jí)共享內(nèi)存的方法,實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)零拷貝通信,解決了傳統(tǒng)操作系 統(tǒng)進(jìn)程間通信需要在進(jìn)程和內(nèi)核之間拷貝數(shù)據(jù)的問(wèn)題。對(duì)于不同主機(jī)上的不同進(jìn)程,通信 時(shí)采用二層以太網(wǎng)報(bào)文,不經(jīng)過(guò)協(xié)議棧直接發(fā)送給對(duì)方的方法,提高了通信的實(shí)時(shí)性,解決 了傳統(tǒng)套接字通信需要經(jīng)過(guò)協(xié)議棧從而導(dǎo)致實(shí)時(shí)性下降的問(wèn)題。以上兩種通信方法在實(shí)現(xiàn) 上采用統(tǒng)一的報(bào)文格式和函數(shù)接口封裝,解決了多主機(jī)環(huán)境下程序開(kāi)發(fā)時(shí)需要為進(jìn)程通信 選擇不同的函數(shù)接口導(dǎo)致應(yīng)用程序編程接口復(fù)雜的問(wèn)題。

      【專(zhuān)利附圖】

      【附圖說(shuō)明】
      [0010] 圖1是進(jìn)程間通信報(bào)文幀格式定義示意圖;
      [0011] 圖2是兩級(jí)共享內(nèi)存組織方式示意圖;
      [0012] 圖3是二層以太網(wǎng)幀格式定義示意圖。

      【具體實(shí)施方式】
      [0013] 下面以一個(gè)具體的嵌入式系統(tǒng)來(lái)說(shuō)明本發(fā)明的具體實(shí)現(xiàn)方法。該嵌入式系統(tǒng)的 CPU采用freescale公司的P1020芯片,操作系統(tǒng)采用linux2. 6. 32操作系統(tǒng)。具體的實(shí)施 方法包括:(1)在linux操作系統(tǒng)中插入一個(gè)內(nèi)核模塊,創(chuàng)建一個(gè)虛擬字符設(shè)備,通過(guò)該設(shè) 備的設(shè)備驅(qū)動(dòng)程序的各種函數(shù)接口來(lái)實(shí)現(xiàn)兩級(jí)共享內(nèi)存的管理,進(jìn)程間報(bào)文的收發(fā),以太 網(wǎng)報(bào)文的收發(fā)等功能。(2)編寫(xiě)一個(gè)linux下的程序共享庫(kù),將對(duì)(1)中的虛擬字符設(shè)備的 操作封裝成統(tǒng)一的函數(shù)接口,應(yīng)用程序調(diào)用這些函數(shù)來(lái)完成多主機(jī)進(jìn)程間的通信。
      [0014] 下面以一個(gè)兩進(jìn)程(進(jìn)程A和進(jìn)程B)通信的例子來(lái)說(shuō)明整個(gè)過(guò)程。
      [0015] 1、本發(fā)明使用一種固定的報(bào)文幀格式來(lái)進(jìn)行進(jìn)程間的通信,這種報(bào)文幀格式定義 如圖1 :
      [0016] 對(duì)報(bào)文幀格式中各個(gè)字段的說(shuō)明如下:
      [0017] (1)目的進(jìn)程ID :進(jìn)程ID用于在一個(gè)主機(jī)中唯一標(biāo)識(shí)一個(gè)進(jìn)程,目的進(jìn)程ID用來(lái) 標(biāo)識(shí)通信雙方中接收?qǐng)?bào)文的那個(gè)進(jìn)程。
      [0018] (2)源進(jìn)程ID :源進(jìn)程ID用來(lái)標(biāo)識(shí)通信雙方中發(fā)送報(bào)文的那個(gè)進(jìn)程。
      [0019] (3)目的主機(jī)地址:主機(jī)地址用于在以太網(wǎng)中唯一標(biāo)識(shí)一個(gè)主機(jī),目的主機(jī)地址用 來(lái)標(biāo)識(shí)通信雙方中接收?qǐng)?bào)文的那個(gè)進(jìn)程所在的主機(jī)。
      [0020] (4)源主機(jī)地址:源主機(jī)地址用來(lái)標(biāo)識(shí)通信雙方中發(fā)送報(bào)文的那個(gè)進(jìn)程所在的主機(jī)。
      [0021] (5)應(yīng)用層報(bào)文長(zhǎng)度:通信發(fā)起方進(jìn)程發(fā)送的報(bào)文的長(zhǎng)度。
      [0022] (6)應(yīng)用層報(bào)文內(nèi)容:發(fā)送方進(jìn)程需要發(fā)送的報(bào)文。
      [0023] 2、在linux操作系統(tǒng)中插入的內(nèi)核模塊提供下面幾個(gè)函數(shù)供應(yīng)用程序調(diào)用。
      [0024] (1) -級(jí)共享內(nèi)存初始化函數(shù):進(jìn)程調(diào)用本函數(shù)將內(nèi)核中的一級(jí)共享內(nèi)存區(qū)映射 到進(jìn)程的地址空間中,映射后進(jìn)程通過(guò)指針可以直接對(duì)一級(jí)共享內(nèi)存進(jìn)行讀寫(xiě)。
      [0025] (2)二級(jí)共享內(nèi)存初始化函數(shù):進(jìn)程調(diào)用本函數(shù)獲取進(jìn)程獨(dú)有的二級(jí)共享內(nèi)存,并 且將該二級(jí)共享內(nèi)存區(qū)映射到進(jìn)程的地址空間中,映射后進(jìn)程通過(guò)指針可以直接對(duì)該二級(jí) 共享內(nèi)存進(jìn)行讀寫(xiě)。
      [0026] (3)獲取緩沖區(qū)函數(shù):進(jìn)程調(diào)用本函數(shù)從一級(jí)共享內(nèi)存區(qū)內(nèi)獲取需要大小的一塊 緩沖區(qū)。
      [0027] (4)報(bào)文發(fā)送函數(shù):進(jìn)程調(diào)用本函數(shù)將圖1所示的一幀報(bào)文發(fā)送給網(wǎng)絡(luò)上由目的 主機(jī)地址和目的進(jìn)程ID唯一標(biāo)識(shí)的一個(gè)進(jìn)程。
      [0028] (5)接收函數(shù):進(jìn)程調(diào)用本函數(shù)直接獲取指向保存在一級(jí)共享內(nèi)存區(qū)的通信報(bào)文 的指針,進(jìn)程通過(guò)該指針直接訪問(wèn)通信報(bào)文。
      [0029] 3、使用兩級(jí)共享內(nèi)存在同一主機(jī)內(nèi)的不同進(jìn)程間發(fā)送報(bào)文的詳細(xì)步驟說(shuō)明如下。
      [0030] (1)本發(fā)明采用兩級(jí)共享內(nèi)存在同一主機(jī)的不同進(jìn)程間傳遞通信報(bào)文,使得進(jìn)程 間的通信實(shí)現(xiàn)了真正意義上的數(shù)據(jù)零拷貝。采用的兩級(jí)共享內(nèi)存模式如圖2。圖2中的一 級(jí)共享內(nèi)存區(qū)用于存儲(chǔ)進(jìn)程間通信的報(bào)文,進(jìn)程A和進(jìn)程B分別調(diào)用內(nèi)核模塊提供的一級(jí) 共享內(nèi)存初始化函數(shù),將一級(jí)共享內(nèi)存區(qū)分別映射至本進(jìn)程的地址空間中。這樣在以后進(jìn) 程A需要向進(jìn)程B發(fā)送通信報(bào)文時(shí),進(jìn)程A通過(guò)指針直接在一級(jí)共享內(nèi)存區(qū)中組織報(bào)文,進(jìn) 程B通過(guò)指針直接從一級(jí)共享內(nèi)存區(qū)中讀取報(bào)文,進(jìn)程間不需要拷貝報(bào)文。圖2中的二級(jí)共 享內(nèi)存區(qū)用于進(jìn)程調(diào)用內(nèi)核模塊提供的函數(shù)時(shí)向內(nèi)核空間傳遞函數(shù)實(shí)參。Linux操作系統(tǒng) 下,一個(gè)進(jìn)程如果調(diào)用內(nèi)核模塊提供的函數(shù),需要將函數(shù)實(shí)參從進(jìn)程空間拷貝到內(nèi)核空間, 這個(gè)過(guò)程涉及到內(nèi)存的拷貝,會(huì)降低程序的運(yùn)行效率。本發(fā)明使用第二級(jí)共享內(nèi)存來(lái)消除 這個(gè)向內(nèi)核空間拷貝函數(shù)實(shí)參的過(guò)程。如圖2,進(jìn)程A在初始化階段,調(diào)用內(nèi)核模塊提供的 二級(jí)共享內(nèi)存初始化函數(shù),將內(nèi)核模塊為進(jìn)程A提供的第二級(jí)共享內(nèi)存映射至進(jìn)程A的地 址空間中。以后進(jìn)程A在調(diào)用內(nèi)核模塊提供的各種函數(shù)時(shí),將函數(shù)實(shí)參直接寫(xiě)入第二級(jí)共 享內(nèi)存,內(nèi)核模塊直接讀取進(jìn)程A的第二級(jí)共享內(nèi)存,獲取函數(shù)實(shí)參,通過(guò)這種方式實(shí)現(xiàn)了 進(jìn)程調(diào)用內(nèi)核模塊函數(shù)時(shí)函數(shù)實(shí)參的數(shù)據(jù)零拷貝。
      [0031] (2)進(jìn)程A向進(jìn)程B發(fā)送通信報(bào)文的完整過(guò)程如下:
      [0032] a)進(jìn)程A通過(guò)調(diào)用內(nèi)核模塊提供的獲取緩沖區(qū)函數(shù)從一級(jí)共享內(nèi)存區(qū)內(nèi)獲取需 要大小的一塊緩沖區(qū)。進(jìn)程A在調(diào)用內(nèi)核模塊提供的獲取緩沖區(qū)函數(shù)時(shí)將函數(shù)實(shí)參直接寫(xiě) 入二級(jí)共享內(nèi)存,不需要向內(nèi)核空間拷貝函數(shù)實(shí)參。
      [0033] b)進(jìn)程A在步驟a)獲取到的緩沖區(qū)中按照下面的方法組織通信報(bào)文:
      [0034] i )將進(jìn)程B的進(jìn)程ID填入目的進(jìn)程ID字段。
      [0035] ii)將進(jìn)程A自己的進(jìn)程ID填入源進(jìn)程ID字段。
      [0036] iii)將進(jìn)程B所在主機(jī)的主機(jī)地址填入目的主機(jī)地址字段。
      [0037] iv)將進(jìn)程A所在主機(jī)的主機(jī)地址填入源主機(jī)地址字段。由于進(jìn)程A和進(jìn)程B在 同一個(gè)主機(jī)上,因此本字段和目的主機(jī)地址字段相同。
      [0038] V)將應(yīng)用層報(bào)文長(zhǎng)度填入應(yīng)用層報(bào)文長(zhǎng)度字段。
      [0039] vi)寫(xiě)入應(yīng)用層報(bào)文。
      [0040] C)進(jìn)程A調(diào)用內(nèi)核模塊提供的報(bào)文發(fā)送函數(shù),報(bào)文發(fā)送函數(shù)檢查報(bào)文中的目的主 機(jī)地址字段,發(fā)現(xiàn)目的主機(jī)地址字段和本主機(jī)的主機(jī)地址相同,于是將位于一級(jí)共享內(nèi)存 中的通信報(bào)文的指針發(fā)送給進(jìn)程B,不需要拷貝通信報(bào)文;進(jìn)程A調(diào)用內(nèi)核模塊提供的報(bào)文 發(fā)送函數(shù)時(shí)將函數(shù)實(shí)參直接寫(xiě)入二級(jí)共享內(nèi)存,不需要向內(nèi)核空間拷貝函數(shù)實(shí)參,整個(gè)過(guò) 程實(shí)現(xiàn)了數(shù)據(jù)的零拷貝。
      [0041] 4、對(duì)于不同主機(jī)上的不同進(jìn)程,通信時(shí)仍然使用圖1所示的報(bào)文幀格式。下面以 一個(gè)主機(jī)1上的進(jìn)程A向主機(jī)2上的進(jìn)程B發(fā)送通信報(bào)文的例子來(lái)詳細(xì)說(shuō)明本發(fā)明是如何 在不同主機(jī)不同進(jìn)程間進(jìn)行通信的。
      [0042] 主機(jī)1上的進(jìn)程A向主機(jī)2上的進(jìn)程B發(fā)送通信報(bào)文的完整過(guò)程如下。
      [0043] a)進(jìn)程A通過(guò)調(diào)用內(nèi)核模塊提供的獲取緩沖區(qū)函數(shù)從一級(jí)共享內(nèi)存區(qū)內(nèi)獲取需 要大小的一塊緩沖區(qū)。進(jìn)程A在調(diào)用內(nèi)核模塊提供的獲取緩沖區(qū)函數(shù)時(shí)將函數(shù)實(shí)參直接寫(xiě) 入二級(jí)共享內(nèi)存,不需要向內(nèi)核空間拷貝函數(shù)實(shí)參。
      [0044] b)進(jìn)程A在步驟a)獲取到的緩沖區(qū)中按照下面的方法組織通信報(bào)文:
      [0045] i )將進(jìn)程B的進(jìn)程ID填入目的進(jìn)程ID字段。
      [0046] ii)將進(jìn)程A自己的進(jìn)程ID填入源進(jìn)程ID字段。
      [0047] iii)將進(jìn)程B所在主機(jī)(主機(jī)2)的主機(jī)地址填入目的主機(jī)地址字段。
      [0048] iv)將進(jìn)程A所在主機(jī)(主機(jī)1)的主機(jī)地址填入源主機(jī)地址字段。
      [0049] v)將應(yīng)用層報(bào)文長(zhǎng)度填入應(yīng)用層報(bào)文長(zhǎng)度字段。
      [0050] vi)寫(xiě)入應(yīng)用層報(bào)文。
      [0051] C)進(jìn)程A調(diào)用內(nèi)核模塊提供的報(bào)文發(fā)送函數(shù),報(bào)文發(fā)送函數(shù)檢查報(bào)文中的目的主 機(jī)地址字段,發(fā)現(xiàn)目的主機(jī)地址字段和本主機(jī)的主機(jī)地址不同,于是在圖1所示的報(bào)文幀 格式前面添加由目的MAC地址,源MAC地址,以太網(wǎng)幀類(lèi)型三個(gè)字段組成的二層以太網(wǎng)報(bào)文 幀頭。不經(jīng)過(guò)協(xié)議棧而是直接調(diào)用系統(tǒng)網(wǎng)絡(luò)設(shè)備的以太網(wǎng)發(fā)送函數(shù),將添加了二層以太網(wǎng) 報(bào)文幀頭后的報(bào)文通過(guò)以太網(wǎng)設(shè)備發(fā)送給主機(jī)2,提高了通信的實(shí)時(shí)性。添加了二層以太網(wǎng) 報(bào)文幀頭后的報(bào)文格式如圖3所示。為了同常用的以太網(wǎng)幀類(lèi)型(例如以太網(wǎng)上的IP包類(lèi) 型為0x0800)進(jìn)行區(qū)別,本方法將以太網(wǎng)幀類(lèi)型定義為0x4e52。Linux操作系統(tǒng)內(nèi)核存在 這樣一種機(jī)制:內(nèi)核模塊可以提供一個(gè)回調(diào)函數(shù)向操作系統(tǒng)內(nèi)核注冊(cè)接收指定類(lèi)型的以太 網(wǎng)幀,當(dāng)操作系統(tǒng)內(nèi)核從以太網(wǎng)設(shè)備上接收到這種類(lèi)型的以太網(wǎng)幀時(shí),就會(huì)調(diào)用由內(nèi)核模 塊提供的回調(diào)函數(shù)去處理這些以太網(wǎng)幀。本發(fā)明中的內(nèi)核模塊向操作系統(tǒng)內(nèi)核注冊(cè)接收類(lèi) 型為0x4e52的以太網(wǎng)幀,收到以太網(wǎng)報(bào)文后,去掉由目的MAC地址、源MAC地址、以太網(wǎng)幀 類(lèi)型三個(gè)字段組成的二層以太網(wǎng)報(bào)文幀頭,將報(bào)文轉(zhuǎn)換成圖1所示的格式,然后將報(bào)文存 入一級(jí)共享內(nèi)存區(qū),最后根據(jù)報(bào)文中的目的進(jìn)程ID字段將報(bào)文指針發(fā)送給目的進(jìn)程。
      [0052] 5、應(yīng)用進(jìn)程采用異步等待的方式等待接收其他進(jìn)程發(fā)來(lái)的通信報(bào)文。進(jìn)程接收通 信報(bào)文的方法說(shuō)明如下:
      [0053] 1)進(jìn)程調(diào)用操作系統(tǒng)提供的select函數(shù)異步等待接收通信報(bào)文,如果沒(méi)有報(bào)文 到達(dá),進(jìn)程進(jìn)入休眠狀態(tài),如果有報(bào)文到達(dá),進(jìn)程被操作系統(tǒng)內(nèi)核喚醒。
      [0054] 2)進(jìn)程被操作系統(tǒng)內(nèi)核喚醒,select函數(shù)返回。進(jìn)程調(diào)用內(nèi)核模塊提供的接收函 數(shù),直接獲取指向保存在一級(jí)共享內(nèi)存區(qū)的通信報(bào)文的指針,通過(guò)該指針直接訪問(wèn)通信報(bào) 文,不需要將報(bào)文拷貝到進(jìn)程的地址空間。
      [0055] 6、通過(guò)3和4的說(shuō)明可以看出,無(wú)論進(jìn)程A和進(jìn)程B在同一個(gè)主機(jī)上還是在不同 的主機(jī)上,應(yīng)用進(jìn)程都使用同樣的函數(shù)接口以及同一種通信報(bào)文格式(圖1所示的報(bào)文幀 格式)來(lái)進(jìn)行通信,實(shí)現(xiàn)了本發(fā)明提出的統(tǒng)一的函數(shù)接口和統(tǒng)一的通信報(bào)文格式。
      [0056] 以上實(shí)施例僅為說(shuō)明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是 按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動(dòng),均落入本發(fā)明保護(hù)范圍 之內(nèi)。
      【權(quán)利要求】
      1. 一種多主機(jī)進(jìn)程間通信的方法,其特征在于包括如下內(nèi)容:若是同一主機(jī)內(nèi)的不同 進(jìn)程間需要通信,使用兩級(jí)共享內(nèi)存來(lái)收發(fā)報(bào)文,從而實(shí)現(xiàn)數(shù)據(jù)的零拷貝;若是不同主機(jī)內(nèi) 的進(jìn)程需要通信,將報(bào)文組織成二層以太網(wǎng)幀格式,不經(jīng)過(guò)協(xié)議棧直接發(fā)送給接收方;且前 述兩種通信方式采用統(tǒng)一的函數(shù)接口和統(tǒng)一的通信報(bào)文格式。
      2. 如權(quán)利要求1所述的一種多主機(jī)進(jìn)程間通信的方法,其特征在于:所述方法中,對(duì)于 同一主機(jī)內(nèi)的不同進(jìn)程間的通信:各進(jìn)程將第一級(jí)共享內(nèi)存映射到進(jìn)程自己的地址空間, 通信的發(fā)起方通過(guò)指針直接在第一級(jí)共享內(nèi)存區(qū)中組織報(bào)文,通信的接收方通過(guò)指針直接 在第一級(jí)共享內(nèi)存區(qū)中訪問(wèn)報(bào)文;各進(jìn)程將第二級(jí)共享內(nèi)存映射到進(jìn)程自己的地址空間, 進(jìn)程在調(diào)用內(nèi)核模塊提供的各種函數(shù)時(shí),將函數(shù)實(shí)參直接寫(xiě)入第二級(jí)共享內(nèi)存,內(nèi)核模塊 直接讀取進(jìn)程的第二級(jí)共享內(nèi)存,獲取函數(shù)實(shí)參。
      3. 如權(quán)利要求1所述的一種多主機(jī)進(jìn)程間通信的方法,其特征在于:所述方法中,對(duì)于 不同主機(jī)間進(jìn)程的通信:將報(bào)文組織成二層以太網(wǎng)幀格式,不經(jīng)過(guò)協(xié)議棧,直接調(diào)用系統(tǒng)網(wǎng) 絡(luò)設(shè)備的以太網(wǎng)發(fā)送函數(shù),將報(bào)文發(fā)送給接收方主機(jī)。
      【文檔編號(hào)】G06F9/54GK104102550SQ201310128953
      【公開(kāi)日】2014年10月15日 申請(qǐng)日期:2013年4月12日 優(yōu)先權(quán)日:2013年4月12日
      【發(fā)明者】姜曉光, 胡紹謙, 王文龍, 林青, 尤小明, 張玉健, 代小翔, 丁浩川, 李大鵬, 楊梅強(qiáng), 陳雄, 程夏 申請(qǐng)人:南京南瑞繼保電氣有限公司, 南京南瑞繼保工程技術(shù)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1