參考:Linux程式設計-13.記憶體對映mmap 或 GNU libc manual 13.7 Memory-mapped I/O
mmap() 將檔案當成記憶體使用,將 file 從 offset 開始、長度 length 的區塊映射到 user virtual memory 供存取。
#include
void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
int munmap(void *start, size_t length);
int msync(const void *start, size_t length, int flags);
立即寫回檔案
參考:Zero Copy I: User-Mode Perspective
在某些情況下,mmap() 可以取代 read() 減少一次將資料複製到 user space 的動作。
參考:mmap Sample Code
實體記憶體也是檔案 /dev/mem,mmap() 可以讓 user space 存取實體記憶體,例如週邊的 registers,如此便可以在 user space 設定週邊。但在 user space 要將資料寫到 kernel space 會花些時間。延伸閱讀
6/26/2009
mmap @ user space
標籤: Linux
訂閱:
張貼意見 (Atom)
0 意見:
張貼意見