




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
嵌入式操作系統(tǒng)在嵌入式系統(tǒng)中的位置?應(yīng)用程序嵌入式實時操作系統(tǒng)BSP抽象的硬件接口函數(shù)包(HIP)集成ARM、存儲器、時鐘、外設(shè)的硬件平臺進(jìn)程與線程任務(wù)調(diào)度與優(yōu)先級資源內(nèi)存管理內(nèi)核與時鐘節(jié)拍信號量與互斥信號量消息郵箱……嵌入式實時操作系統(tǒng)原理在桌面Windows操作系統(tǒng)下,點擊任何一個以.exe為擴(kuò)展名的可執(zhí)行文件,或者點擊桌面上的程序圖標(biāo),都可以啟動一個應(yīng)用程序,該應(yīng)用程序啟動后,將成為Windows操作系統(tǒng)管理的一個進(jìn)程。例如,用戶在使用OfficeWord軟件時,打開Windows系統(tǒng)任務(wù)管理器,如圖2-2所示,會出現(xiàn)一個WINWORD.EXE進(jìn)程。2.1什么是進(jìn)程?系統(tǒng)中的進(jìn)程Windows2.1.1進(jìn)程的特點?動態(tài)性異步性并發(fā)性獨立性結(jié)構(gòu)性正如WindowsVista,WindowsCE是一個完全的多任務(wù)和多線程的操作系統(tǒng)。包含可執(zhí)行代碼的Win32文件被稱作模塊,WindowsCE支持二種類型的模塊,即以EXE為擴(kuò)展名的應(yīng)用程序和以DLL為擴(kuò)展名的動態(tài)鏈接庫。當(dāng)WindowsCE裝入一個應(yīng)用程序模塊時,它就創(chuàng)建了一個進(jìn)程。一個進(jìn)程是應(yīng)用程序的一個實例。如果二個MicrosoftPocketWord的副本在運行,那么就可以說有二個獨立的進(jìn)程在運行。每個進(jìn)程有它自己的受保護(hù)的地址空間。WindowsCE6允許無限多個進(jìn)程并發(fā)執(zhí)行。2.1.2DouglasBoling先生談進(jìn)程的實質(zhì)線程是進(jìn)程中的一個執(zhí)行單元,但是線程和程序中的函數(shù)沒有對應(yīng)關(guān)系!線程的工作機(jī)制與進(jìn)程相似,具有獨立的堆棧和運行環(huán)境,對于單CPU系統(tǒng)來說,任一時刻僅有一個線程處于運行狀態(tài),當(dāng)運行的線程被掛起后,CPU會切換到新的線程執(zhí)行。進(jìn)程中的所有線程均使用該進(jìn)程的資源。每個進(jìn)程都有一個主線程,且每個進(jìn)程均可以創(chuàng)建無限多個線程。2.1.3什么是線程在嵌入式實時操作系統(tǒng)下,任務(wù)本質(zhì)上是進(jìn)程或者線程。例如在μC/OS-II下,任務(wù)更像一個具有唯一線程的進(jìn)程,即每個任務(wù)具有唯一的一個優(yōu)先級,具有獨立的堆??臻g,每個時刻僅能有一個任務(wù)占用CPU使用權(quán),多個任務(wù)間通過任務(wù)調(diào)度協(xié)調(diào)運行。2.1.4任務(wù)與進(jìn)程或線程的關(guān)系2.1.5μC/OS-II中的任務(wù)創(chuàng)建和管理過程2.1.6任務(wù)在內(nèi)存中的示意圖所謂調(diào)度器就是任務(wù)間切換的一種規(guī)則,是由嵌入式實時操作系統(tǒng)完成的,在μC/OS-II中,當(dāng)多個任務(wù)同時就緒時,優(yōu)先級最高的任務(wù)得到CPU使用權(quán)而執(zhí)行;當(dāng)某一任務(wù)執(zhí)行完成后,系統(tǒng)將再次查詢就緒態(tài)的任務(wù)中優(yōu)先級最高的任務(wù),并將CPU使用權(quán)分配給它;當(dāng)某一任務(wù)被中斷而中斷服務(wù)程序執(zhí)行完畢后,該任務(wù)將與所有就緒態(tài)的任務(wù)一起被調(diào)度,即中斷退出后,會查詢就緒態(tài)的優(yōu)先級最高的任務(wù)執(zhí)行,如果被中斷的任務(wù)具有最高優(yōu)先級,則返回到那個任務(wù)執(zhí)行,否則,將切換到其他最高優(yōu)先級的任務(wù)執(zhí)行。2.1.7什么是調(diào)度器任務(wù)調(diào)度是嵌入式實時操作系統(tǒng)的核心工作,最優(yōu)化調(diào)度策略是嵌入式實時操作系統(tǒng)設(shè)計的最終目標(biāo)。目前大部分實時操作系統(tǒng)均有較高的調(diào)度效率。2.2任務(wù)調(diào)度與優(yōu)先級2.2.1任務(wù)有幾種狀態(tài)所謂任務(wù)的就緒態(tài)是指當(dāng)前某個任務(wù)處于可執(zhí)行狀態(tài),但是由于CPU正在被其他任務(wù)使用,使得該任務(wù)無法立即執(zhí)行,處于就緒態(tài)的任務(wù)一旦獲得CPU使用權(quán),將立即執(zhí)行。任務(wù)的等待態(tài)是指該任務(wù)正在等待某一事件的發(fā)生或處于延時等待狀態(tài)。2.2.2什么是就緒態(tài)等待態(tài)任務(wù)即使得到了CPU使用權(quán),也不可能執(zhí)行,當(dāng)然,它也不會得到CPU使用權(quán);而就緒態(tài)任務(wù)只要得到CPU使用權(quán),就立即執(zhí)行。等待態(tài)任務(wù)等待的是某個條件的滿足,例如,它請求的共享資源可以使用了,或延時達(dá)到了指定的時長等;就緒態(tài)任務(wù)等待的是CPU使用權(quán)。2.2.3就緒態(tài)和等待態(tài)的區(qū)別當(dāng)?shù)却龖B(tài)任務(wù)的等待條件滿足而結(jié)束等待后,不能立即進(jìn)入執(zhí)行態(tài),必須進(jìn)入就緒態(tài);而就緒態(tài)任務(wù)一旦不再等待,便獲得了CPU使用權(quán)而執(zhí)行了。也就是說,等待態(tài)任務(wù)當(dāng)?shù)却龡l件滿足后就會進(jìn)入就緒態(tài);而就緒態(tài)任務(wù)不再等待時將進(jìn)入執(zhí)行態(tài)。一般來說,等待態(tài)任務(wù)的等待時間會大于一個時鐘節(jié)拍,甚至可為成百上千個時鐘節(jié)拍;而就緒態(tài)任務(wù)的等待時間必然會小于一個時鐘節(jié)拍。嵌入式系統(tǒng)要求一個時鐘節(jié)拍內(nèi)CPU必須有能力完成所有的就緒態(tài)任務(wù)。2.2.4什么是任務(wù)優(yōu)先級每個任務(wù)在創(chuàng)建時都被分配一個優(yōu)先級數(shù)值,大部分嵌入式實時操作系統(tǒng)的調(diào)度是基于優(yōu)先級實現(xiàn)的,即同處于就緒態(tài)的最高優(yōu)先級的任務(wù)將獲得CPU使用權(quán)而執(zhí)行,優(yōu)先級低的就緒態(tài)任務(wù)必須等高優(yōu)先級的任務(wù)執(zhí)行完畢后才能按優(yōu)先級高低依次獲得CPU使用權(quán)。當(dāng)優(yōu)先級相同的多個任務(wù)處于就緒態(tài)時,嵌入式實時操作系統(tǒng)為它們每個任務(wù)分配執(zhí)行的時間片,當(dāng)某個任務(wù)在其被分配的時間片內(nèi)還沒有執(zhí)行完時,系統(tǒng)將剝奪其CPU的使用權(quán),分配下一個時間片給同優(yōu)先級的另一個任務(wù),同樣道理,直到這類任務(wù)執(zhí)行完成,這種方法稱時間片輪換調(diào)度法。2.2.5相同優(yōu)先級任務(wù)的調(diào)度法任務(wù)切換是指任務(wù)狀態(tài)間的切換,只有在多任務(wù)操作系統(tǒng)中才有意義,任務(wù)切換為ContextSwitch,有時也被直譯為上下文切換,每次任務(wù)的切換都伴隨有堆棧操作,用于保存或恢復(fù)任務(wù)的執(zhí)行環(huán)境(或上下文)。2.2.6什么是任務(wù)切換1、任務(wù)被創(chuàng)建后會進(jìn)入到就緒態(tài),此時有一個入棧的操作,即把該任務(wù)的執(zhí)行入口地址入棧,因為此時沒有運行環(huán)境,故運行環(huán)境的入棧值是隨機(jī)數(shù)。2.2.7任務(wù)間有哪些狀態(tài)切換2、就緒態(tài)的最高優(yōu)先級任務(wù)獲得CPU使用權(quán)后,由就緒態(tài)進(jìn)入到執(zhí)行態(tài),此時原執(zhí)行態(tài)的任務(wù)有一個入棧的操作,將其運行環(huán)境保存在其獨立的堆棧中;而進(jìn)入執(zhí)行態(tài)的任務(wù)有一個出棧操作,恢復(fù)其運行環(huán)境,如果是第一次執(zhí)行,只有程序計數(shù)器指針(PC)指針是有意義的,其他的運行環(huán)境值(即CPU寄存器值)沒有意義,將在運行中被覆蓋掉。3、任一時刻,僅可能有一個任務(wù)處于執(zhí)行態(tài),執(zhí)行態(tài)的任務(wù)可以被中斷信號中斷,從而將CPU使用權(quán)轉(zhuǎn)讓給中斷服務(wù)程序,此時有一個入棧操作,保存當(dāng)前任務(wù)的執(zhí)行環(huán)境,從而該任務(wù)進(jìn)入中斷態(tài)。4、處于中斷態(tài)的任務(wù)相當(dāng)于一種特殊的就緒態(tài),當(dāng)中斷服務(wù)程序執(zhí)行完成后,系統(tǒng)會調(diào)度,從處于中斷態(tài)的任務(wù)和所有就緒態(tài)的任務(wù)中選擇優(yōu)先級最高的任務(wù)執(zhí)行,如果中斷態(tài)任務(wù)優(yōu)先級最高,當(dāng)然就會從中斷態(tài)恢復(fù)到執(zhí)行態(tài)了;如果有比中斷態(tài)任務(wù)優(yōu)先級高的就緒態(tài)任務(wù),則中斷態(tài)任務(wù)將進(jìn)入就緒態(tài)。5、當(dāng)執(zhí)行態(tài)的任務(wù)運行完畢后,CPU使用權(quán)會移交出去,此時有一個入棧操作,該任務(wù)將進(jìn)入到等待態(tài),即等待一定時間的延時或等待某個事件的發(fā)生。6、等待態(tài)任務(wù)將不斷地請求某個事件或查詢延時情況,直到滿足其執(zhí)行條件后,才從等待態(tài)進(jìn)入到就緒態(tài)。任何一個任務(wù)都不是每時每刻地執(zhí)行著,都是按照一定的時鐘節(jié)律在執(zhí)行,理論上,總可以把一個整體的不間斷地執(zhí)行的工作,分成這種節(jié)律性的任務(wù)來完成。7、就緒態(tài)、等待態(tài)和執(zhí)行態(tài)是任務(wù)的三個正常調(diào)度狀態(tài),當(dāng)任務(wù)仍然住留在內(nèi)存中,但是已不再受系統(tǒng)調(diào)度時,就進(jìn)入了休眠態(tài)。任務(wù)的休眠態(tài)和等待態(tài)是不同的,任務(wù)一旦進(jìn)入休眠態(tài),不會有堆棧操作,堆棧內(nèi)原有的運行環(huán)境也沒有意義了。休眠態(tài)的任務(wù)可以再次啟動進(jìn)入到就緒態(tài),這一過程和創(chuàng)建一個新的任務(wù)類似。2.2.8為什么堆棧操作越快越好正常任務(wù)的切換都會伴隨著二個堆棧操作,即放棄CPU占有權(quán)的任務(wù)入棧操作和獲得CPU使用權(quán)的任務(wù)出棧操作,因此,一個任務(wù)切換到另一個任務(wù),并不是一蹴而就的,而是中間需要有一些時間,這些必需的時間開銷實際上是任務(wù)執(zhí)行的額外開銷,即和任務(wù)執(zhí)行代碼無關(guān)的。由于這個原因,那些具有快速堆棧操作的CPU芯片在任務(wù)切換時效率更高。2.2.9任務(wù)調(diào)度的原則任務(wù)調(diào)度往往借助一定的算法規(guī)則的,從算法本質(zhì)意義上講,任務(wù)調(diào)度算法是一個查表算法,并且要求隨著任務(wù)數(shù)的增加(即表格的增大),這個查表算法查詢特定任務(wù)所需要的時間應(yīng)該大體相同或完全相同。μC/OS-II借助任務(wù)就緒表和基于該表的任務(wù)調(diào)度算法,保證了任務(wù)調(diào)度時間是確定的,不隨任務(wù)數(shù)的變化而變化。目前的嵌入式實時操作系統(tǒng)的任務(wù)調(diào)度均是基于優(yōu)先級的,即保證任一時刻就緒的最高優(yōu)先級任務(wù)得到CPU使用權(quán),這種調(diào)度方法稱為優(yōu)先級調(diào)度法。2.2.10什么是優(yōu)先級調(diào)度法即使有多個執(zhí)行權(quán)限相同的任務(wù),在單CPU系統(tǒng)下,也不可能同時執(zhí)行,仍然可以為它們劃分不同的優(yōu)先級。在這些情況下,可通過信號量、消息郵箱等實現(xiàn)這些任務(wù)的同步執(zhí)行。2.2.11為什么使用優(yōu)先級調(diào)度法?采用優(yōu)先級調(diào)度法進(jìn)行任務(wù)調(diào)度,調(diào)度算法實質(zhì)上就是如何從就緒的任務(wù)中查找優(yōu)先級最高的任務(wù),一般地優(yōu)先級號為整數(shù)值,若假設(shè)整數(shù)值越小,任務(wù)的優(yōu)先級越高,則調(diào)度算法就是從就緒的任務(wù)中找優(yōu)先級號最小的任務(wù)。顯然,這種基于整型值的查表是所有類型查表操作中最快的一種方法。2.2.12優(yōu)先級相同的任務(wù)的調(diào)度2.2.13調(diào)度器的工作流程當(dāng)中斷發(fā)生后,應(yīng)用程序會中止當(dāng)前程序的執(zhí)行,而跳轉(zhuǎn)到中斷服務(wù)例程,中斷服務(wù)程序執(zhí)行完畢后,將返回到被中止的程序段繼續(xù)執(zhí)行。從中斷信號產(chǎn)生到中斷服務(wù)程序的第一行指令被執(zhí)行的時間間隔為中斷響應(yīng)時間,這一過程需要完成當(dāng)前運行環(huán)境的入棧操作、關(guān)中斷、PC指針指向中斷服務(wù)程序等處理。2.2.14什么是中斷響應(yīng)時間?從中斷服務(wù)程序退出到恢復(fù)被中止的程序的執(zhí)行的時間間隔稱為中斷恢復(fù)(或返回)時間,這一過程需要完成恢復(fù)被中止的程序運行環(huán)境、開中斷、中斷返回(即PC指針指向被中止的程序節(jié)點)等處理。2.2.15什么是中斷恢復(fù)時間2.2.16嵌入式操作系統(tǒng)的實時性體現(xiàn)在哪些方面一、在硬件平臺上直接運行應(yīng)用程序,即祼機(jī)加載應(yīng)用程序,此時應(yīng)用程序的執(zhí)行效率最高;在硬件平臺上加載嵌入式操作系統(tǒng)后,再在嵌入式操作系統(tǒng)上運行應(yīng)用程序,由于使用了嵌入式操作系統(tǒng),應(yīng)用程序的執(zhí)行過程中會調(diào)用操作系統(tǒng)的服務(wù),應(yīng)用程序的執(zhí)行效率會有所下降。在這種意義上,嵌入式操作系統(tǒng)的實時性體現(xiàn)為加載了嵌入式操作系統(tǒng)后應(yīng)用程序的執(zhí)行效率與祼機(jī)下應(yīng)用程序的執(zhí)行效率相當(dāng)。二、由于中斷而造成的額外開銷時間為中斷響應(yīng)時間和中斷恢復(fù)時間的總和,在這種意義下,嵌入式操作系統(tǒng)的實時性在于中斷響應(yīng)時間和中斷恢復(fù)時間應(yīng)盡可能得小,盡可能與裸機(jī)加載應(yīng)用程序情況下的中斷額外開銷時間相當(dāng)。三、嵌入式操作系統(tǒng)的實時性還體現(xiàn)在應(yīng)用程序?qū)τ布Y源的訪問時間上,即借助操作系統(tǒng)API函數(shù)訪問硬件資源與直接訪問硬件資源的時間應(yīng)大體相當(dāng)。例如,應(yīng)用程序訪問隨機(jī)存儲器(RAM)的時間在有無操作系統(tǒng)下應(yīng)大約相同。四、嵌入式操作系統(tǒng)的實時性也體現(xiàn)在操作系統(tǒng)自身上,即沒有應(yīng)用程序運行的情況下,操作系統(tǒng)能有序高效地管理硬件資源,能正確地初始化或啟動各種硬件外設(shè),訪問硬件資源的時序得到實時性地滿足。2.2.17中斷處理過程2.3什么是資源資源是指嵌入式系統(tǒng)的宿主硬件系統(tǒng),具體地說,是指CPU、內(nèi)存、片上外設(shè)和各種輸入輸出設(shè)備等硬件資源,以及硬件系統(tǒng)中裝載的可供使用的軟件系統(tǒng)資源。從嵌入式操作系統(tǒng)的角度出發(fā),硬件資源可被抽象為寄存器或內(nèi)存地存空間,例如,顯示器被抽象為一塊顯示緩沖區(qū),即編了地址的內(nèi)存,簡稱顯存;鍵盤一般占用一個中斷輸入和一塊內(nèi)存區(qū)域等。因此,這里所謂的資源就是指被任務(wù)使用的寄存器或存儲空間。2.3.1什么是共享資源所謂的共享資源是指可被多個任務(wù)訪問的資源。2.3.2共享資源與全局變量的關(guān)系共享資源在被某個任務(wù)使用時,其他所有請求該共享資源的任務(wù)均無法使用該共享資源;某個任務(wù)要使用某個共享資源,那么該任務(wù)必須首先請求操作系統(tǒng)得到該共享資源,而不是直接使用;某個已經(jīng)得到了共享資源的任務(wù)在使用完該共享資源后,應(yīng)向操作系統(tǒng)釋放該共享資源的使用權(quán),從而使該共享資源可被其他任務(wù)使用;共享資源可被看作為嵌入式操作系統(tǒng)管理的一些特殊的全局變量,但注意區(qū)分它們與普通全局變量的異同點;信號量和消息郵箱等μC/OS-II的組件隸屬于共享資源的范疇。2.3.3什么是變量變量是數(shù)據(jù)結(jié)構(gòu)的載體,用以存放數(shù)據(jù)運算的初始值、中間結(jié)果和最終結(jié)果,一個變量對應(yīng)于內(nèi)存空間的某個地址。根據(jù)變量的作用域不同,變量分為全局變量和局部變量。一般地,每個函數(shù)里面出現(xiàn)的變量,其作用域為該變量定義起到該函數(shù)結(jié)束,由于作用域限于該函數(shù),故稱為局部變量。另一些變量被整個應(yīng)用程序所使用,從該變量定義起到應(yīng)用程序結(jié)束止,都在起作用,這類變量稱為全局變量。2.3.4任務(wù)中定義的變量屬性某個任務(wù)中的變量僅限于該任務(wù)所有,其他的任務(wù)對該變量不可見,相對于任務(wù)所在的應(yīng)用程序而言,這類變量是局部變量;但是,相對于任務(wù)調(diào)用的函數(shù)而言,由于任務(wù)中的函數(shù)均能無條件地使用這類變量,故這類變量又可稱為全局變量。2.3.5什么是可重入函數(shù)僅使用局部變量而不使用全局變量的函數(shù),稱為可重入函數(shù)。2.3.6什么是死鎖當(dāng)某個共享資源被一個任務(wù)使用時,其他的任務(wù)均無法使用該共享資源,如果正在使用共享資源的任務(wù)優(yōu)先級較低,當(dāng)某時刻較高優(yōu)先級的任務(wù)就緒將中斷當(dāng)前任務(wù)的執(zhí)行,如果高優(yōu)先級的任務(wù)也需要使用同一個共享資源,則因請求不到共享資源而處于持續(xù)請求狀態(tài);原來占用共享資源的任務(wù)因優(yōu)先級低而處于等待CPU狀態(tài),這種情況下系統(tǒng)調(diào)度器不能實現(xiàn)上述二個任務(wù)的調(diào)度,而處于死鎖狀態(tài)。2.3.7防止死鎖的方法1、臨時改變死鎖任務(wù)中低優(yōu)先級任務(wù)的優(yōu)先級,從P1臨時變?yōu)楸萈2優(yōu)先級高的P3,這樣,調(diào)度器會調(diào)度到P3任務(wù)執(zhí)行,執(zhí)行完后再回來執(zhí)行P2任務(wù),并且把P3任務(wù)的優(yōu)先級還原。在μC/OS-II中使用了這種方法。2、臨時改變死鎖任務(wù)中高優(yōu)先級任務(wù)的優(yōu)先級,從P2臨時變?yōu)楸萈1優(yōu)先級低的P4,這樣,調(diào)度器會調(diào)度到P1任務(wù)執(zhí)行,執(zhí)行完后再回來執(zhí)行P2任務(wù),并且把P4任務(wù)的優(yōu)先級還原。2.4什么是系統(tǒng)內(nèi)存一般地系統(tǒng)內(nèi)存被劃分為二個空間,即程序空間和數(shù)據(jù)空間。程序空間與數(shù)據(jù)空間是分開的,程序空間用于存儲可執(zhí)行代碼指令,數(shù)據(jù)空間用于堆和棧的空間分配。程序空間中存放各個代碼段指令時,一般是地址連續(xù)存放的,中間沒有空閑存儲區(qū);而數(shù)據(jù)空間中各個棧區(qū)的空間可隨意開辟,要保證各個棧的大小夠用,不需考慮棧區(qū)間是否相鄰,同樣堆的空間地址在數(shù)據(jù)區(qū)中也是任意的。2.4.1嵌入式系統(tǒng)內(nèi)存分配示意2.4.2什么是堆堆為應(yīng)用程序級別的全局變量。定義一個全局?jǐn)?shù)組,例如:“INT32UmyBuf[10][30];”,即在內(nèi)存中開辟了一個1200字節(jié)的堆。2.4.3什么是棧棧為任務(wù)級別的全局變量和局部變量。一般地,使用一維數(shù)組作為任務(wù)的棧,在這個意義上,可認(rèn)為棧是堆中的一塊固定的靜態(tài)空間。每個任務(wù)的棧區(qū)保存這個任務(wù)的運行環(huán)境和任務(wù)中調(diào)用的函數(shù)的參數(shù)及其局部變量。2.4.4什么是內(nèi)存碎片內(nèi)存碎片是針對堆而言的。2.4.5μC/OS-II如何解決內(nèi)存碎片問題使用靜態(tài)二維數(shù)組開辟出一塊大的空間;然后,任務(wù)中動態(tài)空間均從該靜態(tài)空間中申請,使用完后立即釋放。由于使用靜態(tài)數(shù)組作為動態(tài)分配的容器空間,因此,這種方法的優(yōu)點在于可以查詢空間中內(nèi)存的使用情況。2.5內(nèi)核的定義嵌入式實時操作系統(tǒng)有時也簡稱為內(nèi)核,應(yīng)用程序是加載于內(nèi)核之上的用戶程序。內(nèi)核的主要服務(wù)是任務(wù)調(diào)度,此外內(nèi)核中也提供了時鐘節(jié)拍服務(wù)和空閑任務(wù)等,常見的內(nèi)核分為二種類型,即不可搶先型內(nèi)核和可搶先型內(nèi)核。2.5.1什么是不可搶先型內(nèi)核2.5.2什么是可搶先型內(nèi)核2.5.3什么是時鐘節(jié)拍操作系統(tǒng)中每個任務(wù)都是在等待態(tài)、就緒態(tài)和執(zhí)行態(tài)三種狀態(tài)間有規(guī)律地循環(huán)往復(fù)工作著,時鐘節(jié)拍管理著那些處于等待態(tài)的任務(wù)的延時,一個時鐘節(jié)拍的大小是任務(wù)等待的最小延時,每個時鐘節(jié)拍到來后,系統(tǒng)將把等待態(tài)的每個任務(wù)的延時減少一個時鐘節(jié)拍值,并判斷每個任務(wù)是否等待結(jié)束,把結(jié)束等待的任務(wù)調(diào)度到就緒態(tài)。2.5.4時鐘節(jié)拍為什么不宜過大或過小時鐘節(jié)拍一般由硬件系統(tǒng)的定時器中斷產(chǎn)生,因此時鐘節(jié)拍在管理等待態(tài)任務(wù)的延時時會有中斷響應(yīng)和中斷恢復(fù)方面的額外開銷,如果時鐘節(jié)拍設(shè)定過小,將導(dǎo)致大量的這類額外開銷的CPU時間浪費,故時鐘節(jié)拍不應(yīng)設(shè)定過小。相反地,如果時鐘節(jié)拍值設(shè)定過大也不合適,會造成各個任務(wù)的延時分辨率大大降低,例如,時鐘節(jié)拍周期為5秒,那么延時1秒和延時9秒的二個任務(wù),雖然相差8秒,但是都只能設(shè)定延時一個時鐘節(jié)拍。實際中可根據(jù)任務(wù)的數(shù)量和CPU的處理能力設(shè)定時鐘節(jié)拍的周期,一般地可設(shè)為1ms-200ms。2.5.5只有時鐘節(jié)拍中斷時內(nèi)核服務(wù)情況2.5.6時鐘節(jié)拍和中斷都存在時的內(nèi)核服務(wù)情況2.5.7什么是空閑任務(wù)空閑任務(wù)一般不實現(xiàn)任何功能,只是簡單地占用了CPU而已;或者讓空閑任務(wù)作簡單的數(shù)值自增或自減操作,此時空閑任務(wù)可用于統(tǒng)計CPU的使用情況。此外,還可以根據(jù)實際情況使空閑任務(wù)關(guān)閉一些系統(tǒng)外設(shè),使CPU工作在低功耗模式。2.5.8空閑任務(wù)的優(yōu)先級是多少空閑任務(wù)是系統(tǒng)任務(wù),當(dāng)所有用戶任務(wù)均處于等待態(tài)時,CPU就空閑下來,這時系統(tǒng)會提供一個所謂的空閑任務(wù)進(jìn)入執(zhí)行態(tài)。空閑任務(wù)的優(yōu)先級最低,且永遠(yuǎn)處于就緒態(tài)中,如果就緒態(tài)中有用戶任務(wù)出現(xiàn),其優(yōu)先級必然比空閑任務(wù)高,從而搶到CPU使用權(quán)而得到執(zhí)行;當(dāng)就緒態(tài)中沒有用戶任務(wù)時,空閑任務(wù)成為唯一的就緒任務(wù),此時它得到CPU使用權(quán)。2.6信號量和互斥信號量的作用信號量的主要用途在于使一個任務(wù)同步另一個任務(wù)的執(zhí)行。普通的信號量用于保護(hù)共享資源時易造成死鎖,此時應(yīng)使用互斥信號量。2.6.1什么是信號量可把信號量比喻為一個全局計數(shù)器,這個計數(shù)器的值只能為0,1,2,3,……等自然數(shù)。信號量被創(chuàng)建時可以賦一個初始計數(shù)值;在任務(wù)中每“釋放”一次信號量,其計數(shù)值被加1。在任務(wù)中每“請求”一次信號量,如果該信號量的計數(shù)值大于0,則請求成功,其計數(shù)值被減1;如果信號量的計數(shù)值為0,則請求會失敗,信號量的值保持0不變。上述的“釋放”和“請求”是作用于信號量的二個主要操作,因此,在一個任務(wù)中有規(guī)律的釋放信號量,另一個任務(wù)持續(xù)不斷地請求信號量,則必然會導(dǎo)致請求信號量的任務(wù)按釋放信號量的任務(wù)的規(guī)律工作。2.6.2信號號請求與釋放示意圖2.6.3信號量同步示意2.6.4再次討論什么是死鎖假設(shè)任務(wù)A和B都要使用共享資源R1和R2,且任務(wù)A的優(yōu)先級高于任務(wù)B,使用信號量S1保護(hù)共享資源R1,信號量S2保護(hù)共享資源R2,信號量S1和S2的初值均為1。這二個任務(wù)執(zhí)行過程中可能會出現(xiàn)這種情況:某個時刻,任務(wù)B請求到信號量S1,使S1=0,任務(wù)B占用了共享資源R1,此時中斷發(fā)生了;然后,中斷返回后,操作系統(tǒng)調(diào)度到優(yōu)先級更高的任務(wù)A執(zhí)行(不妨認(rèn)為中斷服務(wù)程序使任務(wù)A就緒了),任務(wù)B被放入就緒表中;任務(wù)A執(zhí)行到某處后要使用共享資源R2,于是請求信號量S2并使S2=0,接著任務(wù)A又要使用共享資源R1,即請求信號量S1,而S1此時的值為0,故任務(wù)A處于持續(xù)請求等待狀態(tài);操作系統(tǒng)調(diào)度到任務(wù)B繼續(xù)執(zhí)行,此時任務(wù)B還在占用共享資源R1,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)產(chǎn)品電商農(nóng)村電商發(fā)展手冊
- 三農(nóng)村新型城鎮(zhèn)化發(fā)展規(guī)劃綱要
- 電影行業(yè)在線選座購票系統(tǒng)設(shè)計與實現(xiàn)方案
- 家居裝修行業(yè)智能設(shè)計與裝修管理方案
- 技改項目可行性報告
- 家庭太陽能光伏發(fā)電
- 施工安全保障措施方案
- 新興文化消費市場發(fā)展趨勢研究報告
- 三農(nóng)村合作社碳排放減少方案
- 乳制品行業(yè)風(fēng)味發(fā)酵乳生產(chǎn)技術(shù)研究與開發(fā)方案
- 鸚鵡介紹課件教學(xué)課件
- 汽車檢測技術(shù)課件 任務(wù)一 認(rèn)識汽車檢測站
- 貴州省2025年初中學(xué)業(yè)水平考試英語 模擬試題卷(一)(含答案不含聽力原文及聽力音頻)
- 電力系統(tǒng)運行維護(hù)預(yù)案
- GB/T 44561-2024石油天然氣工業(yè)常規(guī)陸上接收站液化天然氣裝卸臂的設(shè)計與測試
- 2024年國家公務(wù)員考試《行測》真題卷(副省級)答案及解析
- 分子生物學(xué)教案
- 鋁板施工組織設(shè)計方案
- 一年級語文下冊專項閱讀專項復(fù)習(xí)課件(課時)教學(xué)課件
- 天津市部分區(qū)2022-2023學(xué)年七下期中考試數(shù)學(xué)試卷(解析版)
- 統(tǒng)編版小學(xué)語文五年級下冊第二單元快樂讀書吧整本書閱讀課《西游記》課件
評論
0/150
提交評論