通俗理解訊號量

2021-08-08 16:18:42 字數 1027 閱讀 2293

大家都知道,計算機有了作業系統後效能大幅度提公升,其根本原因就在於實現了程序的併發執行。多個併發的程序彼此之間圍繞著緊俏的資源產生了兩種關係,同步或互斥。而訊號量正式解決資源競爭的最有效途徑。

比如記錄資源的數量,等待資源的程序數,等待資源的程序阻塞佇列在哪,

當然最重要的是訊號量還代表這個資源是互斥的

。比如訊號量

s=3代表資源目前還有

3個,沒有程序阻塞;

s=-2

代表資源已經都被占用,且阻塞佇列中等待資源的程序有2個。

訊號量是作業系統提供給使用者使用的一種機制,幫助使用者程序協調使用資源,使用者程式設計的時候可以直接呼叫,不必自己設計。

計算機對訊號量只能執行

wait

和signal

這兩種原子操作,即申請和釋放訊號量時無法被打斷。下面看乙個例題:

例:若有一售票廳只能容納

300人,當少於

300人時,可以進入;否則,需在外等候。若將每乙個購票者作為乙個程序,請用p(

wait)、v

(signal

)操作程式設計,並寫出訊號量的初值。(強調:只有乙個購票視窗,每次只能為一位購票者服務)

分析:題中有兩類資源,售票廳和售票視窗,售票廳可以容納

300人,視窗只能服務

1個人。使用者到達後要想買到票,首先要進入售票廳,然後申請到視窗才行。因此使用者需要獲得兩類資源才能成功購票。好了,我們定義兩個訊號量乙個是

s1,代表售票廳還能容納的人數,乙個是

s2,代表視窗,它們的初始值乙個是

300,乙個是

1。程式如下: 解:

semophore s1=330

,s2=1;

使用者程序

pi

注意,申請的時候能不能把s1,s2的順序調換呢?答案是不能的,因為如果某程序申請到了視窗(被叫號了),卻無法進入大廳,那麼其他人就無法購票,也就無法退出大廳,他也就一直進不去了。另外在釋放過程中,能不能把siganl(s2)放在程式的最後呢,答案是可以的,但是多程序併發時,資源釋放的太晚是不是會影響計算機的效率呢。

程序間通訊 通俗理解訊號量方式

關於名字,老師課件上寫訊號量,實驗教材上卻寫訊號燈。這種概念,叫來叫去的概念的東西適合不去理解東西的女生去背。然後覺得知道的東西很多一樣每次都說其中乙個時都把另乙個名字也說出來。我喜歡通俗的理解一下,在前兩遍的時候沒有什麼概念,這次就仔細找生活中的概念。我想起來我坐過的火車,那上邊的衛生間,目前沒坐...

訊號量的理解

什麼是semaphore 訊號量 訊號量 semaphore 是在多執行緒環境下使用的一種設施,它負責協調各個執行緒,以保證它們能夠正確 合理的使用公共資源。舉例 我們來看看乙個停車場是怎樣運作的。為了簡單起見,假設停車場只有三個車位,一開始三個車位都是空的。這是如果同時來了五輛車,看門人允許其中三...

訊號量 二值訊號量

訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...