共享記憶體允許兩個或多個程序共享一給定的儲存區,因為資料不需要來回複製,所以是最快的一種程序間通訊機制。共享記憶體可以透過mmap()對映普通檔案(特殊情況下還可以採用匿名對映)機制實現,也可以透過系統V共享記憶體機制實現。應用介面和原理很簡單,內部機制複雜。為了實現更安全通訊,往往還與訊號燈等同步機制共同使用。mmap的機制如:就是在磁碟上建立一個檔案,每個程序儲存器裡面,單獨開闢一個空間來進行對映。如果多程序的話,那麼不會對實際的物理儲存器(主存)消耗太大。 shm的機制:每個程序的共享記憶體都直接對映到實際物理儲存器裡面。
1、mmap儲存到實際硬碟,實際儲存並沒有反映到主存上。優點:儲存量可以很大(多於主存);缺點:程序間讀取和寫入速度要比主存的要慢。
2、shm儲存到物理儲存器(主存),實際的儲存量直接反映到主存上。優點,程序間訪問速度(讀寫)比磁碟要快;缺點,儲存量不能非常大(多於主存)使用上看:如果分配的儲存量不大,那麼使用shm;如果儲存量大,那麼使用mmap。
共享記憶體允許兩個或多個程序共享一給定的儲存區,因為資料不需要來回複製,所以是最快的一種程序間通訊機制。共享記憶體可以透過mmap()對映普通檔案(特殊情況下還可以採用匿名對映)機制實現,也可以透過系統V共享記憶體機制實現。應用介面和原理很簡單,內部機制複雜。為了實現更安全通訊,往往還與訊號燈等同步機制共同使用。mmap的機制如:就是在磁碟上建立一個檔案,每個程序儲存器裡面,單獨開闢一個空間來進行對映。如果多程序的話,那麼不會對實際的物理儲存器(主存)消耗太大。 shm的機制:每個程序的共享記憶體都直接對映到實際物理儲存器裡面。
1、mmap儲存到實際硬碟,實際儲存並沒有反映到主存上。優點:儲存量可以很大(多於主存);缺點:程序間讀取和寫入速度要比主存的要慢。
2、shm儲存到物理儲存器(主存),實際的儲存量直接反映到主存上。優點,程序間訪問速度(讀寫)比磁碟要快;缺點,儲存量不能非常大(多於主存)使用上看:如果分配的儲存量不大,那麼使用shm;如果儲存量大,那麼使用mmap。