使用mmap將物理記憶體對映到程序的虛擬位址空間
需要使用mmap(2) 解決對映的問題
#include
void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);
功能:將記憶體或者檔案對映到虛擬位址空間
引數:addr 虛擬位址 (最好是有核心提供。null)
length 對映的長度
prot :
prot_exec 頁可執行
prot_read 頁可讀
prot_write 頁可寫
prot_none 頁不能被訪問
flags
map_shared 共享的
map_private 私有的
map_anonymous 匿名對映 將記憶體對映到虛擬位址。fd和offset設定成0. 不支援檔案對映
fd 檔案描述符1
offset 在檔案中的偏移位置。
int munmap(void *addr, size_t length);
引數:addr mmap系統呼叫的返回值
length 同mmap引數
功能:解除對映
返回值:
0 成功
-1失敗 errno被設定
補充:linux作業系統下,一切皆檔案 ,檔案是檔案 ,裝置也是檔案。
值-結果引數。指標型別的引數,可以帶值返回主調函式。
malloc的實現原理(快取機制)
使用**驗證malloc的快取機制
了解malloc的緩衝機制。一次提供最少33塊,每塊4k。
深入理解虛擬記憶體管理
訪問虛擬記憶體時的處理流程 一張流程圖,看明白了,一切ok。虛擬位址到實體地址的轉換 win32 中的 指標 意味著虛擬位址。將 32位氛圍 10位 10位 12位,第乙個 10位用來定位頁目錄中的頁目錄項,左移兩位,此頁目錄項指向乙個頁表 第二個 10位定位也表中的頁表項,指向真正的物理記憶體 最...
深入理解虛擬記憶體管理
訪問虛擬記憶體時的處理流程 一張流程圖,看明白了,一切ok。虛擬位址到實體地址的轉換 win32 中的 指標 意味著虛擬位址。將 32位氛圍 10位 10位 12位,第乙個 10位用來定位頁目錄中的頁目錄項,左移兩位,此頁目錄項指向乙個頁表 第二個 10位定位也表中的頁表項,指向真正的物理記憶體 最...
Redis學習手冊 虛擬記憶體
一 簡介 和大多nosql資料庫一樣,redis同樣遵循了key value資料儲存模型。在有些情況下,redis會將keys values儲存在記憶體中以提高資料查詢和資料修改的效率,然而這樣的做法並非總是很好的選擇。鑑於此,我們可以將之進一步優化,即盡量在記憶體中只保留keys的資料,這樣可以保...