Friday, September 11, 2009

mmap()

mmap is sometimes used for Interprocess Communication (IPC). On modern operating systems mmap is typically preferred to the System V IPC Shared Memory facility.
~ http://en.wikipedia.org/wiki/Mmap


mmap(), 即memory map,用來將某個檔案的內容map到memory,使得各個process之間可以利用shared memory的方式來做資料的存取。


例如,在一個存取資料的程式中,我們可能透過fread來將資料讀出,經過修改後,再經由fwrite將資料寫入,但fread與fwrite皆需先透過fseek找出讀寫的記憶體位置。


然而,mmap()一開始會分配固定的記憶體區塊給某個檔案,因此多個程式便可以直接存取該共同記憶體區塊裡的任何資料。當然,shared memory可能引起race condition等問題,關於這部份可以參考其它資料說明。


[Ref.]
Beginning Linux Programming 4/e, Richard Stones and Neil Matthew

0 意見: