儲存對映:能將乙個磁碟檔案對映到記憶體空間,我們可以通過指標來使用這個資料。如果設定相應的prot那麼我們寫記憶體是,磁碟空間的資料也相應改變。
依賴於這幾個函式
mmap(.......) 用於建立一塊記憶體空間 並 與磁碟檔案建立聯絡
mprotect 改變對映位址空間的許可權
msync 將記憶體空間中的資料沖洗到磁碟
munmap 解除對映(如果不解除對映 會產生記憶體洩漏)
與對映區有關的訊號:sigsegv sigbus
由於這些特點儲存對映可以用於程序間通訊,通訊時多個程序還要做好同步工作
int main(int argv, char **argc)
if((re = fstat(fd, &stat_buf)) < 0)
buf = (char *)mmap(0,stat_buf.st_size,prot_read | prot_write, map_shared, fd, 0);
//write(stdout_fileno, buf, stat_buf.st_size);
memcpy(buf, *(argc+1), strlen(*(argc+1)));
while(1)
return 0;
}編譯成程式mytest
#./mytest
另乙個終端
#cat mydata
hello2221111111111111111111111111
1111111111111111111111111111111111
確定寫入記憶體的資料確實被對映到硬碟了
疑問:對於記憶體與硬碟的互動的時間並不清楚???????????
位址對映,儲存器對映
學習乙個事項的時候,注意三點 是什麼,有什麼用 功能 如何配置 實現 操作 1,為了保證 cpu執行指令時可正確訪問 儲存單元 需將使用者程式 中的邏輯 位址轉換 為執行時由機器 直接定址 的實體地址,這一過程稱為位址對映。2,位址對映結構 在tornado target h vmlib.h檔案中 ...
儲存對映I O
1.儲存對映i o 使得在不使用read,write函式的情況下執行i o操作。它是一種基於記憶體區域的高階i o操作。2.實現的方法 mmap函式 將給定的乙個檔案對映到乙個儲存區域中。include void mmap void start,size t length,int prot,int ...
儲存器對映
通過賦予每個任務不同的虛擬 物理 位址轉換 對映,支援不同任務之間的保護。位址轉換 函式在每乙個任務中定義,在乙個任務中的 虛擬位址 空間對映到 物理記憶體 的乙個部分,而另乙個任務的虛擬位址空間對映到物理儲存器中的另外區域。就是把乙個位址連線到另乙個位址。例如,記憶體單元a的位址為x,把它對映到位...