各進程擁有的內存地址空間相互獨立
一個進程不能直接訪問另一個進程的地址空間
進程間通信 | 方法 | 種類 | |
---|---|---|---|
共享存儲 |
操作系統開闢一個共享空間 兩個進程對該共享空間的訪問是互斥的 (互斥訪問通過操作系統提供的工具實現,如PV操作) |
1.基於數據結構(低級) 2.基於存儲區共享(高級) |
|
消息傳遞 |
以格式化的消息爲單位 通過OS提供的”發送、接受消息“兩個原語進行數據交換
|
1.直接通信(直接掛到接受進程的消息緩衝隊列上) 2.間接通信(消息先發送到中間實體 信箱中) |
|
管道通信 |
在內存中開闢一個固定大小的緩衝區(也要互斥訪問) (只能採用半雙工通信,全雙工需要兩個管道) |
數據以字符流的形式寫入管道, 當寫滿時write()系統調用會被阻塞 當讀完時read()系統調用會被阻塞 若沒寫滿就不允許讀,沒讀空就不允許寫 |