(10)任務(wù)互斥
A、任務(wù)之間的關(guān)系:相互獨(dú)立、任務(wù)互斥、任務(wù)同步、任務(wù)通信。
B、任務(wù)間的互斥:當(dāng)前已經(jīng)有一個(gè)任務(wù)正在訪問(wèn)臨界區(qū)共享數(shù)據(jù),那么其他任務(wù)暫時(shí)
不能訪問(wèn)。
C、提出互斥訪問(wèn)的四個(gè)條件:
a、在任何時(shí)候最多只能有一個(gè)任務(wù)位于它的臨界區(qū)中。
b、不能事先假定CPU 的個(gè)數(shù)和系統(tǒng)的運(yùn)行速度。
c、沒(méi)有任務(wù)位于它的臨界區(qū)中,它不妨礙其他任務(wù)去訪問(wèn)臨界區(qū)資源。
d、任何一個(gè)任務(wù)進(jìn)入臨界區(qū)的請(qǐng)求必須在有限的時(shí)間內(nèi)得到滿足,不能無(wú)限期。
D、任務(wù)互斥的解決方案:
a、關(guān)閉中斷法
b、繁忙等待法
c、信號(hào)量處理
(11)信號(hào)量
信號(hào)量記錄當(dāng)前可用資源的數(shù)量。
信號(hào)量由操作系統(tǒng)維護(hù),任務(wù)不能直接去修改它的值,只能通過(guò)初始化和兩個(gè)標(biāo)準(zhǔn)原
語(yǔ)(PV 原語(yǔ))來(lái)對(duì)它進(jìn)行訪問(wèn)。
注:關(guān)于原語(yǔ)。
原語(yǔ)通常由若干條語(yǔ)句組成,用來(lái)實(shí)現(xiàn)某個(gè)特點(diǎn)的操作,并通過(guò)一段不可分割或不可中斷的程序來(lái)實(shí)
現(xiàn)其功能。原語(yǔ)時(shí)操作系統(tǒng)內(nèi)核的一個(gè)組成部分,必須在內(nèi)核態(tài)下執(zhí)行。原語(yǔ)的不可中斷性是通過(guò)在其執(zhí)
行過(guò)程中關(guān)閉中斷來(lái)實(shí)現(xiàn)的。關(guān)鍵要理解PV 原語(yǔ)的實(shí)現(xiàn):
P(semaphores S)
{
--S.count; //申請(qǐng)一個(gè)資源
if(S.count < 0) //沒(méi)有空閑資源
{
將當(dāng)前任務(wù)阻塞起來(lái),加到阻塞隊(duì)列末尾,調(diào)度新的任務(wù)運(yùn)行。
}
}
V(semaphores S)
{
++S.count; //釋放一個(gè)資源
if(S.count <= 0) //有任務(wù)被阻塞
{
從阻塞隊(duì)列中取出一個(gè)任務(wù),把該任務(wù)改為就緒狀態(tài),插入就緒隊(duì)列。
}
}
利用操作系統(tǒng)提供的信號(hào)量機(jī)制,可以方便、有效地實(shí)現(xiàn)對(duì)臨界資源的互斥訪問(wèn),優(yōu)
點(diǎn)有兩個(gè):
A、可以設(shè)置信號(hào)量的計(jì)數(shù)值,從而允許多個(gè)任務(wù)同時(shí)進(jìn)入臨界區(qū)。
B、當(dāng)一個(gè)任務(wù)暫時(shí)無(wú)法進(jìn)入臨界區(qū)時(shí),它會(huì)被阻塞起來(lái),將CPU 讓給其他任務(wù)。
(12)任務(wù)同步
任務(wù)之間的同步可以使用信號(hào)量機(jī)制,通過(guò)引入PV 操作來(lái)設(shè)定兩個(gè)任務(wù)在運(yùn)行時(shí)的先
后順序。例如,可以把信號(hào)量視為某個(gè)共享資源的當(dāng)前個(gè)數(shù),然后由一個(gè)任務(wù)負(fù)責(zé)生成這種
資源,而另一個(gè)任務(wù)則負(fù)責(zé)消費(fèi)這種資源,這樣可以構(gòu)成兩個(gè)任務(wù)之間的先后順序。在具體
實(shí)現(xiàn)上,一般把信號(hào)量的初始值設(shè)為N,N 大于或等于0。然后在一個(gè)任務(wù)內(nèi)使用V 原語(yǔ),
把信號(hào)量加1,而在另外一個(gè)任務(wù)內(nèi)部使用P 原語(yǔ),將信號(hào)量減1,從而實(shí)現(xiàn)這兩個(gè)任務(wù)之
間的同步關(guān)系。
(13)死鎖
在一組任務(wù)中,每個(gè)任務(wù)都占用著若干資源,同時(shí)又在等待其他任務(wù)占用的資源,從
而造成所有任務(wù)都無(wú)法進(jìn)展下去的現(xiàn)象,這稱為死鎖現(xiàn)象。
除了資源的競(jìng)爭(zhēng)之外,PV 操作使用不當(dāng)也會(huì)引起死鎖。
相關(guān)推薦:軟考嵌入式系統(tǒng)設(shè)計(jì)歷年真題匯總(2007-2010)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |