程序中斷屬于什么中斷 當(dāng)有n個(gè)并發(fā)進(jìn)程共享某個(gè)臨界資源時(shí),求互斥信號量的取值范圍?
當(dāng)有n個(gè)并發(fā)進(jìn)程共享某個(gè)臨界資源時(shí),求互斥信號量的取值范圍?信號量信號量用于:控制對共享資源的訪問(互斥);指示事件的發(fā)生;同步兩個(gè)任務(wù)。以下代碼中的信號量:shareduresourceusem用于
當(dāng)有n個(gè)并發(fā)進(jìn)程共享某個(gè)臨界資源時(shí),求互斥信號量的取值范圍?
信號量信號量用于:
控制對共享資源的訪問(互斥);指示事件的發(fā)生;同步兩個(gè)任務(wù)。
以下代碼中的信號量:shareduresourceusem用于控制對共享資源的訪問(互斥);信號量keyudownusem指示事件的發(fā)生。如果信號量的值大于0,則可以使用它。如果該信號量的值為0,則該信號量上的pend操作被放置在等待列表中。
初始化信號量時(shí),必須提供信號量的初始值。有三種初始值:
0:當(dāng)信號量用于指示事件時(shí),例如:
key_uu2;down_2;SEM=ossemcreate(0)1:當(dāng)信號量用于控制對共享資源的訪問時(shí),例如:
shared_2;resource_2;SEM=ossemcreate(1)
n:當(dāng)信號量用于表示任務(wù)的n個(gè)相同資源時(shí)。在RTOS啟動前,還應(yīng)注意信號量的初始化
關(guān)鍵區(qū)域互斥分為軟件實(shí)現(xiàn)方法和硬件實(shí)現(xiàn)方法。
軟件實(shí)現(xiàn)方法是設(shè)置和檢查入口區(qū)域中的一些標(biāo)志,以指示關(guān)鍵區(qū)域中是否有進(jìn)程。如果在關(guān)鍵區(qū)域有一個(gè)進(jìn)程,它將通過循環(huán)檢查在入口區(qū)域等待。進(jìn)程離開關(guān)鍵區(qū)域后,它將修改退出區(qū)域中的標(biāo)志。
硬件實(shí)現(xiàn)方法分為中斷屏蔽法和硬件指令法。
中斷屏蔽意味著當(dāng)進(jìn)程使用處理器在關(guān)鍵區(qū)域執(zhí)行代碼時(shí),禁止所有中斷,以防止其他程序進(jìn)入關(guān)鍵區(qū)域。
硬件指令方法使用ts和swap語句。
信號量互斥由P、V原語控制。當(dāng)進(jìn)入關(guān)鍵區(qū)域時(shí),通過P,V操作修改信號量值,實(shí)現(xiàn)互斥。我認(rèn)為在關(guān)鍵領(lǐng)域?qū)崿F(xiàn)互斥的兩種基本方法之間有一些細(xì)微的差別。如果你真的想把它分成基本的方法,它仍然感覺像是軟件實(shí)現(xiàn)方法。
信號量機(jī)制屬于臨界區(qū)互斥的哪種互斥方法?
線程同步的方法包括:互斥鎖、讀寫鎖、條件變量、信號量和令牌。以Java語言為例:用synchronized關(guān)鍵字修改同步方法。有幾種方法可以實(shí)現(xiàn)同步:synchronized、wait和notifywait():使線程等待并釋放它持有的對象的鎖。