在下一篇博文,關於mmap的原理框架

對磁盤上文件的訪問,必須將文件按照必定規則整合並搬運到內存中,而後對這個文件訪問。將被訪問的文件頁的順序被排列成進程

radix tree. 假設在文件不大,而且沒有內存寫回並且訪問到整個文件時,那麼,這個文件頁的在邏輯上的線性組織就在內存中內存

被完整的轉化成了一棵樹狀的排列——radix tree(這棵樹很重要)。但實際中的mmap總會與髒頁寫回與請求調頁的存在原理

mmap原理:將要訪問的文件部分,按照大小,權限,在線性區中開闢出一塊如出一轍的虛擬空間。也就是說訪問這個虛擬空間中的一個位置與訪問文件中的相同位置是同樣的,只不過mmap映射的區域是一塊空白,須要請求調頁機制來處理。當訪問該線性地址對應的頁表時,發現頁表項爲空,那麼就要請求調頁,講該頁加入基樹中,並進行IO,若是該頁是私有映射並進程試圖寫該頁,那麼就要從新分配一塊匿名線性區,並加入到臨近或是本身的anov_vma中。並在分配一頁,把上次分配的頁框內容copy到此頁中,把此頁加入lru非活動鏈表中。權限

相關文章
相關標籤/搜索