何時使用訊號量
當有多個程序存在時,為了避免當乙個程序正在執行的時候,其他程序不斷詢問cpu是否空閒(比較消耗時間)(他們此刻處於等待狀態-》沒鎖,當可以使用cpu時就可以上鎖(鎖是鎖的cpu和程序(可認為是繫結使用))。其中的詢問操作就可以使用訊號量機制將其簡化。
p操作->臨界區-v操作
訊號量使用的s(訊號量的具體變數)當沒有使用時為0 當用了之後就為1
正常狀態:
從上乙個結束狀態的1由p操作使得訊號量(s-=1)變為0,如果沒有其他程序在等待則正常使用v操作(+1)又得到1
s變數的變化過程(1-0-1)
特殊狀態:
當有程序在等待(判斷依據: 當p操作連續執行了不止一次之後會導致s<0, 然後通過判斷s變數是否小於0來判斷當前是否為有多個程序進行p操作,如果是則先要對這些程序進行阻塞操作(block) 。這種情況下當最開始進入的程序退出時因為s不再為1所以會先將原來阻塞的程序使用喚醒語句,將等待的程序喚醒執行
s變數的變化過程(1-0–1--2…–2--1-0-1)
對於訊號量:
當s>=0時表示該類可用資源的數量,或者首表示可以執行p操作而不會被阻塞的程序數目
當s<0時其絕對值表示訊號量s的阻塞佇列中的程序數
注意:p,v操作才能控制s訊號量
作業系統訊號量
本文將針對較為簡單的生產者消費者問題,給出利用訊號量解決問題的方法。生產者 能產生並投放資源的程序 消費者 單純使用 消耗 資源的程序 問題表述 一組 生產者程序和一 組消費者程序 設每組有多個程序 通過緩衝區發生聯絡。生產者程序將生產的產品 資料 訊息等統稱為產品 送入緩衝區,消費者程序從中取出產...
作業系統 訊號量
代表了一類物理資源,是相應的物理資源的抽象,通常為整型或結構體型,除了初始化之外,其他情況下只能使用p v進行操作 執行一次p s 則s.value減一,若執行p s 之後s.value 0,則表示該類資源可用,否則不可用 執行一次v s 則s.value加一,若執行v操作以後,s.value的值仍...
作業系統 訊號量機制
用乙個整數型的變數作為訊號量,用來表示股系統中某種資源的數量。與普通整數變數的區別 對訊號量的操作只有三種,初始化,p操作,v操作。p操作 相當於wait原語,進入區 v操作 signal原語,相當於退出區。大體實現 wait 方法一氣呵成,避免併發導致的問題。但是不滿足 讓權等待原則 程序會處於忙...