程序通訊 共享記憶體

2021-05-22 21:29:18 字數 631 閱讀 1615

定義:共享記憶體,就是通過核心操作,在記憶體上開闢一塊供多個程序共同訪問的記憶體塊。這塊記憶體塊的建立和

銷毀是由核心來控制(當然,也可以在程序內部呼叫系統庫函式來建立和銷毀,類似於訊息機制和訊號

量機制)。在這個記憶體塊上,程序可以像操作記憶體一樣操作共享區記憶體。

作用:第乙個,就是提供程序間大資訊量,而且快速的通訊。這點也是大家第一反應想得到的。

第二個,除了提供最快速的程序間通訊外,共享記憶體還有乙個作用就是儲存關鍵資料。在伺服器設計時

,為了保證資料的不因為程序的崩潰而跟著丟失,就可以用共享記憶體的方法,將資料儲存在共享記憶體裡

面。這樣,伺服器程式重新啟動後,還可以繼續處理該部分資料。

操作函式:

三個基本的操作shmget、shmat、shmctl,有關函式的具體意義,參看linux man幫助。

應用:父子程序:父程序建立後,子程序直接共享。

不相關程序:通過shmid標識和函式shmat來共同訪問。

檢視和銷毀共享記憶體情況:

檢視命令:ipcs -m

銷毀命令:ipcrm shm shmid

為了能在程式重啟後,重新讀取共享記憶體資料,需要在共享記憶體上儲存一定的資料結構資訊,記錄共享

記憶體上的資料的資訊,能夠正確讀取其含義。

程序通訊共享記憶體

共享記憶體是允許多個程序共享記憶體 共享記憶體結構 struct shmid ds struc ipc permshm perm 指向該記憶體指標 int shm segsz 共享記憶體的大小 ushort shm lkcnt 共享記憶體被鎖定的時間 pid t shm cpid 最近呼叫shomp...

程序間通訊 共享記憶體

下面是自己寫的乙個簡單的共享記憶體的程序間通訊的例子。共享記憶體是用於程序間大量資料共享的一種方法。include include include include include include int main if buf1 shmat shmid,0,0 void 1 strcpy buf1,...

程序間通訊 共享記憶體

共享記憶體是被多個程序共享的一部分物理記憶體。共享記憶體是程序間共享資料的一種最快的方式,乙個程序向共享記憶體區域寫入資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。共享記憶體實現分兩個步驟 建立共享記憶體,使用shmget函式 對映共享記憶體,使用shmat函式 共享記憶體是一種最為高...