**
linux提供了記憶體對映函式mmap, 它把檔案內容對映到一段記憶體上(準確說是虛擬記憶體上), 通過對這段記憶體的讀取和修改, 實現對檔案的讀取和修改, 先來看一下mmap的函式宣告:
原型: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offsize);
返回值: 成功則返回對映區起始位址, 失敗則返回map_failed(-1).
引數:
flags: 對映區的特性, 可以是:
fd: 由open返回的檔案描述符, 代表要對映的檔案.
offset: 以檔案開始處的偏移量, 必須是分頁大小的整數倍, 通常為0, 表示從檔案頭開始對映.
下面說一下記憶體對映的步驟:
Linux記憶體對映 mmap函式
linux提供了記憶體對映函式mmap,它把檔案內容對映到一段記憶體上 準確說是虛擬記憶體上 通過對這段記憶體的讀取和修改,實現對檔案的讀取和修改,先來看一下mmap的函式宣告 原型 void mmap void addr,size t length,int prot,int flags,int f...
Linux記憶體對映 mmap函式
mmap將乙個檔案或者其它物件對映進記憶體。檔案被對映到多個頁上,如果檔案的大小不是所有頁的大小之和,最後乙個頁不被使用的空間將會清零。mmap在使用者空間對映呼叫系統中作用很大。標頭檔案 include函式原型void mmap void start,size t length,int prot,...
mmap記憶體對映
記憶體對映是個很有用,也很有意思的思想。我們都知道作業系統分為使用者態和核心態,使用者態是不能直接和物理裝置打交道的,如果想把硬碟的一塊區域讀到使用者態,則需要兩次拷貝 硬碟 核心 使用者 但是記憶體對映的設計只需要發生一次的拷貝,大大的提高了讀取資料的效率。那麼記憶體對映的原理和核心是如何實現的呢...