linux共享記憶體和mmap的區別

時間 2021-08-30 09:50:30

1樓:匿名使用者

記憶體對映檔案與虛擬記憶體有些類似,通過記憶體對映檔案可以保留一個地址空間的區域,同時將物理儲存器提交給此區域,只是記憶體檔案對映的物理儲存器來自一個已經存在於磁碟上的檔案,而非系統的頁檔案,而且在對該檔案進行操作之前必須首先對檔案進行對映,就如同將整個檔案從磁碟載入到記憶體。由此可以看出,使用記憶體對映檔案處理儲存於磁碟上的檔案時,將不必再對檔案執行i/o操作,這意味著在對檔案進行處理時將不必再為檔案申請並分配快取,所有的檔案快取操作均由系統直接管理,由於取消了將檔案資料載入到記憶體、資料從記憶體到檔案的回寫以及釋放記憶體塊等步驟,使得記憶體對映檔案在處理大資料量的檔案時能起到相當重要的作用。另外,實際工程中的系統往往需要在多個程序之間共享資料,如果資料量小,處理方法是靈活多變的,如果共享資料容量巨大,那麼就需要藉助於記憶體對映檔案來進行。

實際上,記憶體對映檔案正是解決本地多個程序間資料共享的最有效方法。

這裡再總結一次:

1、mmap有兩種方式,一種是對映記憶體,它把普通檔案對映為實際實體記憶體頁,訪問它就和訪問實體記憶體一樣(這也就和shm的功能一樣了)(同時不用重新整理到檔案)

2、mmap可以對映檔案,不確定會不會像windows「記憶體對映檔案」一樣的功能,如果是,那麼他就能對映好幾g甚至好幾百g的記憶體資料,對大資料處理將提供強大功能了???

3、shm只做記憶體對映,和mmap第一個功能一樣!只不過不是普通檔案而已,但都是實體記憶體。

2樓:時歡悅

mmap的機制如:就是在磁碟上建立一個檔案,每個程序儲存器裡面,單獨開闢一個空間來進行對映。如果多程序的話,那麼不會對實際的物理儲存器(主存)消耗太大。

shm的機制:每個程序的共享記憶體都直接對映到實際物理儲存器裡面。

1、mmap儲存到實際硬碟,實際儲存並沒有反映到主存上2、shm儲存到物理儲存器(主存),實際的儲存量直接反映到主存上。

使用上看:如果分配的儲存量不大,那麼使用shm;如果儲存量大,那麼使用shm。

以上內容**,

Linux記憶體中Page cache和buffer cache的區別

七彩虹科技 a buffer is something that has yet to be written to disk.a cache is something that has been read from the disk and stored for later use free中看到的...

linux 怎麼和XP共享,xp系統怎麼設定共享?

一,有兩種方法 1 linux下安裝samba客戶端,windows下將檔案共享 linux下再掛載共享目錄。samba client一般不需安裝,如無,在三張安裝盤有 2 windows下作ftp伺服器,將許察看的檔案作為主檔案,linux直接訪問。xp下ftp需重新安裝軟體包 二 linux下會...

有些顯示卡是共享記憶體的,和自帶現存的顯示卡比怎麼樣

你是說效能方面吧,不過你沒說明視訊記憶體的頻寬是64位還是128位的。如果同樣是64位的話說實話,如果你是pci e的顯示卡設128和256的效能差別很小,這是因為pci e匯流排的頻寬很高,這就能彌補自帶視訊記憶體不足的問題,agp的話頻寬差一點相映差別會大點,但設定多少容量就要看你玩遊戲的實際情...