這篇寫的不錯給對外連結接
https://blog.csdn.net/ljianhui/article/details/10253345
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLshnMZhmSYFGdSNzY6Z1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1cjM0AjN1ETM4EjMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
下圖是兩個程序間使用共享記憶體通信的示意圖:
程序A和程序B在作業系統os中都有自己的虛拟記憶體空間
這個虛拟記憶體空間又各自對應磁盤上的一段實體記憶體空間,而且它們是各自獨立沒有交集的。
1、調用API,讓作業系統在實體記憶體中開辟一大段緩存空間(就是筆在的那個空間)
2、程序A和程序B各自讓程序空間與開辟出的實際實體緩存空間建立一一對應的映射關系
3、兩個程序各自操作自己的虛拟記憶體來讀寫資料,以達到程序間通信的目的。
4、虛拟位址其實就是記憶體條的大小,每個程序都有這麼大的虛拟位址,程序本身是有一部分虛拟位址與實際的實體位址對應,還有很大一部分虛拟位址并沒有是有,就可以用其中一部分來實作虛拟位址的映射