記錄儀實(shí)時(shí)多任務(wù)的研究
2011-08-29實(shí)時(shí)多任務(wù)系統應用極其廣泛,幾乎滲透到各行各業(yè),系統分類(lèi)也很復雜。在嵌入式系統中,實(shí)時(shí)多任務(wù)機制是依靠啟動(dòng)之后運行的一段后臺任務(wù)管理程序實(shí)現的。應用程序運行在該管理器程序之上。后臺根據各個(gè)任務(wù)的要求,進(jìn)行資源管理、消息管理、任務(wù)調度、異常處理等工作。其首要目的是調度一切可利用的資源實(shí)現實(shí)時(shí)控制任務(wù)。
實(shí)時(shí)系統主要有兩大類(lèi):軟實(shí)時(shí)系統和硬實(shí)時(shí)系統。軟實(shí)時(shí)系統的宗旨是使各個(gè)任務(wù)運行的越快越好,并不要求限定某一任務(wù)必須在多長(cháng)時(shí)間內完成。在硬實(shí)時(shí)系統中,各任務(wù)不僅要執行無(wú)誤而且要做到準時(shí)。大多數實(shí)時(shí)系統都是二者的結合。對于一個(gè)復雜任務(wù)系統,任務(wù)調度模式的選用是其系統架構的一個(gè)重點(diǎn)。無(wú)紙記錄儀具有多層次的界面管理和較高的實(shí)時(shí)響應需求,由此選擇與之相適應的系統任務(wù)調度模式是勢在必行的。
本論文綜合考慮了各任務(wù)響應的實(shí)時(shí)性需求,對任務(wù)進(jìn)行了創(chuàng )造性的調整,進(jìn)而將軟實(shí)時(shí)系統和硬實(shí)時(shí)系統進(jìn)行了有機的結合,規劃出最為合理的任務(wù)調度模式。
1、記錄儀實(shí)時(shí)多任務(wù)的特點(diǎn)
通常的實(shí)時(shí)多任務(wù)操作系統都比較龐大,對于由單片機(80C320)組成的實(shí)時(shí)系統是不適用的。由于單片機的運算能力和內存有限,要求實(shí)時(shí)操作系統具有簡(jiǎn)單實(shí)用、高效可靠的特性。就記錄儀而言,其任務(wù)和功能是預知的,則內存和文件管理系統可簡(jiǎn)化,甚至取消[1]。因為任務(wù)對存儲器的要求是明確的,這樣就可以使用固定和獨立的存儲區域分配方案,無(wú)需通過(guò)OS來(lái)控制和分配。因此,實(shí)時(shí)多任務(wù)操作系統就可以簡(jiǎn)化為基于任務(wù)調度與時(shí)鐘中斷管理為核心的調度模塊。記錄儀中的任務(wù)狀態(tài)有四種:運行、就緒、等待、掛起,睡眠狀態(tài)并入等待,不再另加以區分。
2、任務(wù)的劃分、組織和調度
2.1任務(wù)的劃分
在單片機實(shí)時(shí)多任務(wù)系統中,實(shí)現實(shí)時(shí)多任務(wù)機制的關(guān)鍵在于將系統功能合理地分解成各個(gè)任務(wù)模塊。劃分任務(wù)的原則:功能相對獨立,并能與其他程序同時(shí)執行的程序劃分為一個(gè)任務(wù)。但任務(wù)劃分不能太細,否則將增加任務(wù)切換的系統開(kāi)銷(xiāo),降低系統效率并影響系統響應的實(shí)時(shí)性。文獻[2]指出,應盡量將關(guān)系密切的任務(wù)合并,減少任務(wù)間的通信。綜合考慮任務(wù)的實(shí)時(shí)性和執行時(shí)間,記錄儀的十個(gè)任務(wù)可分為三類(lèi):
(1)高優(yōu)先級任務(wù):下位機上傳采樣值的處理,虛擬通道組織,報警處理。這類(lèi)任務(wù)實(shí)時(shí)性要求高,執行時(shí)間<0.1s,如采樣值處理任務(wù),記錄儀要保存采樣值作為歷史數據,保存過(guò)程中要加上時(shí)標,采樣值正確而時(shí)標錯誤的記錄是無(wú)效的。
(2)低優(yōu)先級任務(wù):按鍵響應、顯示、PID控制、流量積算。這類(lèi)任務(wù)執行時(shí)間<0.2s,任務(wù)實(shí)時(shí)性要求一般。如按鍵響應任務(wù),延遲0.5s是可以容忍的。
(3)后臺任務(wù):存儲、打印、與管理機(PC)通信。這類(lèi)任務(wù)的執行時(shí)間>1s,對實(shí)時(shí)性的要求最低。
2.2任務(wù)的組織
系統上電,初始化每個(gè)任務(wù)的固定任務(wù)棧,建立任務(wù)隊列狀態(tài)表和任務(wù)控制表(TCB),這兩張表是任務(wù)調度的依據。任務(wù)隊列狀態(tài)表由高優(yōu)先級、低優(yōu)先級、后臺任務(wù)三張子表組成;任務(wù)控制表由任務(wù)首地址、狀態(tài)寄存器、任務(wù)局部變量三部分組成,數據結構見(jiàn)圖1。
2.3基于消息驅動(dòng)機制的任務(wù)調度
借鑒面向對象程序設計的思想,在記錄儀程序中引入消息概念,將任務(wù)的執行條件轉換為消息,由消息對相應的任務(wù)進(jìn)行激活,并由任務(wù)調度模塊實(shí)現調度。消息定義為:當某個(gè)事件(如中斷或某任務(wù)完成)發(fā)生時(shí),事件處理程序設置相應的標志,不同的標志代表不同的消息。事件處理程序可以是中斷服務(wù)程序,也可以是執行后需設置的標志的任務(wù),因此,記錄儀中任務(wù)的調度是基于消息機制來(lái)驅動(dòng)的。消息在多任務(wù)程序中的作用相當于橋梁,使任務(wù)間既相互獨立又有機關(guān)聯(lián),任務(wù)之間不能直接調用,需借助消息,由任務(wù)調度模塊實(shí)施。
中斷服務(wù)程序由中斷消息(標志)處理程序和中斷任務(wù)處理程序兩部分組成,前者僅僅完成消息(標志)處理就退出中斷,而中斷真正要完成的操作,是在任務(wù)調度模塊的協(xié)調下,由中斷任務(wù)處理程序來(lái)完成。如按下顯示,則按鍵中斷消息處理程序只產(chǎn)生一個(gè)按鍵消息(標志)就退出中斷,而調度模塊依據按鍵消息,調用按鍵中斷任務(wù)處理程序獲取鍵值,并產(chǎn)生顯示消息。調度模塊依據顯示消息,調用顯示任務(wù)程序。
3、實(shí)時(shí)多任務(wù)調度策略
多任務(wù)的系統,通常采用內核來(lái)管理各個(gè)任務(wù),也就是通過(guò)內核為每個(gè)任務(wù)分配CPU時(shí)間,并負責任務(wù)之間的通信。根據任務(wù)的調度機制,可以分為非占先式內核和占先式內核。前者要求每個(gè)任務(wù)能夠主動(dòng)釋放CPU等資源,后者則支持對當前任務(wù)的CPU使用權的剝奪,從而使更高優(yōu)先級就緒任務(wù)得到CPU控制權進(jìn)而執行。
嵌入式系統采用何種調度策略,通常要考慮三個(gè)因素:系統的處理能力,任務(wù)的數目,系統對響應時(shí)間和執行效率的要求。搶占式調度能改善高優(yōu)先級任務(wù)的實(shí)時(shí)性,但系統開(kāi)銷(xiāo)較大;非搶占式調度恰好與搶占式相反。針對記錄儀,提出搶占式和非搶占式的復合多任務(wù)調度策略。記錄儀的正常工作周期為1s,調度模塊的工作周期亦為1s,并將1s分為三個(gè)時(shí)段:0s-0.5s,0.5-0.8s,0.8s-1s,實(shí)時(shí)時(shí)鐘在0s,0.5s,0.8s各產(chǎn)生一次中斷,將Time-flag分別設置為0,5,8,并將Attemper-flag置為0。任務(wù)調度程序框圖如圖2所示。
在記錄儀一個(gè)工作周期(1s)內,復合調度策略,允許高優(yōu)先級任務(wù)三次搶占低優(yōu)先級和后臺任務(wù),而低優(yōu)先級任務(wù)具有兩次搶占后臺任務(wù)的權力。因此,高優(yōu)先級任務(wù)的響應時(shí)間t≤0.5s,低優(yōu)先級任務(wù)的響應時(shí)間t≤0.7s。由于搶占的次數有限,所以任務(wù)切換開(kāi)銷(xiāo)不大,有利于提高系統效率。
搶占式和非搶占式的復合多任務(wù)調度策略已成功應用于某記錄儀,達到了預期的目標。