單片機(jī)在系統(tǒng)中充當(dāng)CPU的角色,需要同時處理多個事務(wù)。如與PC機(jī)通信,將收到的信息轉(zhuǎn)發(fā)給從機(jī),監(jiān)視數(shù)據(jù)處理情況等一些繁雜而又重要的事情。如何協(xié)調(diào)好各個事務(wù)之間的關(guān)系,并有條不紊的執(zhí)行各個事務(wù),這就需要在編寫程序時采用合適的算法進(jìn)行處理。
一般的方法就是在單片機(jī)中移植操作系統(tǒng),由操作系統(tǒng)來管理各個事務(wù)。但由于系統(tǒng)要占用一定的內(nèi)部資源,這對本身資源非常有限的單片機(jī)來說是不現(xiàn)實(shí)的。所以,很少在單片機(jī)中采用操作系統(tǒng),而是采用時間片輪詢調(diào)度的方法進(jìn)行各任務(wù)的管理。
時間片,簡單來說就是CPU分配給各個程序的時間,使各個程序從表面上看是同時進(jìn)行的,而不會造成CPU資源浪費(fèi)。
在宏觀上:我們可以同時打開多個應(yīng)用程序,每個程序并行不悖,同時運(yùn)行。但是在微觀上:由于只有一個CPU,一次只能處理程序要求的一部分,如何處理公平,一種方法就是引入時間片,每個程序輪流執(zhí)行。
時間片輪詢調(diào)度是一種古老而又簡單的算法,廣泛運(yùn)用于無操作系統(tǒng)的微處理器中。在系統(tǒng)中,每個進(jìn)程被分配一個時間段,稱作時間片,即該進(jìn)程允許運(yùn)行的時間。
如果在時間片結(jié)束時進(jìn)程還在運(yùn)行,則CPU將被剝奪并分配給另一個進(jìn)程。如果進(jìn)程在時間片結(jié)束前阻塞或結(jié)束,則CPU當(dāng)即進(jìn)行切換。調(diào)度程序所要做的就是維護(hù)一張就緒進(jìn)程列表,當(dāng)進(jìn)程用完它的時間片后,它被移到隊(duì)列的末尾。
時間片輪詢調(diào)度中有趣的一點(diǎn)是如何確定時間片的長度。從一個進(jìn)程切換到另一個進(jìn)程是需要一定時間的,因?yàn)橐4婧脱b入寄存器值及內(nèi)存映像等保護(hù)現(xiàn)場的工作,更新各種表格和隊(duì)列等。假如進(jìn)程切換,有時稱為上下文切換,需要的時間為5毫秒,再假設(shè)時間片長度設(shè)定為20毫秒,則在做完20毫秒有用的工作之后,CPU將花費(fèi)5毫秒來進(jìn)行進(jìn)程切換。CPU時間的20%被浪費(fèi)在了管理開銷上。
進(jìn)程切換時間一定的情況下,如果時間片長度設(shè)定的越小時,這種浪費(fèi)更明顯。所以,時間片長度與CPU利用率是一對不可調(diào)和的矛盾,必須處理好它們之間的關(guān)系。
為了提高CPU效率,我們可以將時間片長度設(shè)得大一些,這時浪費(fèi)的時間只有就會相對減小。但在一個分時系統(tǒng)中,各個任務(wù)對時間片長度的要求是不一致的。例如在一個系統(tǒng)中,可能要求每秒鐘更新一下顯示內(nèi)容,每幾十毫秒要掃描一下按鍵,每幾毫秒要檢測一下串口緩沖區(qū)等……可見,各個任務(wù)對時間的依賴程度是不一樣的。如果時間片設(shè)得太長,某些對實(shí)時性要求高的任務(wù)可能得不到執(zhí)行,使得系統(tǒng)的實(shí)時性變差。
總之,時間片的設(shè)定應(yīng)滿足對實(shí)時性要求最高的那個任務(wù),這樣才能確保每個任務(wù)都可以及時得到執(zhí)行而不被錯過。
時間片輪轉(zhuǎn)調(diào)度算法基本原理
在早期的時間片輪轉(zhuǎn)法中,系統(tǒng)將所有的就緒進(jìn)程按先來先服務(wù)的原則,排成一個隊(duì)列,每次調(diào)度時,把CPU分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個時間片。
時間片的大小從幾ms到幾百ms.當(dāng)執(zhí)行的時間片用完時,由一個計(jì)時器發(fā)出時鐘中斷請求,調(diào)度程序便據(jù)此信號來停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾;然后,再把處理機(jī)分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程,同時也讓它執(zhí)行一個時間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程,在一給定的時間內(nèi),均能獲得一時間片的處理機(jī)執(zhí)行時間。
單片機(jī)時間片輪詢和時間調(diào)度的區(qū)別
單片機(jī)時間片輪詢和時間調(diào)度是兩個與任務(wù)管理相關(guān)的概念,它們在實(shí)現(xiàn)方式和目的上存在一些區(qū)別。
時間片輪詢是一種任務(wù)調(diào)度方法,它將時間分時,分別分配給不同的任務(wù)去執(zhí)行任務(wù)。每個任務(wù)被分配一個時間段,即時間片,用于執(zhí)行其操作。當(dāng)時間片結(jié)束時,如果任務(wù)仍在運(yùn)行,CPU將被剝奪并分配給另一個任務(wù)。這種方法的目的是確保每個任務(wù)都有機(jī)會執(zhí)行,從而實(shí)現(xiàn)多個任務(wù)之間的公平運(yùn)行。時間片輪詢常用于無操作系統(tǒng)的微處理器中,它維護(hù)一張就緒進(jìn)程列表,當(dāng)進(jìn)程用完它的時間片后,它被移到隊(duì)列的末尾。
而時間調(diào)度則是一種更廣泛的概念,它涉及對任務(wù)執(zhí)行順序和時間的整體管理。時間調(diào)度可以包括多種不同的算法和策略,以優(yōu)化系統(tǒng)性能、響應(yīng)時間和任務(wù)完成率。它可能考慮任務(wù)的優(yōu)先級、資源需求、依賴關(guān)系等因素,以確定任務(wù)的執(zhí)行順序和時間。時間調(diào)度不僅關(guān)注任務(wù)的公平運(yùn)行,還關(guān)注整體系統(tǒng)效率和任務(wù)完成的質(zhì)量。
單片機(jī)時間片輪詢是時間調(diào)度的一種具體實(shí)現(xiàn)方式,它關(guān)注于將時間分配給不同的任務(wù)以確保公平運(yùn)行。而時間調(diào)度則是一個更廣泛的概念,涉及任務(wù)執(zhí)行順序和時間的整體管理,可以包含多種不同的算法和策略。
單片機(jī)中的任務(wù)調(diào)度和時間管理是一個復(fù)雜且多樣的領(lǐng)域,不同的系統(tǒng)和應(yīng)用可能會采用不同的方法和策略。因此,在實(shí)際應(yīng)用中,需要根據(jù)具體需求和系統(tǒng)特點(diǎn)來選擇合適的任務(wù)調(diào)度和時間管理方法。
審核編輯:黃飛
-
單片機(jī)
+關(guān)注
關(guān)注
6078文章
45593瀏覽量
673988 -
cpu
+關(guān)注
關(guān)注
68文章
11332瀏覽量
225994 -
算法
+關(guān)注
關(guān)注
23文章
4810瀏覽量
98610 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7443瀏覽量
129644 -
微處理器
+關(guān)注
關(guān)注
11文章
2440瀏覽量
86174
發(fā)布評論請先 登錄
請問UCOSIII時間片輪轉(zhuǎn)調(diào)度執(zhí)行任務(wù)的先后順序能設(shè)置嗎?
ucos時間片輪轉(zhuǎn)調(diào)度同優(yōu)先級的兩個任務(wù)是同時進(jìn)行嗎?
為什么時間片輪轉(zhuǎn)調(diào)度實(shí)驗(yàn)中時間片不起作用?
UCOS III時間片輪轉(zhuǎn)調(diào)度問題
ask2和task3使用時間片輪轉(zhuǎn)調(diào)度執(zhí)行完后不會回到task1怎么辦?
ucosIII時間輪轉(zhuǎn)調(diào)度是否需要轉(zhuǎn)讓CPU使用權(quán)?
UCOSiii時間片輪轉(zhuǎn)調(diào)度printf打印不太正常的解決辦法?
怎樣利用時間片輪轉(zhuǎn)調(diào)度算法去實(shí)現(xiàn)同步時間調(diào)度的程序呢
調(diào)度器的原理及其任務(wù)調(diào)度代碼實(shí)現(xiàn)
UCOIII時間片輪轉(zhuǎn)法主要有哪些應(yīng)用呢
UCOSIII的任務(wù)管理與任務(wù)調(diào)度和切換簡述
rtthread nano時間片輪轉(zhuǎn)調(diào)度線程失敗怎么辦呢?
嵌入式實(shí)時操作系統(tǒng)VxWorks內(nèi)核調(diào)度機(jī)制分析
UCOS擴(kuò)展例程-UCOSIII時間片輪轉(zhuǎn)調(diào)度
UCOIII時間片輪轉(zhuǎn)調(diào)度
什么是時間片輪轉(zhuǎn)調(diào)度?時間片輪轉(zhuǎn)調(diào)度算法基本原理
評論