1. 程式人生 > >第二章 2

第二章 2

 2.5 管程(monitor)機制

1.管程的組成

2.管程特點

任何程序只能通過呼叫管程提供的過程入口才能進入管程訪問共享資料;

就如同使用臨界資源,就要先通過其訊號量的申請。

任何時刻,僅允許一個程序在管程中執行某個內部過程。

管程如何實現同步?

操作的同步控制: 靠條件變數的操作管理實現。         

進入管程但不能獲取資源操作的過程將阻塞,並在滿足條件時被喚醒執行。

生產者-消費者問題的管程解決方法:

Producer: begin    repeat   生產an item in nextp;    p_c.put(nextp);    until end

consumer: begin    repeat    p_c.get(nextc);    消費an item in nextc;    until end

3.條件變數(主要作用就是程序同步的阻塞和喚醒控制)

2.6 程序通訊 (程序通訊是指程序之間的資訊交換)

一、低階通訊——程序之間的互斥和同步

二、高階程序通訊

1.程序通訊的型別 

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

共享儲存器系統(操作儲存區方式)

1.基於共享資料結構的通訊方式(低階)  2.基於共享儲存區的通訊方式(高階)

訊息傳遞系統(發--收方式)

管道通訊(中間檔案方式)

Client-Server system

2.訊息傳遞通訊的實現方法

1)直接通訊方式    系統通訊命令(原語):         Send(Receiver, message);         Receive(Sender, message);

2)間接通訊方式  信箱的建立和撤消  信箱訊息的傳送和接收

3.訊息傳遞系統的實現  需要考慮的問題:通訊鏈路的建立 訊息格式 同步方式

4.訊息緩衝佇列通訊機制   不需管理鏈路 定義簡單資料結構(亦即訊息格式) 實現傳送和接收的操作原語

認識執行緒

怎樣進一步提高併發效率,節約時空開銷?

以程序為單位分配資源 將程序劃分為多個功能單位排程執行。

2.執行緒的屬性

輕型實體  獨立排程和分派的基本單位  可併發執行   共享程序資源

3.執行緒的資訊

狀態引數

識別符號、執行狀態、優先順序、暫存器狀態、堆疊、專有儲存器、訊號遮蔽等。

執行狀態 執行、就緒、阻塞

4. 執行緒的建立和終止

在多執行緒OS中,應用程式啟動時,通常只有一個執行緒(初始化執行緒)在執行,它根據需要再建立若干執行緒。

5.多執行緒系統中的程序 

程序只是用於分配系統資源

包括多個執行緒

不是執行實體,執行緒在程序範圍內作為執行實體。

6.執行緒的管理

1)互斥鎖

2)條件變數 與互斥鎖一起使用

3)訊號量   私用訊號量(private samephore)  公用訊號量(public samephore)