linux共享記憶體和mmap的區別

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

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,關於linux的目錄和分割槽有個疑問想請教大家

我來插一句,安裝linux的時候,啟動盤會載入 linux核心,從光碟載入,掛載,是由linux 核心 實現的,你的核心不支援的檔案系統,就不能掛載,還有,要分清楚目錄樹,和 硬碟分割槽的概念 中間這段 daily doc 目錄對應資訊又是儲存在 儲存在 你這個hd1分割槽的superblock裡 ...

linux和windows server的聯絡和區別

區別在於核心不同,一個是windows作業系統,一個是linux。聯絡就是都是針對伺服器的作業系統,網路控制能力很強。windows系統現在強調自己是一個完全的gui,但是實際上只能說是以gui為主,根本無法完全去除對cui的支援。而cui方面,ms dos和linux的差距太大了。linux在cu...