您的位置: 旅游網(wǎng) > 綜藝 >> 湖南

    中用內(nèi)存映射文件處理大文件計劃

    發(fā)布時間:2021-10-28 05:38:52

    引言

    文件操作是應(yīng)用程序最為基本的功能之一,Win32 API和MFC均提供有支持文件處理的函數(shù)和類,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile類等。一般來說,以上這些函數(shù)可以滿足大多數(shù)場合的要求,但是對于某些特殊應(yīng)用領(lǐng)域所需要的動輒幾十GB、幾百GB、乃至幾TB的海量存儲,再以通常的文件處理方法進行處理顯然是行不通的。目前,對于上述這種大文件的操作一般是以內(nèi)存映射文件的方式來加以處理的,本文下面將針對這種Windows核心編程技術(shù)展開討論。

    內(nèi)存映射文件概述

    內(nèi)存文件映射也是Windows的一種內(nèi)存管理方法,提供了一個統(tǒng)一的內(nèi)存管理特征,使應(yīng)用程序可以通過內(nèi)存指針對磁盤上的文件進行訪問,其過程就如同對加載了文件的內(nèi)存的訪問。通過文件映射這種使磁盤文件的全部或部分內(nèi)容與進程虛擬地址空間的某個區(qū)域建立映射關(guān)聯(lián)的能力,可以直接對被映射的文件進行訪問,而不必執(zhí)行文件I/O操作也無需對文件內(nèi)容進行緩沖處理。內(nèi)存文件映射的這種特性是非常適合于用來管理大尺寸文件的。

    在使用內(nèi)存映射文件進行I/O處理時,系統(tǒng)對數(shù)據(jù)的傳輸按頁面來進行。至于內(nèi)部的所有內(nèi)存頁面則是由虛擬內(nèi)存管理器來負責(zé)管理,由其來決定內(nèi)存頁面何時被分頁到磁盤,哪些頁面應(yīng)該被釋放以便為其它進程提供空閑空間,以及每個進程可以擁有超出實際分配物理內(nèi)存之外的多少個頁面空間等等。由于虛擬內(nèi)存管理器是以一種統(tǒng)一的方式來處理所有磁盤I/O的(以頁面為單位對內(nèi)存數(shù)據(jù)進行讀寫),因此這種優(yōu)化使其有能力以足夠快的速度來處理內(nèi)存操作。

    使用內(nèi)存映射文件時所進行的任何實際I/O交互都是在內(nèi)存中進行并以標準的內(nèi)存地址形式來訪問。磁盤的周期性分頁也是由操作系統(tǒng)在后臺隱蔽實現(xiàn)的,對應(yīng)用程序而言是完全透明的。內(nèi)存映射文件的這種特性在進行大文件的磁盤事務(wù)操作時將獲得很高的效益。

    需要說明的是,在系統(tǒng)的正常的分頁操作過程中,內(nèi)存映射文件并非一成不變的,它將被定期更新。如果系統(tǒng)要使用的頁面目前正被某個內(nèi)存映射文件所占用,系統(tǒng)將釋放此頁面,如果頁面數(shù)據(jù)尚未保存,系統(tǒng)將在釋放頁面之前自動完成頁面數(shù)據(jù)到磁盤的寫入。

    對于使用頁虛擬存儲管理的Windows操作系統(tǒng),內(nèi)存映射文件是其內(nèi)部已有的內(nèi)存管理組件的一個擴充。由可執(zhí)行代碼頁面和數(shù)據(jù)頁面組成的應(yīng)用程序可根據(jù)需要由操作系統(tǒng)來將這些頁面換進或換出內(nèi)存。如果內(nèi)存中的某個頁面不再需要,操作系統(tǒng)將撤消此頁面原擁用者對它的控制權(quán),并釋放該頁面以供其它進程使用。只有在該頁面再次成為需求頁面時,才會從磁盤上的可執(zhí)行文件重新讀入內(nèi)存。同樣地,當(dāng)一個進程初始化啟動時,內(nèi)存的頁面將用來存儲該應(yīng)用程序的靜態(tài)、動態(tài)數(shù)據(jù),一旦對它們的操作被提交,這些頁面也將被備份至系統(tǒng)的頁面文件,這與可執(zhí)行文件被用來備份執(zhí)行代碼頁面的過程是很類似的。圖1展示了代碼頁面和數(shù)據(jù)頁面在磁盤存儲器上的備份過程:

    作為保障性住房輪候家庭 圖1 進程的代碼頁、數(shù)據(jù)頁在磁盤存儲器上的備份

    顯然,如果可以采取同一種方式來處理代碼和數(shù)據(jù)頁面,無疑將會提高程序的執(zhí)行效率,而內(nèi)存映射文件的使用恰恰可以滿足此需求。

    南京好男科醫(yī)院
    銀川子宮內(nèi)膜炎治療費用
    艾拉莫德片是不是止痛藥呢
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 极品丝袜乱系列全集阅读| 美女扒开胸罩露出奶了无遮挡免费| 夫妇交换俱乐部微信群| 国产一级视频播放| 久久久久久久人妻无码中文字幕爆 | 99re66热这里都是精品| 日日操夜夜操视频| 免费看欧美一级特黄a大片一 | 人妻少妇偷人精品视频| 超兴奋的朋…中文字幕| 国产精品成人va在线观看入口| 一区二区三区免费在线视频| 日本高清视频在线www色| 亚洲春色在线观看| 韩国护士hd高清xxxx| 国模冰莲自慰肥美胞极品人体图| 亚洲AV无码乱码麻豆精品国产| 男人日女人动态视频| 国产欧美日韩精品a在线观看| www.午夜视频| 日产精品一卡2卡三卡4乱码久久| 亚洲国产欧美在线看片一国产| 男男肉动漫未删减版在线观看| 国产一级不卡毛片| 久久综合九色综合欧美就去吻| 国精无码欧精品亚洲一区| 一级片在线免费看| 日本牲交大片无遮挡| 俺去俺也在线www色官网| xxxx中文字幕| 天堂网www在线资源网| 中文字幕亚洲欧美日韩在线不卡| 日韩精品电影一区亚洲| 亚洲成a人片在线观看中文| 男人让女人桶爽30分钟| 四虎影永久在线高清免费| 6080午夜乱理伦片| 奇米影视77777| 中国成人在线视频| 日本在线免费看片| 亚洲第一色在线|