虛擬記憶體深入學習

2021-10-08 15:15:28 字數 1027 閱讀 6466

使用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的資料,這樣可以保...