<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 學(xué)習方法與實(shí)踐 > 實(shí)時(shí)操作系統VxWorks的內核任務(wù)調度研究

實(shí)時(shí)操作系統VxWorks的內核任務(wù)調度研究

作者:羅修波 時(shí)間:2008-03-19 來(lái)源: 收藏

      1、引言
   

本文引用地址:http://dyxdggzs.com/article/80294.htm

       VxWorks操作系統是WindRiver公司開(kāi)發(fā)的一種高性能的嵌入式實(shí)時(shí)操作系統。它帶有一個(gè)功能強大的集成開(kāi)發(fā)系統環(huán)境Tornado。

        VxWorks具有軟件生成代碼小、實(shí)時(shí)性強及響應速度快等特點(diǎn),特別適合于具有實(shí)時(shí)和多任務(wù)要求的系統。VxWorks自20世紀80年代問(wèn)世以來(lái),以其高性能、高可靠性、高實(shí)時(shí)性等特點(diǎn)成為實(shí)時(shí)操作系統中最具特色的系統。自1996年登陸中國,短短幾年就已成為國防、工業(yè)自動(dòng)化、網(wǎng)絡(luò )通信、航空航天、醫療儀器、狀態(tài)監控以及消費電子產(chǎn)品等嵌入式實(shí)時(shí)領(lǐng)域的首選操作系統。由于嵌入式實(shí)時(shí)操作系統在內核方面具有自身的特點(diǎn),本文著(zhù)重對實(shí)時(shí)內核中任務(wù)調度進(jìn)行了詳細分析。

       2、任務(wù)調度概述

      2.1 調度的概念
   

       構成應用軟件系統的程序集合中,獨立的、相互作用的程序單元,在其執行時(shí)稱(chēng)之為任務(wù)。單個(gè)CPU 中,多任務(wù)機制制造了一個(gè)多個(gè)任務(wù)同時(shí)執行的假象。其實(shí)系統只是根據一個(gè)多任務(wù)調度算法,將內核插入到這些任務(wù)中執行。實(shí)時(shí)系統VxWorks的一個(gè)任務(wù)可有多種狀態(tài),但最基本的狀態(tài)有以下四種:

      1) 就緒態(tài)(Ready):任務(wù)只等待系統分配CUP資源。
      2) 掛起態(tài)(Pend):任務(wù)需等待某些不可利用的資源而被阻塞。
      3) 休眠態(tài)(Sleep):如果系統不需要某一個(gè)任務(wù)工作,則這個(gè)任務(wù)處于休眠狀態(tài)。
      4) 延遲態(tài)(Delay):任務(wù)被延遲時(shí)所處的狀態(tài)。
   

       當系統函數對某一個(gè)任務(wù)進(jìn)行操作時(shí),任務(wù)從一種狀態(tài)躍遷到另一種狀態(tài)。處于任一狀態(tài)的任務(wù)都可被刪除。VxWorks的任務(wù)躍遷如圖1所示。

        任務(wù)由系統內核調度運行一段固定長(cháng)度的時(shí)間,稱(chēng)為時(shí)間片。調度是指為任務(wù)分配資源和時(shí)間,使系統滿(mǎn)足特定的性能要求。調度算法的目的是在正常情況下,盡可能滿(mǎn)足所有任務(wù)的時(shí)限:在峰值負載條件下,保證強實(shí)時(shí)任務(wù)滿(mǎn)足時(shí)限。因為時(shí)限是區分實(shí)時(shí)系統和非實(shí)時(shí)系統的關(guān)鍵因素,因此調度算法是實(shí)時(shí)系統的基本問(wèn)題。實(shí)時(shí)操作系統所具有的運行性能,如吞吐量的大小、周轉時(shí)間的長(cháng)短、相應的及時(shí)性和可預測性等在很大程度上都取決于實(shí)時(shí)調度。

      2.2調度的類(lèi)型
   

       雖然調度的主要目的都是為了分配處理機,但在不同的OS中所采用的調度方式是完全不同的。在執行調度時(shí)所采用的調度算法也可能不同。因此,常按照調度的層次把調度分成高級、中級和低級調度。
   

       高級調度又稱(chēng)長(cháng)程調度或作業(yè)調度,用于決定把外存上處于后備隊列中的哪些作業(yè)調入內存,并為它們創(chuàng )建進(jìn)程、分配必要的資源,然后再將新創(chuàng )建的進(jìn)程排在就緒隊列上,準備執行。然而在實(shí)時(shí)系統中,為了能及時(shí)響應,用戶(hù)通過(guò)鍵盤(pán)輸入的數據都是直接送入內存,因而實(shí)時(shí)系統通常不需要作業(yè)調度。
   

       中級調度又稱(chēng)中程調度,引入它的主要目的是為了提高內存利用率和系統吞吐量。它使那些暫時(shí)不能運行的進(jìn)程不再占用寶貴的內存空間,而將它們調到外存上去等待,此時(shí)的狀態(tài)稱(chēng)為掛起狀態(tài)。當這些進(jìn)程重新具備運行條件,且內存又有空閑,由中級調度決定,將外存上的那些重新具備運行條件的就緒進(jìn)程重新調入內存,并使它為就緒狀態(tài),掛在就緒隊列上等待進(jìn)程調度。
   

        低級調度又稱(chēng)進(jìn)程調度。它決定就緒隊列中的哪個(gè)進(jìn)程將獲得處理機,然后由分派程序執行把處理機分配給該進(jìn)程的操作。進(jìn)程調度是最基本的一種調度,各種OS中都必須配置這級調度。進(jìn)程調度可采用下述兩種方式。

      1)非搶占方式。

       采用這種調度方式,一旦把處理機分配給某進(jìn)程后,便讓該進(jìn)程一直執行,直到該進(jìn)程完成或發(fā)生某事件而被阻塞,才再把處理機分配給其他進(jìn)程,決不允許某進(jìn)程搶占已經(jīng)分配出去的處理機。顯然它難于滿(mǎn)足緊急任務(wù)的要求,實(shí)時(shí)系統中不宜采用這種調度方式。

      2)搶占方式。

      允許調度程序根據某種原則,去停止某個(gè)正在執行的進(jìn)程,將已分配給該進(jìn)程的處理機,重新分配給另一進(jìn)程。搶占的原則有:

       ① 時(shí)間片原則。各進(jìn)程按時(shí)間片運行,當一個(gè)時(shí)間片用完后,便停止該進(jìn)程的執行而重新進(jìn)行調度。
       ② 優(yōu)先權原則。當一個(gè)進(jìn)程到來(lái)時(shí),如果其優(yōu)先級比正在執行的進(jìn)程的優(yōu)先級高,便停止正在執行的進(jìn)程,將處理機分配給優(yōu)先級高的進(jìn)程,使之執行。實(shí)時(shí)系統中一般采用基于優(yōu)先級的搶占式調度和輪轉調度的進(jìn)程調度和中程調度相結合的調度策略。因此既可具有較大的靈活性,又能獲得極小的調度延遲。

     3、任務(wù)調度分析
   

       Wind內核缺省調度機制為基于優(yōu)先級的搶占式調度。采用這種機制時(shí),系統把處理機分配給優(yōu)先級最高的進(jìn)程,使之執行。一旦出現了另一個(gè)優(yōu)先級更高的進(jìn)程時(shí),進(jìn)程調度程序剝奪當前任務(wù)的執行,將處理機分配給高優(yōu)先級任務(wù)。而在相同優(yōu)先級的多個(gè)任務(wù)之間,采用時(shí)間片輪轉調度機制。采用這種機制時(shí),當一個(gè)任務(wù)到達時(shí),它被排在輪轉隊列的后面,等待分配給自己的時(shí)間片的到來(lái),如果在時(shí)間片內沒(méi)有結束,則再等待屬于自己的時(shí)間片的到來(lái),直到任務(wù)完成。

      3.1 優(yōu)先級搶占式
   

       采用基于優(yōu)先級的搶占式調度,系統中每個(gè)任務(wù)都有一個(gè)介于最高0到最低255之間的優(yōu)先級。任一時(shí)刻,系統內核一旦發(fā)現一個(gè)優(yōu)先級更高的任務(wù)轉變?yōu)榫途w態(tài),內核就保存當前任務(wù)的上下文并把當前任務(wù)狀態(tài)轉換為阻塞態(tài),同時(shí)切換到這個(gè)高優(yōu)先級任務(wù)的上下文執行。如圖2,低優(yōu)先級的task1被中優(yōu)先級的task2搶占,task2又被高優(yōu)先級的task3搶占。

      3.2 輪轉調度算法
   

        采用輪轉調度算法,系統讓處于就緒態(tài)的優(yōu)先級相同的一組任務(wù)依次輪流執行預先確定長(cháng)度的時(shí)間片。這是一種處理機平均分配的方法。如果不使用輪轉調度算法,優(yōu)先級相同的一組任務(wù)中第一個(gè)獲得處理機的任務(wù)將不會(huì )被阻塞而獨占處理機,如果沒(méi)有阻塞或其他情況發(fā)生,它不會(huì )放棄處理機的使用權。如圖3,相同優(yōu)先級的task1、task2和task3平均分配預先確定的處理機時(shí)間片。

 
      3.3 搶占調度與輪轉調度混合方式
   

       有時(shí),基于優(yōu)先級的搶占式調度可與輪轉調度相結合。當優(yōu)先級相同的一組任務(wù)依次輪流平均分配處理機時(shí),若有高優(yōu)先級的任務(wù)轉變?yōu)榫途w態(tài)則可搶占該組任務(wù)。直到再一次符合執行條件時(shí),該組任務(wù)才可再次共享處理機。如圖4,相同優(yōu)先級的task1、task2和task3輪流占有處理機時(shí),高于該組優(yōu)先級的task4搶占處理機,等task4執行結束,該組任務(wù)再次共享處理機。
 

 
       為了任務(wù)控制的靈活性,wind內核還提供了動(dòng)態(tài)優(yōu)先級機制,任務(wù)的優(yōu)先級在運行期間可動(dòng)態(tài)地變化。同時(shí),為了防止優(yōu)先級反轉,還具有優(yōu)先級繼承機制,通過(guò)使用互斥信號量可以防止高優(yōu)先級的任務(wù)被迫等待一段不確定時(shí)間,直到一個(gè)低優(yōu)先級任務(wù)完成。

     4、結論
   

      任務(wù)是代碼運行的一個(gè)映像,從系統的角度來(lái)看,任務(wù)是競爭系統資源的最小運行單元。vxworks內核使任務(wù)能快速共享系統的絕大部分資源,同時(shí)有獨立的上下文來(lái)控制個(gè)別線(xiàn)程的執行。內核調度是一個(gè)實(shí)時(shí)系統的核心,它的好壞直接影響整個(gè)系統的好壞,通過(guò)對這種內核調度分析,可以更深入的理解實(shí)時(shí)操作系統設計的獨到之處。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>