欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
實(shí)時(shí)系統(tǒng)概念
[打印本頁(yè)]
作者:
liuda
時(shí)間:
2015-1-23 20:40
標(biāo)題:
實(shí)時(shí)系統(tǒng)概念
這幾天邊看電影邊整理的筆記。大家得捧場(chǎng)哈!以后會(huì)經(jīng)常有的。
首先我們的熟悉實(shí)時(shí)系統(tǒng)的概念,實(shí)時(shí)系統(tǒng)它分為軟實(shí)時(shí)和硬實(shí)時(shí);軟實(shí)時(shí)系統(tǒng)它是指系統(tǒng)的目的是為了使各個(gè)任務(wù)盡快的執(zhí)行,而不要求限定的某一個(gè)任務(wù)在多長(zhǎng)時(shí)間內(nèi)完成,也就是該系統(tǒng)超過(guò)規(guī)定時(shí)間對(duì)系統(tǒng)不會(huì)產(chǎn)生很大的影響,系統(tǒng)依然可以運(yùn)行。而硬實(shí)時(shí)系統(tǒng)則不僅要求任務(wù)執(zhí)行無(wú)誤,而且還要做到準(zhǔn)時(shí);也就是說(shuō)在一到達(dá)規(guī)定的時(shí)間,任務(wù)必須完成,否則會(huì)給系統(tǒng)帶來(lái)災(zāi)難性的后果。
我以前寫(xiě)的程序很多是沒(méi)有嵌系統(tǒng)的,所以它們稱為前/后臺(tái)系統(tǒng)或超循環(huán)系統(tǒng)。那么什么是前臺(tái),什么是后臺(tái)呢?我們的程序中有個(gè)main函數(shù),這個(gè)函數(shù)肯定是一個(gè)無(wú)限循環(huán)系統(tǒng),在循環(huán)中調(diào)用相應(yīng)的驅(qū)動(dòng)函數(shù)完成相應(yīng)的功能,這部分可以看成是后臺(tái)行為;一般的系統(tǒng)都是有中斷發(fā)生的,那么中斷服務(wù)處理程序可以看成是前臺(tái)行為;固有這個(gè)說(shuō)法,后臺(tái)可以成為任務(wù)級(jí),前臺(tái)成為中斷級(jí)。這種前/后臺(tái)系統(tǒng)有一個(gè)很大的缺點(diǎn),就是任務(wù)級(jí)的響應(yīng)時(shí)間不是固定的,因?yàn)樗茄h(huán)中的一部分,所以取決于循環(huán)運(yùn)行的時(shí)間,所以前/后臺(tái)系統(tǒng)很容易跑飛。
代碼的臨界段也稱臨界區(qū),指處理時(shí)不可分割的代碼;所以進(jìn)入臨界區(qū)之前必須關(guān)中斷,臨界區(qū)代碼執(zhí)行完后,必須馬上開(kāi)中斷。
任務(wù),在UCOS-ii實(shí)時(shí)系統(tǒng)中,一個(gè)任務(wù)其實(shí)就是一個(gè)線程,該任務(wù)可以認(rèn)為CPU完全屬于它自己。UCOS-ii中的任務(wù)擁有自己的堆棧和CPU寄存器,并且賦予一定的優(yōu)先級(jí),在UCOS-ii中,它可能處于睡眠、就緒、運(yùn)行、等待、中斷服務(wù)狀態(tài)之一。1)睡眠狀態(tài):它是一個(gè)什么樣的狀態(tài)呢,它其實(shí)是指一個(gè)任務(wù)在內(nèi)存中就占用一部分ROM,它沒(méi)有被操作系統(tǒng)分配任務(wù)控制塊,它和其他狀態(tài)下的任務(wù)沒(méi)有任何直接聯(lián)系,也就是說(shuō)不能被內(nèi)核調(diào)度,就好比 我們?nèi)コ燥垼诼飞希?)就緒狀態(tài):它是指操作系統(tǒng)給它分配了任務(wù)控制塊,已經(jīng)在就緒列表中登記中,它此時(shí)不能運(yùn)行是因?yàn)樗膬?yōu)先級(jí)不是最高的,就好比我們?nèi)コ燥垥r(shí)在那排隊(duì)一樣;3)運(yùn)行狀態(tài):它 是指一個(gè)任務(wù)正在運(yùn)行,應(yīng)該好理解,就好比食堂工作人員在給我們打飯;4)等待狀態(tài):就是一個(gè)任務(wù)由于一個(gè)的條件沒(méi)有滿足,比如說(shuō)在等待一個(gè)信號(hào)量的到來(lái),而被至于等待狀態(tài),就像我們?cè)诖蝻垥r(shí),如果工作人員還沒(méi)有來(lái),那你沒(méi)辦法,你就得等拉;5)中斷服務(wù)狀態(tài):就是在某個(gè)時(shí)刻突然因?yàn)橐粋(gè)中斷到來(lái),那么 這個(gè)任務(wù)就會(huì)馬上被中斷掉,從而處于中斷服務(wù)狀態(tài),比如一個(gè)餓得受不了的人,如果搶你前面,本來(lái)該你打飯的,可是你看到他這個(gè)樣子,不忍心,那么你就被中斷了一會(huì),中斷結(jié)束后,中斷掉的任務(wù)才會(huì)被繼續(xù)運(yùn)行,同樣的你才能夠打飯;呵呵,這個(gè)比喻好像損了點(diǎn)。
在操作系統(tǒng)中,內(nèi)核提供的基本服務(wù)就是任務(wù)切換,它實(shí)際上可以說(shuō)是寄存器內(nèi)容的切換。自然任務(wù)切換是需要時(shí)間的,CPU寄存器越多,負(fù)荷也就越大。
基于優(yōu)先級(jí)的內(nèi)核有兩種:不可剝奪型和可剝奪型。不可剝奪型內(nèi)核它要求每個(gè)任務(wù)互相合作,也稱為合作型內(nèi)核,每個(gè)任務(wù)不會(huì)被其它任務(wù)剝奪去,除非中斷的到來(lái),即便如此,當(dāng)中斷結(jié)束后,還是會(huì)回到原來(lái)被中斷的程序,而不會(huì)切換到具有高優(yōu)先級(jí)的任務(wù)中去,這樣,高優(yōu)先級(jí)的任務(wù)就不能夠及時(shí)得到執(zhí)行,所以它的實(shí)時(shí)性是比較差的。但是它有一個(gè)很重要的特點(diǎn),就是它可以使用不可重入函數(shù),因?yàn)槊總(gè)任務(wù)必須執(zhí)行完,才能釋放CPU,這樣它對(duì)其它任務(wù)調(diào)用不可重入函數(shù)沒(méi)有影響;同理在大多數(shù)情況下它無(wú)須使用信號(hào)量來(lái)保護(hù)資源。
對(duì)于可剝奪型內(nèi)核,只要高優(yōu)先級(jí)任務(wù)一就緒,那它就會(huì)被執(zhí)行,而當(dāng)前正在執(zhí)行的任務(wù)就會(huì)被掛起;正因?yàn)槿绱耍瑢?duì)于系統(tǒng)的資源就不能像不可剝奪型那樣去使用,而是在使用前必須檢查是否可以使用,即互斥機(jī)制來(lái)保護(hù)臨界資源,如果不用的話,那么如果低優(yōu)先級(jí)在使用臨界資源時(shí),突然被高優(yōu)先級(jí)把CPU給搶過(guò)去了,那么低優(yōu)先級(jí)的臨界資源就可能會(huì)被告優(yōu)先級(jí)任務(wù)給破壞掉,所以可剝奪型內(nèi)核是不能調(diào)用不可重入函數(shù)的,必須對(duì)共享資源通過(guò)互斥來(lái)訪問(wèn)。可剝奪型的優(yōu)點(diǎn)是是系統(tǒng)的響應(yīng)時(shí)間得到了優(yōu)化,且是可知的。
實(shí)時(shí)系統(tǒng)中,中斷優(yōu)先級(jí)反轉(zhuǎn)這一問(wèn)題是出現(xiàn)得最多的,這問(wèn)題的本質(zhì)其實(shí)也不能理解,就是低優(yōu)先級(jí)的任務(wù)占有高優(yōu)先級(jí)的任務(wù)所需要的資源,而使高優(yōu)先級(jí)不得不等低優(yōu)先級(jí)把資源釋放才能執(zhí)行,在UCOS中一樣也存在這問(wèn)題。不過(guò)我們可以人為解決這問(wèn)題,因?yàn)閁COS中可以動(dòng)態(tài)的修改任務(wù)的優(yōu)先級(jí),那么我們可以通過(guò)優(yōu)先級(jí)極限法,實(shí)際上就是把低優(yōu)先級(jí)的任務(wù)的優(yōu)先級(jí)提高為0級(jí);使該任務(wù)不會(huì)被其他任務(wù)所中斷,直到該任務(wù)執(zhí)行完共享資源的代碼后再回到原來(lái)的優(yōu)先級(jí)。其實(shí)還有一種方法叫優(yōu)先級(jí)繼承法,它的含義就是把低優(yōu)先級(jí)任務(wù)的優(yōu)先級(jí)提高至與要用到該低優(yōu)先級(jí)任務(wù)所占用的資源;這要求內(nèi)核能夠允許一個(gè)優(yōu)先級(jí)可以對(duì)應(yīng)于多個(gè)任務(wù),同時(shí)支持時(shí)間片段輪度調(diào)度;顯然UCOS是不支持它的。更多的請(qǐng)見(jiàn)嵌入式實(shí)時(shí)系統(tǒng)中的優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題
。
上面提到了互斥,就簡(jiǎn)要描述下互斥的條件;互斥我們一般在于共享資源打交道時(shí)經(jīng)常用到,那么我們對(duì)這些共享資源要怎么才能做到合理利用而被破壞呢,那就要使當(dāng)時(shí)內(nèi)核的環(huán)境滿足互斥條件:關(guān)中斷、使用測(cè)試并置位指令(要求有相應(yīng)的硬件)、禁止做任務(wù)切換、利用信號(hào)量。
信號(hào)量實(shí)際上是一種約束機(jī)制,熟悉操作系統(tǒng)應(yīng)該都懂它,他有以下作用:
1>
控制共享資源的使用權(quán)『滿足互斥機(jī)制』
2>
標(biāo)志某事件的發(fā)生
3>
使
2
個(gè)任務(wù)的行為同步
。信號(hào)量可是
0
和
1
的兩個(gè)值也可以是
0
~
n
(
n>2
)的計(jì)數(shù)式的信號(hào)量;總之內(nèi)核是時(shí)刻跟蹤信號(hào)量的『這句話可要好好理解』。一般說(shuō)信號(hào)量只能實(shí)施
3
種操作:初始化,也可以稱是建立,此時(shí)要初始化信號(hào)量的初始值,記住是不能小于
0
的;等待信號(hào)量,這時(shí)等待信號(hào)量的任務(wù)一般處于掛起狀態(tài),等待的任務(wù)如果發(fā)現(xiàn)信號(hào)量大于
0
,信號(hào)量的值減
1
,然后繼續(xù)執(zhí)行,如果為
0
,該任務(wù)就掛起;然后就是發(fā)送信號(hào)量,發(fā)送時(shí),信號(hào)量會(huì)增一,同時(shí)會(huì)進(jìn)行任務(wù)調(diào)度。
死鎖也稱為抱死,指兩個(gè)任務(wù)無(wú)限期的等待對(duì)方的資源;防止死鎖的方法:
1>
先得到全部資源,再做下一步的工作
2>
用同樣的順序申請(qǐng)多個(gè)資源
3>
釋放資源是,使用相反的順序。
還有就是定義超時(shí)來(lái)化解死鎖。
任務(wù)間的信息的傳遞有兩個(gè)途徑:全程變量和發(fā)消息給另一個(gè)任務(wù)。任務(wù)只能通過(guò)全程變量和中斷服務(wù)子程序通信。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1