我對儲存對映I O的理解

2021-06-07 20:06:55 字數 1012 閱讀 4517

儲存對映,就是講磁碟檔案對映到記憶體,則對相應記憶體的操作就相當於對磁碟檔案的操作。

1.void *mmap(void *addr,size_t len,int pro,int flags,int filedes,off_t offset)  /*建立儲存對映*/

作用: 一、就是建立檔案filedes中從offset開始起的到記憶體的對映,對映的長度為len,

二、對映的位址與flags的值及addr的值有關,如果flag為map_fixed則必須對映到addr指定的記憶體區;

如果flag不為map_fixed 且addr不為0,則是推薦給系統,對映到記憶體addr的位置,系統可接受也可不接受而對映到其他位址

如果flag不問map_fixed且addr為0,則由核心自己分配其位址

最終的位址都將返回

三、pro 就是對儲存區的讀寫執行等的操作。不可和開啟原始檔案時的操作衝突。

四、flags的值可為map_shared,map_private,map_fixed。

1.map_shared時,對儲存區的操作直接影響到原始檔

2.map_private時,相當於程序對對映儲存區的乙個副本,對該副本的操作不會影響到原始檔

3.map_fixed的作用如上

2.int mprotect(void *addr,size_t len,int pro)

建立好儲存對映後,對對映區的讀寫執行方式進行修改

3.int msync(void *addr,size_t len,int flags)

對映儲存區與原始檔的同步

4.int munmap(void *addr, size_t len)

關閉對映儲存區與原始檔的關係,並不是消除掉對映儲存區。即映像儲存區仍然存在,只是此時對映像儲存區的操作不再會映像到原始檔。

注意:1.addr ,offset 要是頁大小的整數倍。

2.必須先開啟檔案,放開對其進行儲存對映

3.在map時將flag指定為map_shared的情況下,如果檔案中的內容改變,則會自動更新對映區的內容。

儲存對映I O

1.儲存對映i o 使得在不使用read,write函式的情況下執行i o操作。它是一種基於記憶體區域的高階i o操作。2.實現的方法 mmap函式 將給定的乙個檔案對映到乙個儲存區域中。include void mmap void start,size t length,int prot,int ...

Memory Map Linux 儲存對映IO

本文主要總結自unix環境高階程式設計以及redhat6.5系統man函式 include void mmap void addr,指定對映區的起始位址。通常設定為0,由系統選擇該對映區起始位址 size t len,對映的位元組數 int prot,對對映儲存區的保護要求 int flag,int...

我對保護模式下CPL,DPL,RPL 的理解

學過保護模式的人都知道,cpl,rpl,dpl是保護模式中很重要的幾個概念.這些概念是理解保護模式的基礎.每一段 在她誕生之後,就開始靜靜地等待著,等待著被執行.可能這就是她們存在的意義吧.某位先知曾經說過,沒有被執行過 的 是悲哀的,沒有崩潰過的程式是不完整的.當某段 開始被執行的時候,她的特權級...