一、程序通訊
1.程序通訊的型別:
2.訊息傳遞通訊的實現方法
1)直接通訊方式
通常利用系統通訊命令(原語):
send(receiver, message);
receive(sender, message);
2)間接通訊方式
基於共享資料結構的實體用來暫存傳送給目標程序的訊息;接收程序則從該實體中,取出對方傳送給自己的訊息。通常把這種實體稱為信箱。
3.訊息緩衝佇列通訊機制:
本機通訊訊息結構,如下:
type message buffer = record
sender; 傳送者程序識別符號
size; 訊息長度
text; 訊息正文
next; 指向下一訊息緩衝區的指標
end4.pcb中需要記錄有關通訊的資訊項
type processcontrolblock =record
… mq; 訊息佇列隊首指標
mutex; 訊息佇列互斥訊號量
sm; 訊息佇列資源訊號量
…end
傳送原語:
procedure send(receiver, a)
begin
getbuf(a.size, i); 根據a.size申請緩衝區
i.sender :=a.sender; 將傳送區a中的資訊複製到 i
i.size :=a.size;
i.text :=a.text;
i.next :=0;
獲取接收程序內部識別符號
getid(pcb set, receiver, j);
insert(j.mq, i); 將訊息緩衝區插入目標訊息佇列
signal(j.sm);
end
接收原語:
procedure receive(b)
begin
j:=internal name; j為接收程序內部識別符號
wait(j.sm);
wait(j.mutex);
remove(j.mq, i); 將訊息佇列中的第i個訊息移出
signal(j.mutex);
b.sender :=i.sender;
b.size :=i.size; 將訊息緩衝區i中的資訊
b.text :=i.text; 複製到接收區b
二、執行緒
1.執行緒的屬性
多執行緒os中,乙個程序包括多個執行緒,每個執行緒都是利用cpu的基本單位。
2.同步和通訊機制
3.執行緒的實現方式
作業系統 執行緒
靜態鏈結庫是乙個或多個obj檔案的打包,所以有人乾脆把obj檔案生成lib檔案的過程稱為archive,即合併在一起。比如你鏈結乙個靜態庫,如果其中有錯,他會準確的找到是哪個obj有錯,即靜態lib只是殼子。當我們的應用工程在使用靜態庫鏈結時,靜態鏈結庫要參與編譯,在生成執行檔案之前的鏈結過程中,將...
作業系統 執行緒
執行緒是cpu使用的基本單元,它由執行緒id 程式計數器 暫存器集合和棧組成。它與屬於同一程序的其他執行緒共享 段,資料段和其他作業系統資源,如開啟檔案和訊號。乙個傳統重量級的程序只有單個控制線程,如果程序有多個控制線程,那麼它能夠同時做多個任務。多執行緒程式設計的優點 響應度高 如果對乙個互動程式...
作業系統 執行緒
多核cpu計算機,程序內部的各個執行緒可以占用不同的cpu。共享記憶體位址空間,執行緒通訊無需系統干預。共享程序的資源。每個執行緒都有執行緒id 執行緒控制塊 tcb 幾乎不擁有系統資源。作業系統中,執行緒又分為使用者級和核心級執行緒。使用者級執行緒 ult,user level thread 就是...