37.操作系统的信号量
信號量又有人叫信號燈。
將信號量之前我們先講講線程的互斥和同步
舉個例子:
我們之前講過進程是一個公司,線程是員工。我們知道一個公司是有很多員工的,但是有的資源往往沒有那么多。比如打印機往往只有一臺或兩臺。那么只有一臺的情況下,小張和小李兩個人同時要用到的話,他們現在就是線程的互斥狀態,打印機只能一個人用。這種互斥是無序的競爭,因為誰先用是不知道的。那么同步是什么呢?同步就是一種有序的合作,是建立在互斥上的。
這個其實還涉及了臨界區、臨界資源和PV操作
臨界資源很容易理解:就是打印機
因為臨界資源的使用是互斥的,所以必須設置臨界區,臨界區是指使用臨界資源的代碼段。 也就是相當于臨界區就是一個打印室,里面放著打印機。這個打印室門口只放著一把鑰匙,也就是只能同時進去一個人,然后就會自動反鎖。只有等待這個人出來之后把鑰匙放回門上,下個人才能進去,這樣就避免上面小張小李尷尬的情況。這種狀態就是同步,同步是有序的。
信號量其實就包括兩個東西,一個指針,一個是信號值。
指針就是打印室門口排隊的人的順序。 信號值就是門口的鑰匙。
如果門口還有鑰匙,也就是信號值為正,說明正在排隊的人還能進去。
如果沒有鑰匙,也就是信號值為負。就說明里面有人。
那么問題又來了?我們知道辦公室的鑰匙使用辦公室的人使用的。
有一個概念叫做PV操作。概念上 P是荷蘭語的申請的意思。V則是釋放。
也很容易理解p操作相當于拿鑰匙。V操作相當于把鑰匙放回去。
那么PV操作的應該注意的地方:
PV操作是成對出現的,相當于你拿了鑰匙就要把鑰匙放回去。
那么信號燈是有什么注意的呢?就是鑰匙的數量是根據資源決定的,加入打印室里有3臺打印機,那么門口就應該放三把鑰匙。
說了這么久?那么信號燈是什么呢?
從數據結構上來說 信號燈就是一個有指針和整型值的結構體,作用是跟PV操作一起實現線程的同步。
再補充一點:PV操作又叫PV原語。
原語的概念:
原語通常由若干條指令組成,用來實現某個特定的操作。
通過一段不可分割的或不可中斷的程序實現其功能。原語是操作系統的核心,是操作系統的一個組成部分。
通俗來講:原語是操作系統的核心指令,實現特定的操作。
那么原語相當于公司里的什么呢?
我們之前說過CPU相當于公司的老板,擁有很多家公司。但是只能在同一時刻打理一家公司。操作系統就是老板對所有公司定下的規則,公司守則。原語就是這些規則里面的核心部分。不如說上班遲到扣工資等等。那么pv原語就是規定了:你進去之前要排隊拿鑰匙,不能踹門。出來后要放鑰匙,不能帶走。
好吧,撤多了。
總結
以上是生活随笔為你收集整理的37.操作系统的信号量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: *36.操作系统中磁盘的调度算法
- 下一篇: 38.什么是PV操作