操作系統 進程間通信

各進程擁有的內存地址空間相互獨立

一個進程不能直接訪問另一個進程的地址空間

 

進程間通信 方法 種類  
共享存儲

操作系統開闢一個共享空間

兩個進程對該共享空間的訪問是互斥的

(互斥訪問通過操作系統提供的工具實現,如PV操作)

1.基於數據結構(低級)

2.基於存儲區共享(高級)

 
消息傳遞

以格式化的消息爲單位

通過OS提供的”發送、接受消息“兩個原語進行數據交換

 

1.直接通信(直接掛到接受進程的消息緩衝隊列上)

2.間接通信(消息先發送到中間實體 信箱中)

 
管道通信

在內存中開闢一個固定大小的緩衝區(也要互斥訪問)

(只能採用半雙工通信,全雙工需要兩個管道)

數據以字符流的形式寫入管道,

當寫滿時write()系統調用會被阻塞

當讀完時read()系統調用會被阻塞

若沒寫滿就不允許讀,沒讀空就不允許寫

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章