2.4進程通信的三種方式

現在有:進程1的數據存在(存儲空間A)

進程2的數據存在(存儲空間B)

爲了保證進程間的安全性,使用進程1只能訪問A,進程2只能訪問B

那麼進程1,2想要通信如何實現呢?

 

一,共享存儲:

1,什麼是共享存儲?

操作系統提供了一個共享空間可以被進程1,2互斥的訪問

2,分類

1)基於數據結構的共享:比如共享空間只能存放一個長度爲10的數組。這種共享方式速度慢,限制多,是一種低級的通信方式

2)基於存儲區的共享:在內存中畫出一塊共享存儲區,數據的形式,存放的位置都由進程控制,而不是操作系統。相比之下它的速度更快,是一種高級通信方式

 

二,消息傳遞:

1,什麼是消息傳遞?

進程中的數據交換以“格式化消息“爲單位,進程通過操作系統提供的”發送消息、接收消息“兩個源語進行數據交換

2,格式化消息的結構:

1)消息頭:包括髮送進程的ID,接收進程的ID,消息類型,消息長度等格式化信息

2)消息體:記錄被髮送的信息

3,分類:

1)直接通信方式:比如進程1,給進程2發信息,就把信息掛到進程2的信息緩存隊列上

2)間接通信方式:進程1把消息放到一箇中間實體上,等待需要它的進程2取走

 

三,管道通信:

1,什麼是管道:

是指用於連接讀寫進程的一個共享文件,是在內存中開闢了一個固定大小的緩衝區

2,特點:

1)管道只能採用半雙工通信,在一段時間只能單向傳輸,如果要實現雙向傳輸,就需要設置兩個管道

2)各個進程需要互斥的訪問管道

3)數據以字符流的形式寫入管道,當管道寫滿時,寫進程將被堵塞,等待數據被取走。當數據全部被取出後,管道變空,此時寫進程的系統調用將被堵塞。

4)如果沒寫滿,就不允許讀,沒有讀空,就不允許寫

5)速度一旦讀出,就從管道中被拋棄,這就意味着讀進程只能有一個,否則可能會發生讀錯數據的情況

 

 

 

 

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