Windows核心程式設計 記憶體對映檔案(3)

2021-09-22 18:55:32 字數 718 閱讀 9542

1. 用記憶體對映檔案來處理大檔案

方法就是只對映檔案的乙個檢視,這個檢視只包含檔案的一小部分資料。比如一開始時,把檔案開關的部分對映到檢視中,完成對檢視的訪問後,撤銷這一部分的對映,再把檔案的另一部分對映到檢視,重複此過程,直至完成對整個檔案的訪問。

2.記憶體對映檔案和一致性

系統允許把同乙個檔案中的資料對映到多個檢視中。例如把乙個檔案的前10kb對映到乙個檢視a,把同乙個檔案的前4kb對映到檢視b,只是對映的是同乙個檔案對映物件,則系統會確保各檢視中的資料是一致的。

如果應用程式在乙個檢視中修改了檔案的內容,則系統會更新該檢視對應檔案對映物件的其它檢視。 原因是系統是在同乙個記憶體頁面儲存被對映的資料,即使該記憶體頁面被多次對映到程序的位址空間中。

如果多個程序把同乙個資料檔案對映到多個檢視中,資料也會是一致的,因為資料檔案中的每個頁面在記憶體中只有乙份。

3.用記憶體對映檔案在程序間共享資料

windows提供了多種共享資料的機制,包括rpc、com、ole、dde、windows訊息(尤其是wm_copydata)、剪貼簿、郵槽、管道、套接字等。其實共享資料最底層的機制是記憶體對映檔案,這種共享機制是通過讓兩個或多個程序對映同乙個檔案對映物件的檢視來實現的,這意味著程序間共享相同的物理儲存頁面。因此,當乙個程序在檢視中寫入資料時,其它程序會在它們的檢視中看到變化。注意:對於多個程序共享同乙個檔案對映物件,所有程序使用的檔案對映 物件名稱必須完全相同。

4.以頁交換檔案為後備儲存器的記憶體對映檔案

Windows核心程式設計 記憶體對映檔案(2)

2.對映到記憶體的資料檔案 這種方法最大的優點是讓系統為我們處理所有與檔案快取有關的操作,我們不必關心分配記憶體 把檔案中的資料載入記憶體,把資料 寫回檔案 以及釋放記憶體等操作,不過如果 操作過程被打斷,比如斷電,資料可能被破壞。要使用記憶體對映檔案,需執行以下步驟 1 建立或開啟乙個檔案核心物件...

windows 核心程式設計下的記憶體對映檔案

虛擬記憶體實現的硬體基礎是分頁機制,關於分頁機制本文再此不做介紹。虛擬記憶體實現的另外乙個重要基礎是區域性性原理。區域性性是指程式總是趨向於使用最近使用過的資料和指令,也就是說程式執行時所訪問的儲存器位址分布是相對集中的。區域性性原理是應用虛擬記憶體提公升效能的主要原因,也是虛擬記憶體卻別與記憶體對...

windows記憶體對映

為了說明記憶體對映的使用方式,下面是個人寫的例子 首先建立了乙個大於2gb的檔案,並寫入一定量地測試資料,如下 然後讀取檔案中的資料測試,如下 最後採用記憶體對映的方式對這個大檔案中的字串翻轉,並讀取字串測試,如下 在記憶體對映時,採用多次mapviewoffile將大檔案分開多次對映到記憶體中,這...