作業系統之訊號量機制

2021-10-04 22:43:07 字數 1811 閱讀 3546

使用者程序可以使用作業系統提供的原語來操作訊號量,以實現程序的互斥和同步

原語是一塊不可中斷的程式段,由關中斷實現

這對原語是wait(),signal(),又稱為p v操作

訊號量可分為整形訊號量記錄型訊號量

程序的互斥需要遵守 四個原則,空則讓進,忙則等待,有限等待,讓全等待

由圖可以看出,在進行p操作時若資源小於0,系統會處於忙等狀態,不符合空則讓進的原則,所以使用的不多

在實現程序同步時需要遵守以下原則

前操作之後v操作

後操作之前p操作

及 想要先執行的程序在末尾執行v操作,後執行的**段首p操作

1.生產者消費者問題

注意其中的p操作的順序是不能轉換的,不如消費者中的p操作順序轉換,當產品為空時,會發生死鎖,但v操作可以顛倒,因為v操作不會造成系統的堵塞

這裡主要解決的問題是如何讓抽菸者可以輪流的抽菸

可以通過 if else 選擇結構來實現

讀者寫者互斥,但讀者與讀者可以併發,怎麼實現

這裡可以通過設定count變數,通過if語句 ,當count為0時(第乙個讀者)進行pv操作,當count不為0時(不是第乙個讀者),不進行pv操作,這樣 讀者寫者互斥,讀者與讀者可以併發。

為了防止在count加減時發生非同步,對這段**塊進行pv操作,如下

為了保證讀寫公平,引入的 p(w) v(w)

每個哲學家的左筷子和右筷子可以分別用 i 和 (i+1)%5 表示。

但是如上**有一定問題,當每個科學家都拿左筷子時變會發生死鎖現象,有三種解決方法

1.設定最多四個科學家同時進餐

2.奇數科學家先動右筷子,有科學家先動左筷子,這樣科學家必將進行競爭便不會發生死鎖了。

3.對拿左右筷子的**塊上鎖。

作業系統之 訊號量機制

訊號量機制是一種卓越成效的程序同步工具,訊號量機制已經被廣泛的使用於單處理機,和多處理系統的計算機網路中。訊號量s 是乙個整數,s大於等於零代表可供併發程序使用的資源實體數,當 s小於零時則表示正在等待使用臨界區的程序數,整型訊號量 整型訊號量定義乙個用於表示資源數目的整型量數目s 但是僅能通過兩個...

作業系統 訊號量機制

用乙個整數型的變數作為訊號量,用來表示股系統中某種資源的數量。與普通整數變數的區別 對訊號量的操作只有三種,初始化,p操作,v操作。p操作 相當於wait原語,進入區 v操作 signal原語,相當於退出區。大體實現 wait 方法一氣呵成,避免併發導致的問題。但是不滿足 讓權等待原則 程序會處於忙...

作業系統之訊號量機制詳解

使用者程序可以通過使用乙個變數 可以是乙個整數,也可以是更為複雜的記錄型變數 可以用乙個訊號量來表示系統中某種資源的數量。比如 系統中只有一台印表機,就i可以設定乙個初值為1的訊號量。原語是一種特殊的程式段,其執行只能一氣呵成,不可被中斷。原語是由關中斷 開中斷指令實現的。wait s 原語和sig...