作業系統 2 6 通訊 執行緒

2021-08-31 16:27:10 字數 1487 閱讀 9476

一、程序通訊

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 就是...