VxWorks概念
VxWorks操作系統(tǒng)的集成環(huán)境叫Tornado。Tornado集成環(huán)境提供了高效明晰的圖形化的實(shí)時(shí)應(yīng)用開(kāi)發(fā)平臺(tái),它包括一套完整的面向嵌入式系統(tǒng)的開(kāi)發(fā)和調(diào)測(cè)工具。Tornado環(huán)境采用主機(jī)-目標(biāo)機(jī)交*開(kāi)發(fā)模型,應(yīng)用程序在主機(jī)的Windows環(huán)境下編譯鏈接生成可執(zhí)行文件,下載到目標(biāo)機(jī),通過(guò)主機(jī)上的目標(biāo)服務(wù)器(Target ? Server)與目標(biāo)機(jī)上的目標(biāo)代理(Target ? Agent)的通信完成對(duì)應(yīng)用程序的調(diào)試、分析。它主要由以下幾部分組成: ? ??
? ??
? VxWorks高性能的實(shí)時(shí)操作系統(tǒng); ? ??
? * ? 應(yīng)用編譯工具; ? ??
? * ? 交互開(kāi)發(fā)工具; ? ??
? ??
? 下面對(duì)Tornado集成環(huán)境的各組件功能分別介紹: ? ??
? ??
? * ? Tornado開(kāi)發(fā)環(huán)境 ? ??
? Tornado是集成了編輯器、編譯器、調(diào)試器于一體的高度集成的窗口環(huán)境,同樣也可以從Shell窗口下發(fā)命令和瀏覽。 ? ??
? ??
? * ? WindConfig:Tornado系統(tǒng)配置 ? ??
? 通過(guò)WindConfig可選擇需要的組件組成VxWorks實(shí)時(shí)環(huán)境,并生成板級(jí)支持包BSP的配置。通過(guò)修改config.h可以實(shí)現(xiàn)WindConfig的所有功能,并且,可以實(shí)現(xiàn)WindConfig不能實(shí)現(xiàn)的功能。 ? ??
? ??
? * ? WindSh:Tornado外殼 ? ??
? WindSh是一個(gè)駐留在主機(jī)內(nèi)的C語(yǔ)言解釋器,通過(guò)它可運(yùn)行下載到目標(biāo)機(jī)上的所有函數(shù),包括VxWorks和應(yīng)用函數(shù)。Tornado外殼還能解釋常規(guī)的工具命令語(yǔ)言TCL。 ? ??
? ??
? WindSh不僅可以解釋幾乎所有的C語(yǔ)言表達(dá)式,而且可以實(shí)現(xiàn)所有的調(diào)試功能。它主要有以下調(diào)試功能:下載軟件模塊;刪除軟件模塊;產(chǎn)生任務(wù);刪除任務(wù);設(shè)置斷點(diǎn);刪除斷點(diǎn);運(yùn)行、單步、繼續(xù)執(zhí)行程序;查看內(nèi)存、寄存器、變量;修改內(nèi)存、寄存器、變量;查看任務(wù)列表、內(nèi)存使用情況、CPU利用率;查看特定的對(duì)象(任務(wù)、信號(hào)量、消息隊(duì)列、內(nèi)存分區(qū)、類(lèi));復(fù)位目標(biāo)機(jī)。 ? ??
? ??
? * ? 瀏覽器 ? ??
? Tornado瀏覽器可查看內(nèi)存分配情況、任務(wù)列表、CPU利用率、系統(tǒng)目標(biāo)(如任務(wù)、消息隊(duì)列、信號(hào)量等)。這些信息可周期性地進(jìn)行更新。 ? ??
? ??
? * ? CrossWind:源碼級(jí)調(diào)試器 ? ??
? 源碼級(jí)調(diào)試器CrossWind提供了圖形和命令行方式來(lái)調(diào)試,可進(jìn)行指定任務(wù)或系統(tǒng)級(jí)斷點(diǎn)設(shè)置、單步執(zhí)行、異常處理。 ? ??
? ??
? 有些功能如修改內(nèi)存、寄存器、變量的值通過(guò)菜單操作是無(wú)法實(shí)現(xiàn)的,需要在WindSh中執(zhí)行原語(yǔ)操作實(shí)現(xiàn)。 ? ??
? ??
? * ? 駐留主機(jī)的目標(biāo)服務(wù)器 ? ??
? 目標(biāo)服務(wù)器管理主機(jī)與目標(biāo)機(jī)的通信,所有與目標(biāo)機(jī)的交互工具都通過(guò)目標(biāo)服務(wù)器,它也管理主機(jī)上的目標(biāo)機(jī)符號(hào)表,提供目標(biāo)模塊的加載和卸載。 ? ??
? ??
? * ? Tornado注冊(cè)器 ? ??
? 所有目標(biāo)服務(wù)器注冊(cè)其提供的服務(wù)在注冊(cè)器中。注冊(cè)器映射用戶定義的目標(biāo)名到目標(biāo)服務(wù)器網(wǎng)絡(luò)地址。
?
任務(wù)間通信機(jī)制?
任務(wù)間通信機(jī)制是多任務(wù)間相互同步和通信以協(xié)調(diào)各活動(dòng)的主要手段,VxWorks提供的任務(wù)問(wèn)通信手段按其速度由 快到慢排列為信號(hào)量、消息隊(duì)列、管道到網(wǎng)絡(luò)透明的套接字。 本例子中,主要采用了共享內(nèi)存、信號(hào)量和消息隊(duì)列等手段實(shí)現(xiàn)任務(wù)間通信。任務(wù)間通信最直接、最明顯的方法是訪問(wèn)共享內(nèi)存數(shù)據(jù)結(jié)構(gòu),VxWorks操作系統(tǒng)采用的是 32位平滑內(nèi)存地址空間,所有任務(wù)共存于單一的地址空間,任一程序定義的各種類(lèi)型的全局變量都可以被任務(wù)直接訪問(wèn)。本系統(tǒng)中所有的全局控制參數(shù)數(shù)組都采用這種方法來(lái)訪問(wèn),雖然這種方法不是最好的,但是卻減少了函數(shù)調(diào)用時(shí)傳遞很多參數(shù)的 環(huán)節(jié),對(duì)于實(shí)時(shí)控制系統(tǒng)來(lái)說(shuō)是可取的。信號(hào)量是任務(wù)間通信同步互斥的最優(yōu)選擇,VxWorks提供3種信號(hào)量:二進(jìn)制,互斥和計(jì)數(shù)器信號(hào)量。常用的是二進(jìn)制信號(hào)量和互斥信號(hào)量。?????
通信機(jī)制還包含消息隊(duì)列、共享內(nèi)存等。
調(diào)度的概念?構(gòu)成應(yīng)用軟件系統(tǒng)的程序集合中,獨(dú)立的、相互作用的程序單元,在其執(zhí)行時(shí)稱(chēng)之為任務(wù)。單個(gè)CPU中,多任務(wù)機(jī)制制造了一個(gè)多個(gè)任務(wù)同時(shí)執(zhí)行的假象。其實(shí)系統(tǒng)只是根據(jù)一個(gè)多任務(wù)調(diào)度算法,將內(nèi)核插入到這些任務(wù)中執(zhí)行。任務(wù)由系統(tǒng)內(nèi)核調(diào)度運(yùn)行一段固定長(zhǎng)度的時(shí)間,稱(chēng)為間片。調(diào)度是指為任務(wù)分配資源和時(shí)間,使系統(tǒng)滿足特定的性能要求。調(diào)度算法的目的是在正常情況下,盡可能滿足所有任務(wù)的時(shí)限;在峰值負(fù)載條件下,保證強(qiáng)實(shí)時(shí)任務(wù)滿足時(shí)限。因?yàn)闀r(shí)限是區(qū)分實(shí)時(shí)系統(tǒng)和非實(shí)時(shí)系統(tǒng)的關(guān)鍵因素,因此調(diào)度算法是實(shí)時(shí)系統(tǒng)的基本問(wèn)題。實(shí)時(shí)操作具有的運(yùn)行性能,如吞吐量的大小、周轉(zhuǎn)時(shí)間的長(zhǎng)短、相應(yīng)的及時(shí)性和可預(yù)測(cè)性等在很大程度上都取決于實(shí)時(shí)調(diào)度。 調(diào)度的類(lèi)型?
雖然調(diào)度的主要 目的都是為了分配處理機(jī),但在不同的OS中所采用的調(diào)度方式是完全不同的。在執(zhí)行調(diào)度時(shí)所采用的調(diào)度算法也可能不同。因此,常按照調(diào)度的層次把調(diào)度分成高級(jí)、中級(jí)和低級(jí)調(diào)度。高級(jí)調(diào)度又稱(chēng)長(zhǎng)程調(diào)度或作業(yè)調(diào)度,用于決定把外存上處于后備隊(duì)列中的哪些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源,然后再將新創(chuàng)建的進(jìn)程排在就緒隊(duì)列上,準(zhǔn)備執(zhí)行。然而在實(shí)時(shí)系統(tǒng) 中,為了能及時(shí)響應(yīng),用戶通過(guò)鍵盤(pán)輸入的數(shù)據(jù)都是直接送入內(nèi)存 ,因而實(shí)時(shí)系統(tǒng)通常不需要作業(yè)調(diào)度。中級(jí)調(diào)度又稱(chēng)中程調(diào)度,引入它的主要 目的是為了提高內(nèi)存利用率和系統(tǒng)吞吐量。它使那些暫時(shí)不能運(yùn)行的進(jìn)程不再占用寶貴的內(nèi)存空間,而將它們調(diào)到外存上去等待,此時(shí)的狀態(tài)稱(chēng)為掛起狀態(tài)。當(dāng)這些進(jìn)程重新具備運(yùn)行條件,且內(nèi)存又有空閑,由中級(jí)調(diào)度決定,將外存上的那些重新具備運(yùn)行條件的就緒進(jìn)程重新調(diào)入內(nèi)存,并使它
為就緒狀態(tài),掛在就緒隊(duì)列上等待進(jìn)程調(diào)度。低級(jí)調(diào)度又稱(chēng)進(jìn)程調(diào)度。它決定就緒隊(duì)列中的哪個(gè)進(jìn)程將獲得處理機(jī),然后由分派程序執(zhí)行把處理機(jī)分配給該進(jìn)程的操作。進(jìn)程調(diào)度是最基本的一種調(diào)度,各種 OS中都必須配置這級(jí)調(diào)度。進(jìn)程調(diào)度可采用下述兩種方式。
1)非搶占方式。采用這種調(diào)度方式,一旦把處理機(jī)分配給某進(jìn)程后,便讓該進(jìn)程一直執(zhí)行,直到該進(jìn)程完成或發(fā)生某事件而被阻塞,才再把處
理機(jī)分配給其他進(jìn)程,決不允許某進(jìn)程搶占已經(jīng)分配出去的處理機(jī)。顯然它難于滿足緊急任務(wù)的要求 ,實(shí)時(shí)系統(tǒng) 中不宜采用這種調(diào)度方式。
2)搶占方式。允許調(diào)度程序根據(jù)某種原則,去停止某個(gè)正在執(zhí)行的進(jìn)程,將已分配給該進(jìn)程的處理機(jī) ,重新分配給另一進(jìn)程。搶占的原則有:
①時(shí)間片原則。各進(jìn)程按時(shí)間片運(yùn)行,當(dāng)一個(gè)時(shí)間片用完后,便停止該進(jìn)程的執(zhí)行而重新進(jìn)行調(diào)度。
②優(yōu)先權(quán)原則。當(dāng)一個(gè)進(jìn)程到來(lái)時(shí),如果其優(yōu)先級(jí)比正在執(zhí)行的進(jìn)程的優(yōu)先級(jí)高,便停止正在執(zhí)行的進(jìn)程,將處理機(jī)分配給優(yōu)先級(jí)高的進(jìn)程,
使之執(zhí)行。實(shí)時(shí)系統(tǒng) 中一般采用基于優(yōu)先級(jí)的搶占式調(diào)度和輪轉(zhuǎn)調(diào)度的進(jìn)程調(diào)度和中程調(diào)度相結(jié)合的調(diào)度策略。因此既可具有較大的靈活性,又能獲得極小的調(diào)度延遲。?
調(diào)度隊(duì)列模型?
1? 僅有進(jìn)程調(diào)度的調(diào)度隊(duì)列模型就緒態(tài)的進(jìn)程排在就緒隊(duì)列中,按時(shí)間片輪轉(zhuǎn)調(diào)度運(yùn)行 ,每個(gè)進(jìn)程執(zhí)行時(shí),都可能出現(xiàn)以下3種情況。?
1)任務(wù)在時(shí)間片內(nèi)完成,則該任務(wù)釋放處理機(jī),該進(jìn)程完成。
2)任務(wù)在時(shí)間片內(nèi)未完成,則 OS將該進(jìn)程放在就緒隊(duì)列的末尾,等待下一輪調(diào)度。?
3)任務(wù)在執(zhí)行期間,進(jìn)程被阻塞后,OS將該進(jìn)程放入阻塞隊(duì)列。
2 引入中級(jí)調(diào)度的調(diào)度隊(duì)列模型?
較完善的 OS中,除設(shè)置了進(jìn)程調(diào)度外,還引入中級(jí)調(diào)度來(lái)改善內(nèi)存的利用率。當(dāng)在 OS引入中級(jí)調(diào)度后,可把進(jìn)程的就緒狀態(tài)分為內(nèi)存就緒?
態(tài)(進(jìn)程在內(nèi)存中就緒)、外存就緒態(tài)(進(jìn)程在外存中就緒);把阻塞狀態(tài)分為內(nèi)存阻塞和外存阻塞。在調(diào)出操作的作用下,可使內(nèi)存就緒轉(zhuǎn)變?yōu)?
外存就緒、內(nèi)存阻塞轉(zhuǎn)變?yōu)橥獯孀枞?#xff1b;在中級(jí)調(diào)度的作用下,可使外存就緒轉(zhuǎn)變?yōu)閮?nèi)存就緒。
?VxWorks實(shí)時(shí)內(nèi)核 Wind調(diào)度分析?
Wind內(nèi)核缺省調(diào)度機(jī)制為基于優(yōu)先級(jí)的搶 占式調(diào)度。采用這種機(jī)制時(shí),系統(tǒng)把處理機(jī)分配 給優(yōu)先級(jí)最高的進(jìn)程,使之執(zhí)行。一旦出現(xiàn)了另一
個(gè)優(yōu)先級(jí)更高的進(jìn)程時(shí),進(jìn)程調(diào)度程序剝奪當(dāng)前任務(wù)的執(zhí)行,將處理機(jī)分配給高優(yōu)先級(jí)任務(wù)而在相同優(yōu)先級(jí)的多個(gè)任務(wù)之間,采用時(shí)間片輪轉(zhuǎn)調(diào)度機(jī)制。采用這種機(jī)制時(shí),當(dāng)一個(gè)任務(wù)到達(dá)時(shí),它被排在輪轉(zhuǎn)隊(duì)列的后面,等待分配給自己的時(shí)間片的到來(lái),如果在時(shí)間片內(nèi)沒(méi)有結(jié)束,則再等待屬于自己的時(shí)間片的到來(lái),直到任務(wù)完成。?
1? 基于優(yōu)先級(jí)的搶占式調(diào)度?
采用基于優(yōu)先級(jí)的搶 占式調(diào)度,系統(tǒng)中每個(gè)任務(wù)都有一個(gè)介于最高0到最低 255之間的優(yōu)先級(jí)。任一時(shí)刻,系統(tǒng)內(nèi)核一旦發(fā)現(xiàn)一個(gè)優(yōu)先級(jí)更高的任務(wù)轉(zhuǎn)變?yōu)榫途w態(tài),內(nèi)核就保存當(dāng)前任務(wù)的上下文并把 當(dāng)前任務(wù)狀態(tài)轉(zhuǎn)換為阻塞態(tài),同時(shí)切換到這個(gè)高優(yōu)先級(jí)任務(wù)的上下文執(zhí)行。
2 輪轉(zhuǎn)調(diào)度算法?
采用輪轉(zhuǎn)調(diào)度算法,系統(tǒng)讓處于就緒態(tài)的優(yōu)先級(jí)相同的一組任務(wù)依次輪流執(zhí)行預(yù)先確定長(zhǎng)度的時(shí)間片。這是一種處理機(jī)平均分配的方法。如果不使用輪轉(zhuǎn)調(diào)度算法,優(yōu)先級(jí)相同的一組任務(wù)中第一個(gè)獲得處理機(jī)的任務(wù)將不會(huì)被阻塞而獨(dú)占處理機(jī),如果沒(méi)有阻塞或其他情況發(fā)生,它不會(huì)放棄處理機(jī)的使用權(quán)。
3 基于優(yōu)先級(jí)的搶占式調(diào)度與輪轉(zhuǎn)調(diào)度相結(jié)合?
有時(shí) ,基于優(yōu)先級(jí)的搶占式調(diào)度可與輪轉(zhuǎn)調(diào)度相結(jié)合。當(dāng)優(yōu)先級(jí)相同的一組任務(wù)依次輪流平均分配處理機(jī)時(shí),若有高優(yōu)先級(jí)的任務(wù)轉(zhuǎn)變?yōu)榫途w態(tài)則可搶占該組任務(wù)。直到再一次符合執(zhí)行條件時(shí),該組任務(wù)才可再次共享處理機(jī)。 為了任務(wù)控制的靈活性 ,Wind內(nèi)核還提供了動(dòng)態(tài)優(yōu)先級(jí)機(jī)制,任務(wù)的優(yōu)先級(jí)在運(yùn)行期間可動(dòng)態(tài)地變化。同時(shí),為了防止優(yōu)先級(jí)反轉(zhuǎn),還具有優(yōu)先級(jí)繼承機(jī)制,通過(guò)使用互斥信號(hào)量可以防止高優(yōu)先級(jí)的任務(wù)被迫等待一段不確定時(shí)間,直到一個(gè)低優(yōu)先級(jí)任務(wù)完成。
總結(jié)
- 上一篇: 信用卡注销后还会产生费用吗
- 下一篇: vxworks 调式