電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>VXWORKS內(nèi)核分析

VXWORKS內(nèi)核分析

2017-11-08 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

 1. 實(shí)時(shí)操作系統(tǒng)的結(jié)構(gòu)
  在計(jì)算的早期開(kāi)發(fā)的操作系統(tǒng)的最原始的結(jié)構(gòu)形式是一個(gè)統(tǒng)一的實(shí)體(monolithic)。在這樣的系統(tǒng)中,提供的不同功能的模塊,如處理器管理、內(nèi)存管理、輸入輸出等,通常是獨(dú)立的。然而他們?cè)趫?zhí)行過(guò)程中并不考慮其他正在使用中的模塊,各個(gè)模塊都以相同的時(shí)間粒度運(yùn)行。
  由于現(xiàn)代實(shí)時(shí)環(huán)境需要許多不同的功能,以及在這樣的環(huán)境中存在的并發(fā)活動(dòng)所引起的異步性和非確定性,操作系統(tǒng)變得更加復(fù)雜。所以早期操作系統(tǒng)的統(tǒng)一結(jié)構(gòu)的組織已經(jīng)被更加精確的內(nèi)部結(jié)構(gòu)所淘汰。層次結(jié)構(gòu)的起點(diǎn)----內(nèi)核
  操作系統(tǒng)的最好的內(nèi)部結(jié)構(gòu)模型是一個(gè)層次性的結(jié)構(gòu),最低層是內(nèi)核。這些層次可以看成為一個(gè)倒置的金字塔,每一層都建立在較低層的功能之上。 內(nèi)核僅包含一個(gè)操作系統(tǒng)執(zhí)行的最重要的低層功能。正象一個(gè)統(tǒng)一結(jié)構(gòu)的操作系統(tǒng),內(nèi)核提供了在高層軟件與下層硬件之間的抽象層。然而,內(nèi)核僅提供了構(gòu)造操作系統(tǒng)其他部分所需的最小操作集。
  對(duì)一個(gè)實(shí)時(shí)內(nèi)核的要求
  一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核需滿(mǎn)足許多特定的實(shí)時(shí)環(huán)境所提出的基本要求,這些包括: 多任務(wù):由于真實(shí)世界的事件的異步性,能夠運(yùn)行許多并發(fā)進(jìn)程或任務(wù)是很重要的。多任務(wù)提供了一個(gè)較好的對(duì)真實(shí)世界的匹配,因?yàn)樗试S對(duì)應(yīng)于許多外部事件的多線程執(zhí)行。系統(tǒng)內(nèi)核分配CPU給這些任務(wù)來(lái)獲得并發(fā)性。
  搶占調(diào)度:真實(shí)世界的事件具有繼承的優(yōu)先級(jí),在分配CPU的時(shí)候要注意到這些優(yōu)先級(jí)?;趦?yōu)先級(jí)的搶占調(diào)度,任務(wù)都被指定了優(yōu)先級(jí), 在能夠執(zhí)行的任務(wù)(沒(méi)有被掛起或正在等待資源)中,優(yōu)先級(jí)最高的任務(wù)被分配CPU資源。換句話(huà)說(shuō),當(dāng)一個(gè)高優(yōu)先級(jí)的任務(wù)變?yōu)榭蓤?zhí)行態(tài),它會(huì)立即搶占當(dāng)前正在運(yùn)行的較低優(yōu)先級(jí)的任務(wù)。
  快速靈活的任務(wù)間的通信與同步:在一個(gè)實(shí)時(shí)系統(tǒng)中,可能有許多任務(wù)作為一個(gè)應(yīng)用的一部分執(zhí)行。系統(tǒng)必須提供這些任務(wù)間的快速且功能強(qiáng)大的通信機(jī)制。內(nèi)核也要提供為了有效地共享不可搶占的資源或臨界區(qū)所需的同步機(jī)制。
  方便的任務(wù)與中斷之間的通信:盡管真實(shí)世界的事件通常作為中斷方式到來(lái),但為了提供有效的排隊(duì)、優(yōu)先化和減少中斷延時(shí),我們通常希望在任務(wù)級(jí)處理相應(yīng)的工作。所以需要雜任務(wù)級(jí)和中斷級(jí)之間存在通信。
  性能邊界:一個(gè)實(shí)時(shí)內(nèi)核必須提供最壞情況的性能優(yōu)化,而非針對(duì)吞吐量的性能優(yōu)化。我們更期望一個(gè)系統(tǒng)能夠始終以50微妙執(zhí)行一個(gè)函數(shù),而不期望系統(tǒng)平均以10微妙執(zhí)行該函數(shù),但偶爾會(huì)以75微妙執(zhí)行它。
  特殊考慮:由于對(duì)實(shí)時(shí)內(nèi)核的要求的增加,必須考慮對(duì)內(nèi)核支持不斷增加的復(fù)雜功能的要求。這包括多進(jìn)程處理,Ada和對(duì)更新的、功能更強(qiáng)的處理器結(jié)構(gòu)如RISC的支持。
  擁有其它名字的內(nèi)核
  許多商用化的內(nèi)核支持的功能遠(yuǎn)強(qiáng)于上面所列的要求。在這方面,他們不是真正的內(nèi)核,而更象一個(gè)小的統(tǒng)一結(jié)構(gòu)的操作系統(tǒng)。因?yàn)樗麄儼?jiǎn)單的內(nèi)存分配、時(shí)鐘管理、甚至一些輸入輸出系統(tǒng)調(diào)用的功能。
  這種分類(lèi)不僅僅是在語(yǔ)義上的爭(zhēng)論,在這篇文章的后面章節(jié)將說(shuō)明限制內(nèi)核功能和油畫(huà)這些功能的重要性。
  2. VxWorks內(nèi)核:Wind
  VxWorks操作系統(tǒng)是一種功能最全的現(xiàn)在可以獲得的獨(dú)立于處理器的實(shí)時(shí)系統(tǒng)。然而,VxWorks是帶有一個(gè)相當(dāng)小的真正微內(nèi)核的層次結(jié)構(gòu)。內(nèi)核僅提供多任務(wù)環(huán)境、進(jìn)程間通信和同步功能。這些功能模塊足夠支持VxWorks在較高層次所提供的豐富的性能的要求。 通常內(nèi)核操作對(duì)于用戶(hù)是不可見(jiàn)的。應(yīng)用程序?yàn)榱藢?shí)現(xiàn)需要內(nèi)核參與的任務(wù)管理和同步使用一些系統(tǒng)調(diào)用,但這些調(diào)用的處理對(duì)于調(diào)用任務(wù)是不可見(jiàn)的。應(yīng)用程序僅鏈接恰當(dāng)?shù)腣xWorks例程(通常使用VxWorks的動(dòng)態(tài)鏈接功能),就象調(diào)用子程序一樣發(fā)出系統(tǒng)調(diào)用。這種接口不象有些系統(tǒng)需要一個(gè)笨拙的跳轉(zhuǎn)表接口,用戶(hù)需要通過(guò)一個(gè)整數(shù)來(lái)指定一個(gè)內(nèi)核功能調(diào)用。
  多任務(wù)
  內(nèi)核的基本功能是提供一個(gè)多任務(wù)環(huán)境。多任務(wù)使得許多程序在表面上表現(xiàn)為并發(fā)執(zhí)行,而事實(shí)上內(nèi)核是根據(jù)基本的調(diào)度算法使他們分段執(zhí)行。每個(gè)明顯獨(dú)立的程序被成為一個(gè)任務(wù)。每個(gè)任務(wù)擁有自己的上下文,其中包含在內(nèi)核調(diào)度使該任務(wù)執(zhí)行的時(shí)候它所看到的CPU環(huán)境和系統(tǒng)資源。
  任務(wù)狀態(tài)
  內(nèi)核維護(hù)系統(tǒng)中的每個(gè)任務(wù)的當(dāng)前狀態(tài)。狀態(tài)遷移發(fā)生在應(yīng)用程序調(diào)用內(nèi)核功能服務(wù)的時(shí)候。下面定義了wind內(nèi)核狀態(tài):
  就緒態(tài)----一個(gè)任務(wù)當(dāng)前除了CPU不等待任何資源
  阻塞態(tài)----一個(gè)任務(wù)由于某些資源不可獲得而被阻塞
  延遲態(tài)----一個(gè)任務(wù)睡眠一段時(shí)間
  掛起態(tài)----主要用于調(diào)試的一個(gè)輔助狀態(tài),掛起禁止任務(wù)的執(zhí)行
  任務(wù)被創(chuàng)建以后進(jìn)入掛起態(tài),需要通過(guò)特定的操作使被創(chuàng)建的任務(wù)進(jìn)入就緒態(tài),這一操作執(zhí)行速度很快,使應(yīng)用程序能夠提前創(chuàng)建任務(wù),并以一種快捷的方式激活該任務(wù)。
  調(diào)度控制
  多任務(wù)需要一個(gè)調(diào)度算法分配CPU給就緒的任務(wù)。在VxWorks中默認(rèn)的調(diào)度算法是基于優(yōu)先級(jí)的搶占調(diào)度,但應(yīng)用程序也可以選擇使用時(shí)間片輪轉(zhuǎn)調(diào)度。
  基于優(yōu)先級(jí)搶占調(diào)度:基于優(yōu)先級(jí)的搶占調(diào)度,每個(gè)任務(wù)被指定一個(gè)優(yōu)先級(jí),內(nèi)核分配CPU給處于就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)。調(diào)度采用搶占的方式,是因?yàn)楫?dāng)一個(gè)優(yōu)先級(jí)高于當(dāng)前任務(wù)的任務(wù)變?yōu)榫途w態(tài)時(shí),內(nèi)核將立即保存當(dāng)前任務(wù)的上文,并切換到高優(yōu)先級(jí)任務(wù)的上文。VxWorks有從0到255共256個(gè)優(yōu)先級(jí)。在創(chuàng)建的時(shí)候任務(wù)被指定一個(gè)優(yōu)先級(jí),在任務(wù)運(yùn)行的過(guò)程中可以動(dòng)態(tài)地修改優(yōu)先級(jí)以便跟蹤真實(shí)世界的事件優(yōu)先級(jí)。外部中斷被指定優(yōu)先于任何任務(wù)的優(yōu)先級(jí),這樣能夠在任何時(shí)候搶占一個(gè)任務(wù)。
  時(shí)間片輪轉(zhuǎn):基于優(yōu)先級(jí)搶占調(diào)度可以擴(kuò)充時(shí)間片輪轉(zhuǎn)調(diào)度。時(shí)間片輪轉(zhuǎn)調(diào)度允許在相同優(yōu)先級(jí)的處于就緒態(tài)的任務(wù)公平地共享CPU。沒(méi)有時(shí)間片輪轉(zhuǎn)調(diào)度,當(dāng)有多個(gè)任務(wù)在同一優(yōu)先級(jí)共享處理器時(shí),一個(gè)任務(wù)可能獨(dú)占CPU,不會(huì)被阻塞直到被一個(gè)更高優(yōu)先級(jí)的任務(wù)搶占,而不給同一優(yōu)先級(jí)的其他任務(wù)運(yùn)行的機(jī)會(huì)。如果時(shí)間片輪轉(zhuǎn)被使能,執(zhí)行任務(wù)的時(shí)間計(jì)數(shù)器在每個(gè)時(shí)鐘滴答遞增。當(dāng)指定的時(shí)間片耗盡,計(jì)數(shù)器會(huì)被清零,該任務(wù)被放在同一優(yōu)先級(jí)任務(wù)隊(duì)列的隊(duì)尾。加入特定優(yōu)先級(jí)組的新任務(wù)被放在該組任務(wù)的隊(duì)尾,并將運(yùn)行計(jì)數(shù)器初始化為零。
  基本的任務(wù)函數(shù)
  用于狀態(tài)控制的基本任務(wù)函數(shù)包括一個(gè)任務(wù)的創(chuàng)建、刪除、掛起和喚醒。一個(gè)任務(wù)也可以使自己睡眠一個(gè)特定的時(shí)間間隔不去運(yùn)行。許多其他任務(wù)例程提供由任務(wù)上下文獲得的狀態(tài)信息。這些例程包括訪問(wèn)一個(gè)任務(wù)當(dāng)前處理器寄存器控制。
  任務(wù)刪除問(wèn)題
  wind內(nèi)核提供防止任務(wù)被意外刪除的機(jī)制。通常,一個(gè)執(zhí)行在臨界區(qū)或訪問(wèn)臨界資源的任務(wù)要被特別保護(hù)。我們?cè)O(shè)想下面的情況:一個(gè)任務(wù)獲得一些數(shù)據(jù)結(jié)構(gòu)的互斥訪問(wèn)權(quán),當(dāng)它正在臨界區(qū)內(nèi)執(zhí)行時(shí)被另一個(gè)任務(wù)刪除。由于任務(wù)無(wú)法完成對(duì)臨界區(qū)的操作,該數(shù)據(jù)結(jié)構(gòu)可能還處于被破壞或不一致的狀態(tài)。而且,假想任務(wù)沒(méi)有機(jī)會(huì)釋放該資源,那麼現(xiàn)在其他任何任務(wù)現(xiàn)在就不能獲得該資源,資源被凍結(jié)了。
  任何要?jiǎng)h除或終止一個(gè)設(shè)定了刪除保護(hù)的任務(wù)的任務(wù)將被阻塞。當(dāng)被保護(hù)的任務(wù)完成臨界區(qū)操作以后,它將取消刪除保護(hù)以使自己可以被刪除,從而解阻塞刪除任務(wù)。
  正如上面所展示的,任務(wù)刪除保護(hù)通常伴有互斥操作。
  這樣,為了方便性和效率,互斥信號(hào)量包含了刪除保護(hù)選項(xiàng)。(參見(jiàn)“互斥信號(hào)量”)
  任務(wù)間通信
  為了提供完整的多任務(wù)系統(tǒng)的功能,wind內(nèi)核提供了一套豐富的任務(wù)間通信與同步的機(jī)制。這些通信功能使一個(gè)應(yīng)用中各個(gè)獨(dú)立的任務(wù)協(xié)調(diào)他們的活動(dòng)。
  共享地址空間
  wind內(nèi)核的任務(wù)間通信機(jī)制的基礎(chǔ)是所有任務(wù)所在的共享地址空間。通過(guò)共享地址空間,任務(wù)能夠使用共享數(shù)據(jù)結(jié)構(gòu)的指針自由地通信。管道不需要映射一塊內(nèi)存區(qū)到兩個(gè)互相通信任務(wù)的尋址空間。
  不幸的是,共享地址空間具有上述優(yōu)點(diǎn)的同時(shí),帶來(lái)了未被保護(hù)內(nèi)存的重入訪問(wèn)的危險(xiǎn)。UNIX操作系統(tǒng)通過(guò)隔離進(jìn)程提供這樣的保護(hù),但同時(shí)帶來(lái)了對(duì)于實(shí)時(shí)操作系統(tǒng)來(lái)說(shuō)巨大的性能損失。
  互斥操作
  當(dāng)一個(gè)共享地址空間簡(jiǎn)化了數(shù)據(jù)交換,通過(guò)互斥訪問(wèn)避免資源競(jìng)爭(zhēng)就變?yōu)楸匾牧?。用?lái)獲得一個(gè)資源的互斥訪問(wèn)的許多機(jī)制僅在這些互斥所作用的范圍上存在差別。實(shí)現(xiàn)互斥的方法包括禁止中斷、禁止任務(wù)搶占和通過(guò)信號(hào)量進(jìn)行資源鎖定。
  中斷禁止:最強(qiáng)的互斥方法是屏蔽中斷。這樣的鎖定保證了對(duì)CPU的互斥訪問(wèn)。這種方法當(dāng)然能夠解決互斥的問(wèn)題,但它對(duì)于實(shí)時(shí)是不恰當(dāng)?shù)?,因?yàn)樗阪i定期間阻止系統(tǒng)響應(yīng)外部事件。長(zhǎng)的中斷延時(shí)對(duì)于要求有確定的響應(yīng)時(shí)間的應(yīng)用來(lái)說(shuō)是不可接受的。
  搶占禁止:禁止搶占提供了強(qiáng)制性較弱的互斥方式。 當(dāng)前任務(wù)運(yùn)行的過(guò)程中不允許其他任務(wù)搶占,而中斷服務(wù)程序可以執(zhí)行。這也可能引起較差的實(shí)時(shí)響應(yīng),就象被禁止中斷一樣,被阻塞的任務(wù)會(huì)有相當(dāng)長(zhǎng)時(shí)間的搶占延時(shí),就緒態(tài)的高優(yōu)先級(jí)的任務(wù)可能會(huì)在能夠執(zhí)行前被強(qiáng)制等待一段不可接受的時(shí)間。為避免這種情況,在可能的情況下盡量使用信號(hào)量實(shí)現(xiàn)互斥。
  互斥信號(hào)量:信號(hào)量是用于鎖定共享資源訪問(wèn)的基本方式。不象禁止中斷或搶占,信號(hào)量限制了互斥操作僅作用于相關(guān)的資源。一個(gè)信號(hào)量被創(chuàng)建來(lái)保護(hù)資源。VxWorks的信號(hào)量遵循Dijkstra的P()和V()操作模式。
  當(dāng)一個(gè)任務(wù)請(qǐng)求信號(hào)量,P(), 根據(jù)在發(fā)出調(diào)用時(shí)信號(hào)量的置位或清零的狀態(tài), 會(huì)發(fā)生兩種情況。如果信號(hào)量處于置位態(tài), 信號(hào)量會(huì)被清零,并且任務(wù)立即繼續(xù)執(zhí)行。如果信號(hào)量處于清零態(tài),任務(wù)會(huì)被阻塞來(lái)等待信號(hào)量。
  當(dāng)一個(gè)任務(wù)釋放信號(hào)量,V(),會(huì)發(fā)生幾種情況。如果信號(hào)量已經(jīng)處于置位態(tài),釋放信號(hào)量不會(huì)產(chǎn)生任何影響。如果信號(hào)量處于清零態(tài)且沒(méi)有任務(wù)等待該信號(hào)量,信號(hào)量只是被簡(jiǎn)單地置位。如果信號(hào)量處于清零態(tài)且有一個(gè)或多個(gè)任務(wù)等待該信號(hào)量,最高優(yōu)先級(jí)的任務(wù)被解阻塞,信號(hào)量仍為清零態(tài)。
  通過(guò)將一些資源與信號(hào)量關(guān)聯(lián),能夠?qū)崿F(xiàn)互斥操作。當(dāng)一個(gè)任務(wù)要操作資源,它必須首先獲得信號(hào)量。只要任務(wù)擁有信號(hào)量,所有其他的任務(wù)由于請(qǐng)求該信號(hào)量而被阻塞。當(dāng)一個(gè)任務(wù)使用完該資源,它釋放信號(hào)量,允許等待該信號(hào)量的另一個(gè)任務(wù)訪問(wèn)該資源。
  Wind內(nèi)核提供了二值信號(hào)量來(lái)解決互斥操作所引起的問(wèn)題。 這些問(wèn)題包括資源擁有者的刪除保護(hù),由資源競(jìng)爭(zhēng)引起的優(yōu)先級(jí)逆轉(zhuǎn)。
  刪除保護(hù)----互斥引起的一個(gè)問(wèn)題會(huì)涉及到任務(wù)刪除。在由信號(hào)量保護(hù)的臨界區(qū)中,需要防止執(zhí)行任務(wù)被意外地刪除。刪除一個(gè)在臨界區(qū)執(zhí)行的任務(wù)是災(zāi)難性的。資源會(huì)被破壞,保護(hù)資源的信號(hào)量會(huì)變?yōu)椴豢色@得,從而該資源不可被訪問(wèn)。通常刪除保護(hù)是與互斥操作共同提供的。由于這個(gè)原因,互斥信號(hào)量通常提供選項(xiàng)來(lái)隱含地提供前面提到的任務(wù)刪除保護(hù)的機(jī)制。
  優(yōu)先級(jí)逆轉(zhuǎn)/優(yōu)先級(jí)繼承----優(yōu)先級(jí)逆轉(zhuǎn)發(fā)生在一個(gè)高優(yōu)先級(jí)的任務(wù)被強(qiáng)制等待一段不確定的時(shí)間以便一個(gè)較低優(yōu)先級(jí)的任務(wù)完成執(zhí)行。考慮下面的假設(shè):
  T1,T2和T3分別是高、中、低優(yōu)先級(jí)的任務(wù)。T3通過(guò)擁有信號(hào)量而獲得相關(guān)的資源。當(dāng)T1搶占T3,為競(jìng)爭(zhēng)使用該資源而請(qǐng)求相同的信號(hào)量的時(shí)候,它被阻塞。如果我們假設(shè)T1僅被阻塞到T3使用完該資源為止,情況并不是很糟。畢竟資源是不可被搶占的。然而,低優(yōu)先級(jí)的任務(wù)并不能避免被中優(yōu)先級(jí)的任務(wù)搶占,一個(gè)搶占的任務(wù)如T2將阻止T3完成對(duì)資源的操作。這種情況可能會(huì)持續(xù)阻塞T1等待一段不可確定的時(shí)間。這種情況成為優(yōu)先級(jí)逆轉(zhuǎn),因?yàn)楸M管系統(tǒng)是基于優(yōu)先級(jí)的調(diào)度,但卻使一個(gè)高優(yōu)先級(jí)的任務(wù)等待一個(gè)低優(yōu)先級(jí)的任務(wù)完成執(zhí)行。
  互斥信號(hào)量有一個(gè)選項(xiàng)允許實(shí)現(xiàn)優(yōu)先級(jí)繼承的算法。優(yōu)先級(jí)繼承通過(guò)在T1被阻塞期間提升T3的優(yōu)先級(jí)到T1解決了優(yōu)先級(jí)逆轉(zhuǎn)引起的問(wèn)題。這防止了T3,間接地防止T1,被T2搶占。通俗地說(shuō),優(yōu)先級(jí)繼承協(xié)議使一個(gè)擁有資源的任務(wù)以等待該資源的任務(wù)中優(yōu)先級(jí)最高的任務(wù)的優(yōu)先級(jí)執(zhí)行。當(dāng)執(zhí)行完成,任務(wù)釋放該資源并返回到它正常的或標(biāo)準(zhǔn)的優(yōu)先級(jí)。因此,繼承優(yōu)先級(jí)的任務(wù)避免了被任何中間優(yōu)先級(jí)的任務(wù)搶占。
  同步
  信號(hào)量另一種通常的用法是用于任務(wù)間的同步機(jī)制。在這種情況下,信號(hào)量代表一個(gè)任務(wù)所等待的條件或事件。最初,信號(hào)量是在清零態(tài)。一個(gè)任務(wù)或中斷通過(guò)置位該信號(hào)量來(lái)指示一個(gè)事件的發(fā)生。等待該信號(hào)量的任務(wù)將被阻塞直到事件發(fā)生、該信號(hào)量被置位。一旦被解阻塞,任務(wù)就執(zhí)行恰當(dāng)?shù)氖录幚沓绦颉P盘?hào)量在任務(wù)同步中的應(yīng)用對(duì)于將中斷服務(wù)程序從冗長(zhǎng)的事件處理中解放出來(lái)以縮短中斷響應(yīng)時(shí)間是很有用的。
  消息隊(duì)列
  消息隊(duì)列提供了在任務(wù)與中斷服務(wù)程序或其他任務(wù)間交換變長(zhǎng)消息的一種較低層的機(jī)制。這種機(jī)制在功能上類(lèi)似于管道,但有較少的開(kāi)銷(xiāo)。
  管道、套接字、遠(yuǎn)程過(guò)程調(diào)用和更多
  許多高層的VxWorks機(jī)制提供任務(wù)間通信的更高層的抽象,包括管道、TCP/IP套接字、遠(yuǎn)程過(guò)程調(diào)用和更多。為了保持裁減內(nèi)核為僅包含足夠支持高層功能的一個(gè)最小函數(shù)集的設(shè)計(jì)目標(biāo),這些特性都是基于上面描述的內(nèi)核同步方式的。
  3. 內(nèi)核設(shè)計(jì)的優(yōu)點(diǎn)
  wind內(nèi)核的一個(gè)重要的設(shè)計(jì)特性是最小的搶占延時(shí)。其他的主要設(shè)計(jì)的優(yōu)點(diǎn)包括史無(wú)前例的可配置性,對(duì)不可預(yù)見(jiàn)的應(yīng)用需求的可擴(kuò)展性,在各種微處理器應(yīng)用開(kāi)發(fā)中的移植性。
  最小的搶占延時(shí)
  正如前面所討論的,禁止搶占是獲得代碼臨界資源互斥操作的通常手段。這種技巧的不期望的負(fù)面影響是高的搶占延時(shí),這可以通過(guò)盡量使用信號(hào)量實(shí)現(xiàn)互斥和保持臨界區(qū)盡量緊湊被減小。但即使廣泛地使用信號(hào)量也不能解決所有的可能導(dǎo)致?lián)屨佳訒r(shí)的根源。內(nèi)核本身就是一個(gè)導(dǎo)致?lián)屨佳訒r(shí)的根源。為了理解其原因,我們必須更好地理解內(nèi)核所需的互斥操作。
  內(nèi)核級(jí)和任務(wù)級(jí)
  在任何多任務(wù)系統(tǒng)中,大量的應(yīng)用是發(fā)生在一個(gè)或多個(gè)任務(wù)的上下文。然而,有些CPU時(shí)間片不在任何任務(wù)的上下文。這些時(shí)間片發(fā)生在內(nèi)核改變內(nèi)部隊(duì)列或決定任務(wù)調(diào)度。在這些時(shí)間片中,CPU在內(nèi)核級(jí)執(zhí)行,而非任務(wù)級(jí)。
  為了內(nèi)核安全地操作它的內(nèi)部的數(shù)據(jù)結(jié)構(gòu),必須有互斥操作。內(nèi)核級(jí)沒(méi)有相關(guān)的任務(wù)上下文,內(nèi)核不能使用信號(hào)量保護(hù)內(nèi)部鏈表。內(nèi)核使用工作延期作為實(shí)現(xiàn)互斥的方式。當(dāng)有內(nèi)核參與時(shí),中斷服務(wù)程序調(diào)用的函數(shù)不是被直接激活,而是被放在內(nèi)核的工作隊(duì)列中。內(nèi)核完成這些請(qǐng)求的執(zhí)行而清空內(nèi)核工作隊(duì)列。
  當(dāng)內(nèi)核正在執(zhí)行已經(jīng)被請(qǐng)求服務(wù)時(shí)系統(tǒng)將不響應(yīng)到達(dá)內(nèi)核的函數(shù)調(diào)用??梢院?jiǎn)單地認(rèn)為內(nèi)核狀態(tài)類(lèi)似于禁止搶占。如前面所討論的,搶占延時(shí)在實(shí)時(shí)系統(tǒng)中是不期望有的,因?yàn)樗黾恿藢?duì)于會(huì)引起應(yīng)用任務(wù)重新調(diào)度的事件的響應(yīng)時(shí)間。
  管操作系統(tǒng)在內(nèi)核級(jí)(此時(shí)禁止搶占)完全避免消耗時(shí)間是不可能的,但減少這些時(shí)間是很重要的。這是減少由內(nèi)核執(zhí)行的函數(shù)的數(shù)量的主要原因, 也是不采用統(tǒng)一結(jié)構(gòu)的系統(tǒng)設(shè)計(jì)方式的原因。例如,有一種流行的實(shí)時(shí)操作系統(tǒng)的每個(gè)函數(shù)都是在內(nèi)核級(jí)執(zhí)行。這意味著當(dāng)一個(gè)低優(yōu)先級(jí)的任務(wù)在執(zhí)行分配內(nèi)存、獲得任務(wù)信息的函數(shù)時(shí)所有高優(yōu)先級(jí)的任務(wù)被禁止搶占。
  一個(gè)最小的內(nèi)核
  已經(jīng)說(shuō)明了一個(gè)最小內(nèi)核的優(yōu)點(diǎn)和構(gòu)造高層操作系統(tǒng)功能的必要功能,我們使用這些操作原語(yǔ)來(lái)執(zhí)行一個(gè)傳統(tǒng)的內(nèi)核級(jí)功能,而在VxWorks中作為任務(wù)級(jí)功能執(zhí)行,內(nèi)存管理。 在這個(gè)例子中,考慮用戶(hù)可調(diào)用的子例程malloc, 用于分配所請(qǐng)求大小的內(nèi)存區(qū)并返回一個(gè)指向該內(nèi)存區(qū)的指針。假定空閑內(nèi)存區(qū)是通過(guò)搜索一個(gè)空閑內(nèi)存塊的隊(duì)列找到的,一個(gè)信號(hào)量必須被用來(lái)保護(hù)這個(gè)非搶占多用戶(hù)資源。分配內(nèi)存的操作如下:
  獲得互斥信號(hào)量
  搜索空閑內(nèi)存塊鏈表
  釋放互斥信號(hào)量

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

请按住滑块,拖动到最右边
了解新功能

查看更多

广告

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)