亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        內(nèi)存映射技術(shù)在大數(shù)據(jù)實時存儲中的應(yīng)用

        2017-05-13 06:40:43劉平賈林林
        河南科技 2017年5期
        關(guān)鍵詞:內(nèi)核視圖進程

        劉平 賈林林

        (中國空空導(dǎo)彈研究院,河南 洛陽 471009)

        內(nèi)存映射技術(shù)在大數(shù)據(jù)實時存儲中的應(yīng)用

        劉平 賈林林

        (中國空空導(dǎo)彈研究院,河南 洛陽 471009)

        大數(shù)據(jù)的高速實時存儲是某圖像采集設(shè)備研發(fā)過程中所要面對的一項問題,為了解決數(shù)據(jù)吞吐量大、系統(tǒng)并行處理任務(wù)多等問題,不進行數(shù)據(jù)緩沖存儲以及文件I/O操作的內(nèi)存映射文件正是解決多個進程間數(shù)據(jù)共享的最有效方法。結(jié)合某測控設(shè)備的實際研發(fā),對內(nèi)存映射技術(shù)的運行機制和具體實現(xiàn)流程進行進一步的研究,并針對實際情況進行特殊處理,以保證數(shù)據(jù)存儲的實時性和穩(wěn)定性。最后經(jīng)過測控設(shè)備的實際測試,內(nèi)存映射技術(shù)表現(xiàn)出良好的性能,滿足系統(tǒng)數(shù)據(jù)存儲方面的要求,而且相比較其他方式占用極少的物理資源,不會影響系統(tǒng)的性能。

        內(nèi)存映射;大數(shù)據(jù);多線程;實時

        某128×128元圖像采集系統(tǒng)用于紅外產(chǎn)品圖像高速實時的連續(xù)處理,系統(tǒng)要求紅外圖像能夠無差錯地實時存儲1h。按照產(chǎn)品每秒100幀頻計算,1h的數(shù)據(jù)存儲量大約為11.15GB,對于如此大數(shù)據(jù)量的存儲,采用普通文件進行操作受限于Windows進程空間有限,無法實現(xiàn)4GB以上數(shù)據(jù)文件一次性存儲。另外,基于文件I/O操作的普通文件操作,其存儲速度慢,容易在此類實時性要求較高的系統(tǒng)中出現(xiàn)圖像采集丟幀、顯示速率不達要求、存儲壓力過大、運行可靠性低等問題,從而導(dǎo)致任務(wù)要求無法完成[1,2]。

        通過設(shè)計專門的內(nèi)存映射機制實現(xiàn)高速實時的紅外圖像實時存儲,可以解決大數(shù)據(jù)量的實時存儲問題。同時,該設(shè)計具備的高效率與高可靠性,也能夠滿足整個系統(tǒng)的其他要求。

        1 內(nèi)存映射存儲特點

        現(xiàn)在,一般采取內(nèi)存映射技術(shù)完成大文件的實時存儲操作。內(nèi)存映射技術(shù)是Windows的一種內(nèi)存管理方法。通過這種方式,在不占用額外的磁盤空間和內(nèi)存空間條件下,就能實現(xiàn)目標(biāo)磁盤文件與進程虛擬地址空間的對應(yīng)關(guān)系。由于省去了數(shù)據(jù)緩沖存儲及文件I/O操作,內(nèi)存映射處理文件存儲,速度很快而且能夠一次性處理16EB(64位機)的數(shù)據(jù)量。

        2 內(nèi)存映射技術(shù)實現(xiàn)機制

        內(nèi)存映射文件與虛擬內(nèi)存技術(shù)從本質(zhì)上比較接近,兩者雖然都是在磁盤空間內(nèi)保留一定地址空間的區(qū)域用于完成大文件的存儲,但是地址空間的性質(zhì)有所不同,內(nèi)存文件映射的物理存儲器不是虛擬內(nèi)存所采用的系統(tǒng)頁文件,而是使用某個已經(jīng)存在于磁盤上的文件,而且在對這個文件進行操作之前先期以一種類似于將文件整體從磁盤加載至內(nèi)存的方式完成映射操作。

        內(nèi)存映射技術(shù)最大的優(yōu)點在于,不對文件執(zhí)行I/O操作就能處理存儲于磁盤上的文件,這樣做在數(shù)據(jù)處理的過程中將不需要為所有的文件重新申請并分配緩存,這類緩存操作將由系統(tǒng)直接進行管理,從而大大提高了系統(tǒng)的運行效率。

        在處理大數(shù)據(jù)量的文件時,采用內(nèi)存映射文件技術(shù)與其他數(shù)據(jù)存儲方式相比,有其顯而易見的優(yōu)越性,因為在整個過程中將不再需要進行將文件數(shù)據(jù)加載至內(nèi)存的操作,也不需要完成將數(shù)據(jù)從內(nèi)存回寫至文件和釋放內(nèi)存塊等操作。

        實際應(yīng)用的系統(tǒng)很少采用單一線程模式運行,一般都是具有數(shù)據(jù)共享性質(zhì)的多線程同時工作。共享的數(shù)據(jù)量小仍可以采取采取靈活多變的處理方式,但是如果共享數(shù)據(jù)的容量巨大,那么如果不使用內(nèi)存映射文件技術(shù)而過多操作磁盤和內(nèi)存,將會使系統(tǒng)資源不堪重負。從這一點來說,多線程數(shù)據(jù)共享處理方法首推內(nèi)存映射文件技術(shù)。

        3 內(nèi)存映射技術(shù)運行流程

        軟件設(shè)計過程中,為了實現(xiàn)一次性存儲大于4GB圖像數(shù)據(jù),并保證存儲的實時性,應(yīng)用內(nèi)存映射文件處理方式來滿足要求,并在映射中作了特殊處理保證存儲的穩(wěn)定性。圖1給出了內(nèi)存映射文件的流程圖。

        受Windows系統(tǒng)的限制,一個32位進程最大可分配4GB的虛擬地址空間,實際工程應(yīng)用過程中不可能將大于這一容量的文件通過一次映射操作就完成存儲。當(dāng)需要處理的文件容量超過4GB時,就只能將此大文件的各個部分映射到進程的地址空間之后取消映射,然后重新映射文件的下一部分數(shù)據(jù)。這需要對上面的一般流程進行適當(dāng)?shù)母?,形成如圖2的大文件內(nèi)存映射流程圖。

        關(guān)鍵函數(shù)說明:

        HANDLE CreateFile()

        用途:創(chuàng)建內(nèi)存映射文件內(nèi)核對象。

        此函數(shù)的作用主要是為內(nèi)存映射文件分配物理磁盤位置,對文件內(nèi)核對象的訪問類型權(quán)限進行設(shè)定,主要包括可讀權(quán)限、可寫權(quán)限、可讀寫權(quán)限和設(shè)備查詢權(quán)限。在此選用可讀寫訪問權(quán)限。

        HANDLE CreateFileMapping()

        用途:在系統(tǒng)中所創(chuàng)建的“文件映射”內(nèi)核對象保留相應(yīng)指定容量大小的物理存儲器。

        圖1 內(nèi)存映射文件流程圖

        圖2 大文件內(nèi)存映射流程圖

        該函數(shù)中的主要參數(shù)說明:將要映射到進程的地址空間的文件句柄通過hfile參數(shù)指定,其就是之前CreateFile()函數(shù)得到的文件句柄。同時,當(dāng)需要將存儲器映射到進程的地址空間中時,系統(tǒng)首先確認物理存儲器頁面的應(yīng)被賦予何種保護屬性,而且該屬性必須與CreateFile()函數(shù)打開文件時所指定的訪問標(biāo)識相匹配。

        Windows可以采用64位值來進行文件操作,那么就需要劃分一定大小的物理存儲器空間用來存儲內(nèi)存映射文件,這時可以用2個重要參數(shù)“dwMaximumSizeHigh”與“dwMaximumSizeLow”分別指定內(nèi)存映射文件內(nèi)核對象大小的高32位值和低32位值。如果將其都設(shè)置為0,那么將為創(chuàng)建的“文件映射”內(nèi)核對象保留與物理文件實際容量相同大小的區(qū)域。

        關(guān)鍵問題是上面2個參數(shù)所指定的大小必須是系統(tǒng)最小分配粒度的整數(shù)倍,即64KB的整數(shù)倍。在某圖像采集系統(tǒng)軟件設(shè)計中圖像數(shù)據(jù)一次性存儲為12GB左右,因此設(shè)定15GB的存儲空間,即2個參數(shù)分別為0x00000003和0xc0000000。

        LPVOID MapViewofFile()

        用途:將文件數(shù)據(jù)映射到分配給進程的地址空間,系統(tǒng)為保留的地址空間提交物理文件的數(shù)據(jù)。

        主要參數(shù)說明:通過hFileMappingObject函數(shù)指定“文件映射”內(nèi)核對象句柄。

        64位偏移地址的高32位地址和低32位地址通過dw?FileOffsetHigh和dwFileOffsetLow分別進行指定,“文件映像視圖”的首地址就是此64位地址,該地址被存放在“文件映射”內(nèi)核對象所保留的地址空間中。

        視圖容量的大小通過dwNumberofBytesToMap來指定,該值被設(shè)置為0時,那么將忽略前面的偏移地址,系統(tǒng)就會把整個文件映射為一個映像。該函數(shù)的返回值代表了函數(shù)是否得到了執(zhí)行:如果函數(shù)執(zhí)行成功,則返回一個指針,并且指向映像視圖在進程的地址空間中的起始地址;當(dāng)返回值是NULL時,則表明函數(shù)執(zhí)行失敗。

        在此,視圖的大小也必須為64KB分配粒度的整數(shù)倍。采集系統(tǒng)軟件設(shè)計中,基于資源利用率及速率方面的考慮,選用64MB為一個視圖大小,即每次映射的內(nèi)存大小,表示的圖像幀數(shù)為64×1 024×1 024/130/128/2=2 048幀。

        此外,對于同一個物理文件可以創(chuàng)建多個“文件映像視圖”,而且這些映像在系統(tǒng)中是完全可以共存和重疊的。同時,為同一個物理文件創(chuàng)建“文件映像視圖”也可以由不同的進程完成,出于節(jié)約系統(tǒng)資源的目的,該文件映像使用的是同一個物理文件地址空間,從而高效地在多進程間完成數(shù)據(jù)共享,實現(xiàn)進程通訊的目的。圖3給出了件視圖與物理文件空間之間的關(guān)系。

        UnmapViewofFile()

        用途:通過調(diào)用UnmapViewofFile()函數(shù)在文件映像數(shù)據(jù)文件不再使用時得到釋放。在執(zhí)行該函數(shù)操作時,必須在退出進程之前完成,以此防止進程終止后先前保留的區(qū)域得不到釋放。

        CloseHandle()

        用途:該函數(shù)執(zhí)行的是將已創(chuàng)建的內(nèi)核對象關(guān)閉的操作,防止未主動關(guān)閉在隨后的程序運行時出現(xiàn)資源泄露。

        圖3 文件視圖與物理文件空間之間的關(guān)系

        已經(jīng)打開的內(nèi)核對象需要在使用完畢之后通過CloseHandle()函數(shù)將其關(guān)閉,這與Win32的大多數(shù)對象相同。假如此時不進行關(guān)閉對象的操作,那么程序繼續(xù)運行將出現(xiàn)資源泄露的現(xiàn)象。那么即使程序退出運行后操作系統(tǒng)會自動關(guān)閉在進程中打開而未關(guān)閉的任何對象,也會在隨后的進程運行過程中必然不斷積累過多的資源句柄。所以,通過CloseHandle()函數(shù)將那些不再使用的內(nèi)核對象關(guān)閉是必須的。

        4 存儲效果及特殊處理

        實際測試證明,進行大數(shù)據(jù)文件處理時采用內(nèi)存映射文件技術(shù)具有很好的效果,系統(tǒng)可以能夠穩(wěn)定存儲數(shù)據(jù)1h,滿足設(shè)計要求。采用此處理方式與通常用CFile類和ReadFile()和WriteFile()等函數(shù)的方式相比對系統(tǒng)性能的影響微乎其微,因為其所消耗的物理資源極少。

        由于實際應(yīng)用中圖像數(shù)據(jù)每次存儲量均不同,可能僅有幾秒鐘的圖像即數(shù)十兆的數(shù)據(jù)量,為了使存儲滿足按需分配,在結(jié)束存儲時要進行特殊的處理。圖4給出了實現(xiàn)此要求的主要步驟。

        其中,以實際長度創(chuàng)建文件映射中將原文件映射的最終偏移量作為創(chuàng)建映射對象函數(shù)的內(nèi)置參數(shù),即創(chuàng)建了實際大小的文件映射對象。此外,要注意的是每次拷貝的數(shù)據(jù)量不能太大,最大不要超過進程的可分配地址空間2GB;也不要太小,以免拷貝次數(shù)太多,影響系統(tǒng)性能。在本圖像采集系統(tǒng)軟件設(shè)計中取320、640、800MB做試驗,發(fā)現(xiàn)取640MB為一次拷貝運行良好,對系統(tǒng)性能無太大影響。

        圖4 刪除文件處理

        [1]張澤清.淺析Windows內(nèi)存映射文件[J].福建師大福清分校學(xué)報,2006(2):20-25.

        [2]吳志紅,孫力,閻杰.高速紅外圖像實時采集存儲與顯示技術(shù)[J].紅外技術(shù),2003(5):56-59.

        Application of Memory Mapping Technology in Large Data Storage

        Liu PingJia Linlin
        (China Airborne Missile Academy,Luoyang Henan 471009)

        The high-speed real-time storage of big data is a problem faced in the process of equipment research and development of an image acquisition,data throughput,in order to solve the problem of parallel processing system more tasks,not the data buffer storage and file I/O operation of the memory mapped file is the most effective method to solve the data sharing between multiple processes.Combined with the actual research for measurement and control equipment,the memory mapping technology operation mechanism and implementation process were further studied, and according to the actual situation of the special treatment to ensure the real-time and stability of data storage.The result of test and control equipment,memory mapping technology shows good performance,to meet the requirements of the data storage system,and compared with other means occupy very little physical resources,will not affect the performance of the system.

        memory mapping;large data;multithread;real-time

        TP311

        :A

        :1003-5168(2017)03-0039-03

        2017-02-11

        劉平(1981-),男,工程師,研究方向:紅外導(dǎo)引總體技術(shù)。

        猜你喜歡
        內(nèi)核視圖進程
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        債券市場對外開放的進程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        社會進程中的新聞學(xué)探尋
        91久久精品色伊人6882| 国产精品人成在线观看| av在线资源一区二区| 蜜桃视频在线看一区二区三区 | 久热这里只有精品99国产| 福利一区二区三区视频在线| 一区二区三区国产色综合| 亚洲精品中文字幕一二| 久久精品99国产精品日本| 人妻少妇精品专区性色av| 色欧美与xxxxx| 中文字幕人妻被公喝醉在线| 午夜dy888国产精品影院| 日日噜噜夜夜狠狠久久无码区| 国产极品视觉盛宴在线观看| 综合亚洲二区三区四区在线| 亚洲av无码久久精品色欲| 国产目拍亚洲精品一区二区 | 无码人妻一区二区三区免费看| 十八禁在线观看视频播放免费| 黄色毛片在线看| 一区二区三区视频在线免费观看| 精品国产一区二区三区a| 含紧一点h边做边走动免费视频| 鲁一鲁一鲁一鲁一澡| 麻豆av一区二区天堂| 青青草免费在线爽视频| 亚洲中文字幕在线观看| 中文字幕在线观看国产双飞高清 | 国产成人精品免费久久久久| 精品在线亚洲一区二区三区| 国产精品理论片在线观看| 男女肉粗暴进来120秒动态图 | 人妻妺妺窝人体色www聚色窝| 91综合久久婷婷久久| 日韩一区二区三区人妻免费观看| 亚洲精品无人区| 精品国产三级a| 国产激情一区二区三区不卡av| 国产va免费精品高清在线观看| 456亚洲老头视频|