一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法包括:步驟1,將需要交互訪問的多個(gè)進(jìn)程連接到同一個(gè)共享內(nèi)存段;以及步驟2,將所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)分配到所述共享內(nèi)存段,以使所述多個(gè)進(jìn)程之間共享所述數(shù)據(jù)結(jié)構(gòu)包含的成員變量的狀態(tài)關(guān)系,和/或所述數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的結(jié)果數(shù)據(jù)之間的關(guān)系。一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的裝置包括:連接模塊,用于將需要交互訪問的多個(gè)進(jìn)程連接到同一個(gè)共享內(nèi)存段;以及分配模塊,用于將所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)分配到所述共享內(nèi)存段,以使所述多個(gè)進(jìn)程之間共享所述數(shù)據(jù)結(jié)構(gòu)包含的成員變量的狀態(tài)關(guān)系,和/或所述數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的結(jié)果數(shù)據(jù)之間的關(guān)系。
【技術(shù)實(shí)現(xiàn)步驟摘要】
一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法及其裝置
本申請(qǐng)涉及進(jìn)程間數(shù)據(jù)訪問,尤其涉及一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法及其裝置。
技術(shù)介紹
在實(shí)際應(yīng)用中,為了提高設(shè)備處理復(fù)雜數(shù)據(jù)的能力和速度,經(jīng)常需要進(jìn)程間相互協(xié)作,共同完成任務(wù),例如,完成特定的數(shù)據(jù)傳輸、數(shù)據(jù)共享、事件通知、資源共享、進(jìn)程控制等任務(wù)。在已知技術(shù)中,由于各進(jìn)程的用戶空間(即各進(jìn)程私有的虛擬內(nèi)存地址空間)是相互獨(dú)立的,不能直接相互訪問,因此,進(jìn)程間進(jìn)行數(shù)據(jù)交換的常用方式只有通過共享文件、匿名管道、信號(hào)量、消息隊(duì)列和共享內(nèi)存等技術(shù)手段來進(jìn)行,它們所使用的數(shù)據(jù)交換方式都是由一個(gè)進(jìn)程向特定的區(qū)域?qū)懭霐?shù)據(jù),然后,另一個(gè)進(jìn)程從這些區(qū)域讀出上一個(gè)進(jìn)程所寫入的數(shù)據(jù),從而達(dá)到進(jìn)程間相互協(xié)作的目的。然而上述已有的實(shí)現(xiàn)方案僅僅是實(shí)現(xiàn)了進(jìn)程間數(shù)據(jù)的共享,而不能提供進(jìn)程間數(shù)據(jù)之間關(guān)系的共享,即不能實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)的交互訪問。例如專利申請(qǐng)編號(hào)200610067532.2的專利中就描述了進(jìn)程間數(shù)據(jù)共享的一種實(shí)現(xiàn),但不能提供進(jìn)程間數(shù)據(jù)的交互式訪問,尤其不能提供進(jìn)程間數(shù)據(jù)的直接的實(shí)時(shí)交互式訪問。其次,在目前的實(shí)現(xiàn)進(jìn)程間相互協(xié)作的方案中,對(duì)共享內(nèi)存的管理大多采用簡(jiǎn)單的鏈?zhǔn)焦芾恚丛诠蚕韮?nèi)存中簡(jiǎn)單地創(chuàng)建一個(gè)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的鏈表來存儲(chǔ)進(jìn)程在運(yùn)行中產(chǎn)生的一些結(jié)果數(shù)據(jù)。因此目前的實(shí)現(xiàn)進(jìn)程間相互協(xié)作的方案既不能提供進(jìn)程間數(shù)據(jù)的直接的實(shí)時(shí)交互式訪問,也不能對(duì)共享內(nèi)存進(jìn)行高效的利用。
技術(shù)實(shí)現(xiàn)思路
本申請(qǐng)?zhí)峁┝艘环N用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法,所述方法包括:步驟1,將需要交互訪問的多個(gè)進(jìn)程連接到同一個(gè)共享內(nèi)存段;以及步驟2,將所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)分配到所述共享內(nèi)存段,以使所述多個(gè)進(jìn)程之間共享所述數(shù)據(jù)結(jié)構(gòu)包含的成員變量的狀態(tài)關(guān)系,和/或所述數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的結(jié)果數(shù)據(jù)之間的關(guān)系。本申請(qǐng)還提供了一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的裝置,所述裝置包括:連接模塊,用于將需要交互訪問的多個(gè)進(jìn)程連接到同一個(gè)共享內(nèi)存段;以及分配模塊,用于將所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)分配到所述共享內(nèi)存段,以使所述多個(gè)進(jìn)程之間共享所述數(shù)據(jù)結(jié)構(gòu)包含的成員變量的狀態(tài)關(guān)系,和/或所述數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的結(jié)果數(shù)據(jù)之間的關(guān)系。根據(jù)本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法和裝置,不但為進(jìn)程間數(shù)據(jù)的直接的實(shí)時(shí)交互式訪問提供了一種可能的實(shí)現(xiàn),而且,本申請(qǐng)可以是跨操作系統(tǒng)平臺(tái)的。另外,如前所述,由于本申請(qǐng)所采用的共享內(nèi)存管理方式類似于Linux內(nèi)核的slab管理方式,因此,本申請(qǐng)還能夠?qū)崿F(xiàn)對(duì)共享內(nèi)存的高效管理。附圖說明下面將參照所附附圖來描述本申請(qǐng)的實(shí)施例,其中:圖1示例性示出了在本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法中進(jìn)程獲取共享內(nèi)存的一個(gè)實(shí)施例的示意圖;圖2示例性示出了在本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法中共享內(nèi)存初始化后的內(nèi)存池結(jié)構(gòu)的一個(gè)實(shí)施例的示意圖;圖3示例性示出了在本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法中使用一段時(shí)間后的slab結(jié)構(gòu)的一個(gè)實(shí)施例的示意圖;圖4示例性示出了在現(xiàn)有技術(shù)的用于實(shí)現(xiàn)進(jìn)程間相互協(xié)作的方法中進(jìn)程共享數(shù)據(jù)的示意圖;圖5示例性示出了在本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法中進(jìn)程共享數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系的示意圖;以及圖6示例性示出了本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的裝置的示意圖。具體實(shí)施方式下面將結(jié)合圖1-圖5詳細(xì)描述本申請(qǐng),其中,結(jié)合圖1-圖3將描述本申請(qǐng)如何對(duì)共享內(nèi)存進(jìn)行高效管理,結(jié)合圖4-圖5將描述本申請(qǐng)如何實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問。圖1-圖3所描述的對(duì)共享內(nèi)存的高效管理是基于如Linux操作系統(tǒng)平臺(tái)等在一定程度上采用了buddy內(nèi)存分配原則的任何操作系統(tǒng)平臺(tái)。以Linux操作系統(tǒng)平臺(tái)上運(yùn)行的任何一個(gè)用戶進(jìn)程為例,圖1示例性示出了在本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法中進(jìn)程獲取共享內(nèi)存的一個(gè)實(shí)施例的示意圖。首先,對(duì)應(yīng)于所述用戶進(jìn)程的用戶類(UserClass)100向一個(gè)公用的或?yàn)楣芾韮?nèi)存而編寫的內(nèi)存管理器類(MEM_manager類)110注冊(cè)所要使用的共享內(nèi)存的名稱與大小。然后,MEM_manager類110初始化一個(gè)內(nèi)存池類(MEM_pool類)120,由所述MEM_pool類120來初始化一個(gè)共享內(nèi)存塊(或稱為內(nèi)存段或內(nèi)存池(pool))以供所述用戶進(jìn)程使用。圖2示例性示出了在本申請(qǐng)的用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法中共享內(nèi)存初始化后的內(nèi)存池結(jié)構(gòu)(或pool結(jié)構(gòu))的一個(gè)實(shí)施例的示意圖。首先,假設(shè)所初始化的共享內(nèi)存段的大小為N(N為正整數(shù))字節(jié),且共享內(nèi)存段中的每一個(gè)頁面(page)的大小為M(M為正整數(shù))字節(jié),那么,根據(jù)buddy內(nèi)存分配原則,即僅將內(nèi)存劃分為2的冪次方個(gè)內(nèi)存分區(qū)來使用,在本申請(qǐng)中,內(nèi)存分區(qū)為一個(gè)頁面,用于存儲(chǔ)一個(gè)最大不超過一個(gè)頁面大小的數(shù)據(jù)(可以理解,將I(I為正整數(shù))個(gè)內(nèi)存分區(qū)一起使用就可以存儲(chǔ)一個(gè)最大不超過I個(gè)頁面大小的數(shù)據(jù)),因此,假設(shè)該塊共享內(nèi)存段的所有N字節(jié)全部都用于存儲(chǔ)用戶進(jìn)程的數(shù)據(jù)(這是一種假設(shè)的理想情況),那么該塊共享內(nèi)存段(即內(nèi)存塊或內(nèi)存池)可分配的不同大小類型的數(shù)據(jù)的種類數(shù)L(也即該塊共享內(nèi)存段可分配的不同大小類型的數(shù)據(jù)的級(jí)別數(shù)L,為正整數(shù))為:L=log2N-log2M(1)例如N=M,則L=0,即只有1個(gè)級(jí)別(0級(jí)),表示該塊共享內(nèi)存段只能存儲(chǔ)一種大小類型的數(shù)據(jù)(即最大不超過1個(gè)頁面大小的數(shù)據(jù));N=8M,則L=3,即有4個(gè)級(jí)別(0級(jí)、1級(jí)、2級(jí)、3級(jí)),表示該塊共享內(nèi)存段能存儲(chǔ)4種大小類型的數(shù)據(jù),即能夠存儲(chǔ)最多8個(gè)M字節(jié)的數(shù)據(jù)、或最多4個(gè)2M字節(jié)的數(shù)據(jù)、或最多2個(gè)4M字節(jié)的數(shù)據(jù)、或最多1個(gè)8M字節(jié)的數(shù)據(jù)。另外,仿照Linux操作系統(tǒng)中對(duì)slab結(jié)構(gòu)的使用,如圖2所示,在本申請(qǐng)中,每個(gè)slab結(jié)構(gòu)都是共享內(nèi)存中的一個(gè)小內(nèi)存塊,這樣的一個(gè)slab結(jié)構(gòu)(即一個(gè)小內(nèi)存塊)包含一個(gè)或多個(gè)頁面,這樣的一個(gè)slab結(jié)構(gòu)(即這樣的一個(gè)小內(nèi)存塊,即這樣的一個(gè)或多個(gè)頁面)被劃分成多個(gè)相同大小類型的對(duì)象(用于分別存儲(chǔ)相應(yīng)的相同大小類型的數(shù)據(jù),這里相同大小類型的數(shù)據(jù)的含義是指數(shù)據(jù)的尺寸大小在一個(gè)級(jí)別上,而并非指數(shù)據(jù)的尺寸大小絕對(duì)相同),即每個(gè)slab結(jié)構(gòu)分配有多個(gè)這樣的對(duì)象,也就是說每個(gè)slab結(jié)構(gòu)對(duì)應(yīng)一種大小類型的數(shù)據(jù),因此,一個(gè)共享內(nèi)存段可分配的不同大小類型的數(shù)據(jù)的級(jí)別數(shù)(種類數(shù))L意味著該塊共享內(nèi)存段可以分配的slab結(jié)構(gòu)的種類數(shù)最多為L,為便于描述,這里假設(shè)正好有所有L種slab結(jié)構(gòu)(包括暫時(shí)為空的slab結(jié)構(gòu)),然而,由于共享內(nèi)存段在實(shí)際中并非是將所有N字節(jié)全部都用于存儲(chǔ)用戶進(jìn)程的數(shù)據(jù),而是需要消耗一部分字節(jié)來對(duì)該塊共享內(nèi)存段自身的結(jié)構(gòu)及其所包含的slab的結(jié)構(gòu)進(jìn)行描述,因此,在實(shí)際中,一個(gè)可分配的slab結(jié)構(gòu)的種類數(shù)最多為L的共享內(nèi)存段(即內(nèi)存池結(jié)構(gòu))實(shí)際可用于分配所述用戶進(jìn)程數(shù)據(jù)的頁面的個(gè)數(shù)K(K為正整數(shù))為:K=(N-該內(nèi)存池結(jié)構(gòu)屬性描述字所占用的字節(jié)數(shù)-L*一個(gè)slab結(jié)構(gòu)屬性描述字所占用的字節(jié)數(shù))/M(2)如圖2所示,在所述共享內(nèi)存段(內(nèi)存池)中,該內(nèi)存池結(jié)構(gòu)屬性描述字200占用了一部分字節(jié)數(shù),其中內(nèi)存池結(jié)構(gòu)描述字200描述該共享內(nèi)存段的屬性,主要的屬性包本文檔來自技高網(wǎng)...

【技術(shù)保護(hù)點(diǎn)】
一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法,所述方法包括:步驟1,將需要交互訪問的多個(gè)進(jìn)程連接到同一個(gè)共享內(nèi)存段;以及步驟2,將所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)分配到所述共享內(nèi)存段,以使所述多個(gè)進(jìn)程之間共享所述數(shù)據(jù)結(jié)構(gòu)包含的成員變量的狀態(tài)關(guān)系,和/或所述數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的結(jié)果數(shù)據(jù)之間的關(guān)系。
【技術(shù)特征摘要】
1.一種用于實(shí)現(xiàn)在進(jìn)程間進(jìn)行數(shù)據(jù)交互訪問的方法,所述方法包括:步驟1,將需要交互訪問的多個(gè)進(jìn)程連接到同一個(gè)共享內(nèi)存段;以及步驟2,將所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)分配到所述共享內(nèi)存段,以使所述多個(gè)進(jìn)程之間共享所述數(shù)據(jù)結(jié)構(gòu)包含的成員變量的狀態(tài)關(guān)系,和/或所述數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的結(jié)果數(shù)據(jù)之間的關(guān)系;在所述步驟1中,如果所述共享內(nèi)存段的大小為N,N為正整數(shù),所述共享內(nèi)存段中的每一個(gè)頁面的大小為M,M為正整數(shù),那么僅將所述共享內(nèi)存段劃分為2的冪次方個(gè)內(nèi)存分區(qū)來使用,其中一個(gè)所述內(nèi)存分區(qū)為一個(gè)所述頁面,并且所述共享內(nèi)存段可分配的不同大小類型的數(shù)據(jù)的種類數(shù)L為:L=log2N-log2M,L為正整數(shù),并且通過指向一個(gè)或多個(gè)所述頁面來形成一個(gè)slab結(jié)構(gòu),其中一個(gè)所述slab結(jié)構(gòu)被劃分成多個(gè)相同大小類型的對(duì)象,并且所述多個(gè)相同大小類型的對(duì)象用于分別存儲(chǔ)相應(yīng)的相同大小類型的數(shù)據(jù),以及并且所述共享內(nèi)存段最多具有L個(gè)所述slab結(jié)構(gòu),每個(gè)所述slab結(jié)構(gòu)對(duì)應(yīng)一種大小類型的數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其中,在所述步驟1中,如果所述多個(gè)進(jìn)程中的至少兩個(gè)進(jìn)程之間的關(guān)系是父子進(jìn)程關(guān)系,就在父進(jìn)程連接所述共享內(nèi)存段并初始化所述共享內(nèi)存段后再創(chuàng)建子進(jìn)程。3.根據(jù)權(quán)利要求1所述的方法,其中,在所述步驟1中,如果所述多個(gè)進(jìn)程之間的關(guān)系是非父子進(jìn)程關(guān)系,則所述多個(gè)進(jìn)程在連接所述共享內(nèi)存段時(shí),需要在各自的進(jìn)程空間中指定相同的映射地址,以便映射到相同的所述共享內(nèi)存段。4.根據(jù)權(quán)利要求1所述的方法,其中,在所述步驟2中,所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)包括容器、結(jié)構(gòu)、函數(shù)、數(shù)組、數(shù)據(jù)鏈中的一個(gè)或多個(gè)。5.根據(jù)權(quán)利要求1所述的方法,其中,在所述步驟2中,所述多個(gè)進(jìn)程中需要共享的數(shù)據(jù)結(jié)構(gòu)是標(biāo)準(zhǔn)模板庫容器。6.根據(jù)權(quán)利要求1所述的方法,其中,在所述步驟2中,通過設(shè)置在所述多個(gè)進(jìn)程的地址空間中的指針來使用所述數(shù)據(jù)結(jié)構(gòu)。7.一種用于實(shí)現(xiàn)在進(jìn)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:李曉波,李永亮,
申請(qǐng)(專利權(quán))人:阿里巴巴集團(tuán)控股有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。