1. 程序通訊是指程序之間的資訊交換。
2. 程序通訊低階的原因:(1)效率低(2)通訊對使用者不透明
3. 高階通訊機制四大類:
共享儲存器系統
(共享資料結構和共享儲存區)
管道通訊系統:
指用於連線乙個讀程序和乙個寫程序以實現他們之間通訊的乙個開啟的共享檔案,又名pipe檔案。
訊息傳遞系統
:直接通訊方式、間接通訊方式
客戶機-伺服器系統
:套接字、遠端過程呼叫、遠端方法呼叫
1. 直接通訊方式:傳送程序利用os提供的傳送命令,直接把訊息傳送給目標程序。傳送程序和接收程序都以顯式方式提供對
通訊原語:
send(receiver, message); receive(sender, message);
利用直接通訊原語解決生產者——消費者問
1. 間接通訊方式 —— 通過信箱通訊
訊息在信箱中可安全儲存,只允許核准的目標使用者隨時讀取利用信箱通訊方式,既可實時通訊,又可非實時通訊。
send(mailbox, message); 將乙個訊息傳送到指定信箱
receive(mailbox, message); 從指定信箱中接收乙個訊息
6.訊息傳遞系統實現中的若干問題
通訊鏈路
分類:(1)根據通訊鏈路的建立方式:
顯示連線:先用 「建立連線」命令(原語) 建立一條通訊鏈路; 通訊; 用顯式方式拆除鏈路。——用於計算機網路
隱式連線:傳送程序無須明確提出建立鏈路的要求,直接利用系統提供的傳送命令(原語),系統會自動地為之建立一條鏈路。——用於單機系統
7.訊息緩衝佇列通訊機制
傳送程序利用send原語,將訊息直接傳送給接收程序;接收程序利用receive原語接收訊息。
(1)訊息緩衝區
type message buffer =record
sender; 傳送者程序識別符號
size; 訊息長度
text; 訊息正文
next; 指向下乙個訊息緩衝區的指標
end(2)pcb中有關通訊的資料項
增加用於對訊息佇列進行操作和實現同步的訊號量,並將它們置入程序的pcb中。
type processcontrol block =record …
mq; 訊息佇列隊首指標
mutex; 訊息佇列互斥訊號量
sm; 訊息佇列資源訊號量 …
end2. 傳送原語
procedure send(receiver, a) //將傳送區a的內容發給receiver
begin
getbuf(a.size, i); //根據a.size申請緩衝區i
i.sender :=a.sender; //將傳送區a中的資訊複製
i.size :=a.size; //到訊息緩衝區i中
i.text :=a.text;
i.next :=0;
getid(pcb set, receiver.j); //取接收程序內部識別符號放於j
wait(j.mutex); //將訊息緩衝區插入訊息佇列
insert(j.mq, i);
signal(j.mutex);
signal(j.sm);
end3. 接收原語
procedure receive(b) //從程序自己的訊息接收佇列中取
begin //訊息i放入訊息接收區b中
j:=internal name; //j為接收程序內部識別符號
wait(j.sm); //將訊息佇列中的第乙個訊息移出
wait(j.mutex);
remove(j.mq, i);
signal(j.mutex);
b.sender :=i.sender; //將訊息緩衝區i中的資訊
b.size :=i.size; //複製到接收區b
b.text :=i.text;
end
2 6程序通訊
程序通訊指程序之間的資訊交換。高階通訊機制可歸結為四大類 1.共享儲存器系統 shared memory system 操作儲存區方式 1 相互通訊的程序共享某些資料結構或共享儲存區,程序之間能夠通過這些空間進行通訊。2 型別 基於共享資料結構的通訊方式 低階 諸程序公用某些資料結構,藉以實現諸程序...
程序通訊 程序管道
程序間通訊的幾種常用方式 管道 命名管道 訊號 訊號量 共享記憶體 訊息佇列 套接字。管道 pipe 一種半雙工的通訊方式,資料只能單向流動且只能在具有共同祖先的程序間使用。命名管道 name pipe 也是一種半雙工的通訊方式,但他允許不相關程序間的通訊。訊號 sinal 乙個程序通過訊號通知其他...
程序與程序通訊
程序是可執行的程式的例項,包含兩部分,一部分是作業系統用來管理程序的核心物件,一部分是建立時系統分配的資源,主要是記憶體位址空間。2 程序通訊方法 在乙個程序內建立記憶體對映,卻能夠在其他都個程序中使用。這些程序共享的是物理儲存器的同乙個頁面,在把這些物理記憶體對映到虛擬記憶體時各個程序的虛擬位址並...