程序間通訊 儲存I O對映

2021-08-21 05:07:44 字數 1012 閱讀 7402

儲存i/o對映能將磁碟檔案對映到儲存空間的乙個緩衝區上,於是,從緩衝區讀資料時,就相當於讀檔案中的相應位元組。

mmap函式:將檔案對映到乙個儲存區域

#include void *mmap(void *addr, size_t len, int prot, int flag, int fd, off_t off);
執行成功返回對映區的起始位址,出錯返回map_failed

fd:指定要對映檔案的檔案描述符,所以在對映前,需要先開啟檔案。

len:對映的位元組數

off:表示對映位元組在檔案中的起始偏移量

prot:對映儲存區的要求

這個要求不能超過open的許可權,如果以rd_only開啟檔案,那麼這裡就不能指定prot_write等。

flag:

map_fixed:返回值必須等於addr。不利於可移植性

map_shared:對對映區所做的操作將會同步的磁碟檔案上

map_private:表示對對映區的儲存操作導致建立該對映檔案的乙個私有副本

mmap操作中,會隱含一次對檔案的讀操作

mprotect函式:可以更改乙個現有對映的許可權

#include int mprotect(void *addr size_t len, int prot);
執行成功返回0,出錯返回-1

msync函式:將已經修改的頁沖洗到被對映的檔案中

#include int msysnc(void *addr, size_t len, int flags);
執行成功返回0,出錯返回-1

munmap函式:解除對映區

#include int munmap(void *addr, size_t len);
執行成功返回0,出錯返回-

6 3linux程序間通訊之儲存對映

title date comments categories br linux程序間通訊之儲存對映 2020 3 9 true linux 多程序 儲存對映 6.3 儲存對映i o的本質是,把乙個磁碟上的檔案對映到核心緩衝區中。對磁碟檔案的讀寫,就相當於對核心緩衝區的讀寫。這樣就可以不使用read和...

程序間通訊 記憶體對映

程序1的資料有時需要傳送給程序b,這可以通過記憶體對映實現。主要用到的函式 寫方式開啟對映,page writecopy 為寫操作留下備份 dword dwmaximumsizehigh,檔案對映的最大長度的高32位,一般設為0,用低32位一般就夠用了 dword dwmaximumsizelow,...

程序間通訊 共享儲存

一 什麼是共享儲存 共享儲存允許兩個或更多程序共享一給定的儲存區。因為資料不需要在程序a和程序b之間複製,所以共享儲存是最快的一種ipc。那麼使用共享儲存需要注意的問題是什麼呢?因為是多個程序訪問乙個共同的儲存區,所以需要注意的問題就是多個程序如何實現對同一儲存區實現同步訪問。若程序a正在將資料放入...