1. 程式人生 > 其它 >處理機管理——程序通訊

處理機管理——程序通訊


程序通訊:指程序之間的資訊交換
程序是分配系統資源的單位(包括記憶體地址空間),因此各程序擁有的記憶體地址空間相互獨立。為了保證安全,一個程序不能直接訪問另一個程序的地址空間。但是程序之間的資訊交換又是必須實現的。

共享儲存:
兩個程序對共享空間的訪問必須是互斥的(互斥訪問通過作業系統提供的工具實現)。作業系統只負責提供共享空間和同步互斥工具(如P、V操作)
基於資料結構的共享:比如共享空間裡只能放一個長度為10的陣列。這種共享方式速度慢、限制多,是一種低階通訊方式。
基於儲存區的共享:在記憶體中畫出一塊共享儲存區,資料的形式、存放位置都由程序控制,而不是作業系統。這種共享方式速度更快,是一種高階通訊方式。

管道通訊:
“管道”是指在記憶體中開闢一個大小固定的緩衝區用於連線讀寫程序的一個共享檔案
1.管道只能採用半雙工通訊,某一時間段內只能實現單向的傳輸。如果要實現雙向同時通訊,則需要設定兩個管道。
2.各程序要互斥地訪問管道。
3.資料以字元流的形式與入管道,當管道寫滿時,寫程序的write()系統呼叫將被陽塞,等待讀程序將資料取。當讀程序將資料全部取走後,管道變空,此時讀程序的read()系統呼叫將被咀塞。
4.如果沒寫滿,就不允許讀。如果沒讀空,就不允許寫。
5.資料一旦被讀出,就從管道中被拋棄,這就意味著讀程序最多隻能有一個,否則可能會有讀錯資料的情況。

訊息傳遞:
程序間的資料交換以格式化的訊息(Message)為單位。程序通過作業系統提供的“傳送訊息/接收訊息”兩個原語進行資料交換。
訊息頭包括:傳送程序ID、接受程序ID、訊息型別、訊息長度等格式化的資訊(計算機網路中傳送的“報文”其實就是一種格式化的訊息)
直接通訊方式:訊息直接掛到接收程序的訊息緩衝佇列上
間接通訊方式:訊息要先發送到中間實體(信箱)中,因此也稱“信箱通訊方式"。Eg:計網中的電子郵件系統