1. 共享內存的有效特點:
- 是所有進程間通信最快的
- 不提供任何的同步,互斥機制,(用戶可通過設置信號量來保證同步,互斥機制)
- 生命週期隨內核
2. 創建共享內存
int shmget(key_t key, size_t size, int shmflg)
key : 可通過函數 key_t ftok( );申請到
size: 申請的大小,申請多少系統給多少,但系統內會以頁的倍數批准
shmflg:權限
3. 命令行查看,刪除共享內存
ipcs -m : 查看當前的共享內存
ipcrm -m 要刪除的shmid : 刪除指定共享內存
4. 接下來我們利用共享內存來實現進程間通信
共享內存實現進程間通信需要如下幾個步驟:
1. 創建共享內存(物理地址);
2. 共享內存(物理地址)映射到虛擬地址(既然要通信,就必須是兩個進程的通過頁表分別映射到虛擬地中)
3. 最後就可通過各自的虛擬地址訪問同一塊虛擬地址,來實現進程間通信。
#####代碼:
1. 創建共享內存(獲取內存物理地址)
2. 對server端映射並讀取內存數據
3. 對client端映射並寫如數據
結果: