什么是信號(hào)量 請(qǐng)列舉幾種進(jìn)程的同步機(jī)制,并比較其優(yōu)缺點(diǎn)?
請(qǐng)列舉幾種進(jìn)程的同步機(jī)制,并比較其優(yōu)缺點(diǎn)?一個(gè)信號(hào)量的初始值只能設(shè)置一次,然后只能由P或v操作由此可以看出,信號(hào)量機(jī)制必須有公共內(nèi)存,不能在分布式操作系統(tǒng)中使用,這是它最大的弱點(diǎn)。信號(hào)量機(jī)制功能強(qiáng)大,
請(qǐng)列舉幾種進(jìn)程的同步機(jī)制,并比較其優(yōu)缺點(diǎn)?
一個(gè)信號(hào)量的初始值只能設(shè)置一次,然后只能由P或v操作
由此可以看出,信號(hào)量機(jī)制必須有公共內(nèi)存,不能在分布式操作系統(tǒng)中使用,這是它最大的弱點(diǎn)。信號(hào)量機(jī)制功能強(qiáng)大,但信號(hào)量的操作比較分散,控制、讀、寫和維護(hù)都比較困難。增加了程序員的編碼負(fù)擔(dān);核心操作P-V分散在每個(gè)用戶程序的代碼中,不易控制和管理;一旦出錯(cuò),后果嚴(yán)重,不易發(fā)現(xiàn)和糾正。(b) 自旋鎖:自旋鎖是一種保護(hù)共享資源的鎖機(jī)制。如果調(diào)用者請(qǐng)求的資源被占用,也就是說,自旋鎖已經(jīng)被另一個(gè)執(zhí)行單元持有,調(diào)用者將在那里循環(huán)以查看自旋鎖是否已經(jīng)被持有和釋放。自旋鎖(Spin lock)是一種相對(duì)低級(jí)的保護(hù)數(shù)據(jù)結(jié)構(gòu)和代碼片段的原始方法,它可能會(huì)導(dǎo)致以下兩個(gè)問題:1。僵局;2。CPU資源占用過多。傳統(tǒng)的自旋鎖會(huì)因無序競(jìng)爭(zhēng)(c)管理而導(dǎo)致“公平”問題:信號(hào)量機(jī)制強(qiáng)大,但信號(hào)量操作分散,難以控制、讀寫和維護(hù)。因此,后來提出了一個(gè)集中式的同步過程tube進(jìn)程。其基本思想是將共享變量及其操作集中在一個(gè)模塊中,操作系統(tǒng)或并發(fā)程序由這些模塊組成。這樣,模塊之間的連接清晰,易于維護(hù)和修改,易于保證正確性。(d) 交會(huì):過程直接相互作用。(E) 分布式系統(tǒng):由于分布式操作系統(tǒng)中沒有公共內(nèi)存,所以所有參數(shù)都是值參數(shù),不能是指針。(f) 原語是一個(gè)不間斷的過程。
進(jìn)程,線程同步方式中條件變量和信號(hào)量有什么區(qū)別嗎?
你不在乎它是有條件的還是什么。只要您了解由于此變量/資源是共享的,可能有多個(gè)進(jìn)程或線程要修改它,就必須向其添加鎖。一次只能有一個(gè)進(jìn)程/線程獲得此鎖。例如,mutex是一個(gè)布爾變量,它表示資源變量(…
當(dāng)有n個(gè)并發(fā)進(jìn)程共享某個(gè)臨界資源時(shí),求互斥信號(hào)量的取值范圍?
信號(hào)量)。信號(hào)量用于:
控制對(duì)共享資源的訪問(互斥);指示事件的發(fā)生;同步兩個(gè)任務(wù)。
以下代碼中的信號(hào)量:shareduresourceusem用于控制對(duì)共享資源的訪問(互斥);信號(hào)量keyudownusem指示事件的發(fā)生。如果信號(hào)量的值大于0,則可以使用它。如果該信號(hào)量的值為0,則該信號(hào)量上的pend操作被放置在等待列表中。
初始化信號(hào)量時(shí),必須提供信號(hào)量的初始值。有三種初始值:
0:當(dāng)信號(hào)量用于指示事件時(shí),例如:
key_uu2;down_2;SEM=ossemcreate(0)1:當(dāng)信號(hào)量用于控制對(duì)共享資源的訪問時(shí),例如:
shared_2;resource_2;SEM=ossemcreate(1)
n:當(dāng)信號(hào)量用于表示任務(wù)的n個(gè)相同資源時(shí)。在RTOS啟動(dòng)之前,還應(yīng)該注意信號(hào)量的初始化