儲存對映,就是講磁碟檔案對映到記憶體,則對相應記憶體的操作就相當於對磁碟檔案的操作。
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是保護模式中很重要的幾個概念.這些概念是理解保護模式的基礎.每一段 在她誕生之後,就開始靜靜地等待著,等待著被執行.可能這就是她們存在的意義吧.某位先知曾經說過,沒有被執行過 的 是悲哀的,沒有崩潰過的程式是不完整的.當某段 開始被執行的時候,她的特權級...