1. 程式人生 > >作業系統 第二章 程序通訊+執行緒--筆記

作業系統 第二章 程序通訊+執行緒--筆記

程序通訊的型別

高階通訊機制可歸結為四大類

  1. 共享儲存器系統(操作儲存區方式) 相互通訊的程序共享某些資料結構或共享儲存區 a.基於共享資料結構的通訊方式(低階)     各程序公用某些資料結構,藉以實現諸程序間的的資訊交換     程式設計師:提供對公用資料結構的設定及對程序間同步的處理。     作業系統:提供共享儲存器。     特點:複雜、效率低,只適合傳遞喜愛那個對少量的資料 b.基於共享儲存區     在儲存器中劃出了一塊共享儲存區,諸程序可通過對共享儲存區中資料的讀或寫來實現通訊。     程序通訊前先向系統申請獲得共享儲存區中的一個分割槽,並指定該分割槽的關鍵字;若系統已經分給了其他程序,則將該分割槽的描述符返回給申請者,申請者把獲得的共享儲存分割槽連線到本程序上;此後,便可像讀、寫普通儲存器一樣地讀、寫該公用儲存分割槽。多程序藉助該區通訊。

  2. 訊息傳遞系統(發–收方式) 最廣泛使用的一種,程序間的資料交換,以格式化的訊息為單位。遮蔽底層複雜的操作。 單機:作業系統底層程式設計中的訊息傳遞系統呼叫。 計算機網路:訊息成為報文。程式設計師直接利用系統提供的一組通訊命令(原語)進行通訊

  3. 管道通訊(中間檔案方式) 所謂管道,是指用於連線讀程序和寫程序,以實現通訊的一個共享檔案,又名pipe檔案 向共享檔案輸入的寫程序以***字元流形式***將大量資料送入管道;而接收管道輸出的讀程序則從管道中接受(讀)資料

4.Client-Server system

訊息傳遞通訊的實現方法

1.直接通訊方式 傳送程序利用作業系統所提供的傳送命令

(原語),直接把訊息發給目標程序。此時傳送程序和接收程序都以顯式方式提供對方的表示符。通常利用通訊命令(原語): Send()、Receive() 【例】 在這裡插入圖片描述

2.間接通訊方式(即可實時通訊,又可非實時通訊) 基於共享資料結構的實體用來暫存傳送給目標程序的訊息;接收程序則從該實體中取出訊息,通常把這種實體稱為信箱

訊息傳遞系統的實現

1.通訊鏈路的建立 2.訊息格式 3.同步方式

訊息緩衝佇列通訊機制

美國Hansan提出,在RC4 4000系統上實現。 1.不需要管理鏈路 2.定義簡單資料結構(訊息格式) 3.實現傳送和接收的操作原語

在這裡插入圖片描述

在這裡插入圖片描述

認識執行緒

多道程式管理中,追求效率的目的下實現併發,便引入了執行緒

併發性與效率的討論(利用程序實現的多道程式中): 程序是一個可擁有資源的獨立單位;是一個可獨立排程和分配資源的基本單位

在這裡插入圖片描述

多執行緒OS中,一個程序包括多個執行緒,每個執行緒都是利用CPU的基本單位。

執行緒的資訊(TCB) 識別符號、執行狀態、優先順序、暫存器狀態、堆疊。。。。。。

建立新執行緒:利用執行緒建立函式,建立完成後,返回一個執行緒識別符號供以後使用。 執行緒被終止:不立即釋放資源,只有當程序中其他執行緒執行分離函式後資源才會分離出來,被其他執行緒使用;被終止而未被釋放資源的執行緒仍可被需要它的執行緒呼叫,使其重新恢復執行。

多執行緒系統中的程序

程序只適用於分配系統資源,包括多個執行緒,不是執行實體,執行緒在程序範圍內作為執行實體

執行緒與程序的比較

  1. 排程:執行緒作為CPU排程的基本單位,而程序只作為其他資源分配單位
  2. 併發性:程序之間可以併發,實質上是不同程序的兩個執行緒併發。一個程序的多個執行緒也可併發。
  3. 擁有資源:程序間的資源相互獨立;統一程序間的執行緒間共享;某個程序內的執行緒在其他程序不可見
  4. 系統開銷:執行緒上下文切換在同進程下切換的快。因為同進程內執行緒共享記憶體地址和開啟的檔案資源

執行緒的管理

1.互斥鎖–適用於高頻度使用的關鍵共享資料和程式段(unlock和lock兩個鎖操作原語) 2.條件變數 與互斥鎖一起使用,鎖能保證互斥進入臨界區,利用條件變數使執行緒阻塞 注意不滿足條件時,wait條件變數: 釋放互斥鎖,程序阻塞在條件變數指向佇列中,被喚醒後要重新再設互斥鎖 3.訊號量 私用訊號量:用於同進程的執行緒同步 公用訊號量:用於不同程序間