進程間通信(IPC)
爲什麼操作系統要爲用戶提供進程間通信方式?
答:因爲進程的獨立性。每個進程都有自己的獨立虛擬地址空間,操作的都是自己的地址,所以進程之間無法直接進行通信。
進程間通信方式
- 從Unix借鑑的:管道- - -資源傳輸;
- systemV標準的進程間通信方式:共享共存、消息隊列、信號量
管道:傳輸資源- - -傳輸的是數據資源;
本質:內核中的一塊緩衝區,若多個進程可以訪問到同一個緩衝區,就可以實現通信。
分類:匿名管道/命名管道。
匿名管道:內核中的這塊緩衝區沒有具體的標識符,只能用於具有親緣關係的進程間通信。多個進程只要通過子進程複製父進程的方式拿到同一個管道(緩衝區)的操作句柄就可以進行通信。