1. 程式人生 > >作業系統-記憶體對映檔案

作業系統-記憶體對映檔案

(臨時筆記 後面再修改)

將檔案對映到一個正在執行的程序的地址空間。

例如,假設一個檔案f,長度為64,對映到從512k地址開始的虛地址出,這樣任何機器指令在512地址處讀取位元組內容會得到檔案的第0個位元組,類似的,像512K+21000地址處寫入則修改了檔案的第210000位元組,當程序種植時,被修改的檔案留在磁碟上。

實際發生的是,系統內部表被改變以使該檔案成為從512K到576K記憶體之間的後備儲存。這樣,從512K開始的讀操作會引起一個頁面失效,導致裝入含有改地址的頁面,之後,對儲存器的寫就可以開始。如果該頁面被被免職換演算法所逐出,他會被寫回到該檔案的合適位置處,程序結束時,所有被對映、被修改的頁面要寫回他們的檔案中。

段頁式管理中,程式根據邏輯被拆分成大小不一的段,每個段又被分成大小相同的頁,所以CPU讀到的程式中的虛擬地址先要讀段表,再讀頁表,對應到物理頁號,物理頁號不一定全部在記憶體中,若不存在,則需要產生缺頁錯誤,將磁碟中的一個頁面調入記憶體。

所以檔案對映的關鍵是,將待讀/寫的檔案實體地址與程式讀/寫的資料虛擬地址進行對映,則也不需要進行作業系統向緩衝區寫入資料以及將緩衝區的資料寫回磁碟中。