作業系統 第二章 6 管程、程序、執行緒
一、管程:
1、管程的組成:
- 一組區域性變數
- 對區域性變數操作的一組過程
- 對區域性變數進行初始化的語句。
2、管程的特點:
- 任何程序只能通過呼叫管程提供的過程入口才能進入管程訪問共享資料;
- 任何時刻,僅允許一個程序在管程中執行某個內部過程。
3、管程如何實現同步:
- 對共享變數互斥操作
- 操作的同步控制: 靠條件變數(主要作用就是程序同步的阻塞和喚醒控制)的操作管理實現
4、管程的優點:
- 保證程序互斥地訪問共享變數,並方便地阻塞和喚醒程序。
- 管程可增強模組的獨立性
- 引入管程可提高程式碼的可讀性,便於修改和維護,正確性易於保證:採用集中式同步機制
5、管程的缺點:
大多數常用的程式語言中沒有實現管程,如果某種語言本身不支援管程,那麼加入管程是很困難的。
二、程序通訊:
程序通訊是指程序之間的資訊交換。
1、程序通訊的型別:
- 共享儲存器系統(操作儲存區方式)
- 訊息傳遞系統(發--收方式)send receive
- 管道通訊(中間檔案方式)字元流形式
- Client-Server system : 套接字(Socket)、遠端過程呼叫(遠端方法呼叫)
2、訊息緩衝佇列通訊機制:
本機通訊訊息結構,如下:
type message buffer = record
sender; 傳送者程序識別符號
size; 訊息長度
text; 訊息正文
next; 指向下一訊息緩衝區的指標
end
PCB中需要記錄有關通訊的資訊項
type ProcessControlBlock =record
…
mq; 訊息佇列隊首指標
mutex; 訊息佇列互斥訊號量
sm; 訊息佇列資源訊號量
…
end
3、傳送原語、接收原語:
三、執行緒
程序是一個可擁有資源的獨立單位; 是一個可獨立排程和分派資源的基本單位;程序實體資訊量大,對程序的管理操作越多,與執行時間的比值就越大,執行效率就低。
------------------------------為進一步提高併發效率:
以程序為單位分配資源 將程序劃分為多個功能單位排程執行。
執行緒:程序內的一條執行路徑,執行緒在程序範圍內作為執行實體。
多執行緒系統中,同一個程序中的多個執行緒
- 共享程序資源
- 可併發執行
輕型實體:只需一點必不可少的、能保證獨立執行的資源。(TCB)
執行緒與程序的比較
排程:執行緒作為CPU排程的基本單位,而程序只作為其它資源分配單位。
併發性:程序之間可以併發,實質上是不同程序中的兩個執行緒併發。一個程序的多個執行緒之間亦可併發。
擁有資源:程序間資源相互獨立;同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見
系統開銷:執行緒上下文切換在同進程環境下上下文切換要快得多。因為同進程內執行緒間共享記憶體地址和開啟的檔案資源;