<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è) > 嵌入式系統 > 設計應用 > 您何時(shí)需要實(shí)時(shí)操作系統?

您何時(shí)需要實(shí)時(shí)操作系統?

作者: 時(shí)間:2012-12-21 來(lái)源:電子產(chǎn)品世界 收藏

  自適應分區

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

  圖 3. 自適應分區可阻止優(yōu)先級高的任務(wù)消耗超過(guò)其分配的規定比例的 ,除非系統包含未使用的 周期。例如,任務(wù) A 和任務(wù) D 可在分配至分區 3 的時(shí)間內運行,因為任務(wù) E 和任務(wù) F 不需要剩余的 周期預算。

  另一種被稱(chēng)作自適應分區的方法提供了更靈活的動(dòng)態(tài)調度算法,從而有效克服了靜態(tài)分區的缺陷。與靜態(tài)分區一樣,自適應分區允許系統設計人員為單獨進(jìn)程或一組進(jìn)程預留 CPU 周期。因此,系統設計人員能保證一個(gè)子系統或分區上的負載不會(huì )影響其他子系統的可用性。而且,與靜態(tài)分區不同的是,自適應分區還能將空閑分區中的 CPU 周期以動(dòng)態(tài)方式重新分配到可受益于額外處理時(shí)間的分區——只有當 CPU 滿(mǎn)載時(shí),分區預算才會(huì )執行。因此,系統就能處理高峰需求并使利用率達到 100%,同時(shí)又能繼續享受資源保證帶來(lái)的收益。

  同樣重要的是,自適應分區還能直接應用于先有系統,而無(wú)需重新設計代碼或修改代碼。例如,在 ® Neutrino® 實(shí)時(shí)操作系統中,系統設計人員只需啟動(dòng)分區內已有的基于 POSIX 應用程序,實(shí)時(shí)操作系統的調度程序就會(huì )確保每個(gè)分區都會(huì )收到分配的預算。在每個(gè)分區內,會(huì )繼續根據基于優(yōu)先級的搶占式調度算法對每項任務(wù)進(jìn)行調度——應用程序不必更改其調度運行。此外,系統設計人員還能以動(dòng)態(tài)方式重新配置分區,以精確調節系統實(shí)現最佳性能?! ?/p>


圖 3. 自適應分區可阻止優(yōu)先級高的任務(wù)消耗超過(guò)其分配的規定比例的 CPU,
除非系統包含未使用的 CPU 周期。例如,任務(wù) A 和任務(wù) D 可在分配至分區
3 的時(shí)間內運行,因為任務(wù) E 和任務(wù) F 不需要剩余的 CPU 周期預算。

  “組合”內核

  通用操作系統(包括 Linux、Windows 和各種類(lèi)型的 Unix 系統)通常都缺少我們目前介紹的實(shí)時(shí)機制。但供應商已開(kāi)發(fā)出許多實(shí)時(shí)擴展組件和補丁,試圖填補這一空白。例如,有一種雙內核方法,其中的通用操作系統能以任務(wù)的形式在專(zhuān)用實(shí)時(shí)內核上運行(參見(jiàn)圖 4)。任何需要確定性調度的任務(wù)都會(huì )在該內核中運行,但其優(yōu)先級要高于通用操作系統的優(yōu)先級。 因此,只要這些任務(wù)需要運行,它們就能搶占通用操作系統,而且只有在其工作完成后,才會(huì )向通用操作系統釋放 CPU。

  遺憾的是,實(shí)時(shí)內核中運行的任務(wù)只能有限地利用通用操作系統中現有的系統服務(wù),如文件系統、網(wǎng)絡(luò )服務(wù)等。實(shí)際上,如果實(shí)時(shí)任務(wù)向通用操作系統請求任何服務(wù),它都會(huì )面臨同樣的搶占問(wèn)題,這會(huì )阻止通用操作系統的進(jìn)程以確定方式運行。因此,必須針對實(shí)時(shí)內核創(chuàng )建新的驅動(dòng)程序和系統服務(wù),即使通用操作系統中已存在相同的服務(wù)。但是,多數通用操作系統為正常的非實(shí)時(shí)進(jìn)程提供的受內存管理單元 (MMU) 保護的可靠環(huán)境卻無(wú)法惠及在實(shí)時(shí)內核中運行的任務(wù)。相反,它們會(huì )在無(wú)保護的內核空間運行。因此,任何含有公共編碼錯誤(如損壞的 C 指針)的實(shí)時(shí)任務(wù)都會(huì )輕易導致內核出現嚴重故障。這的確是一個(gè)問(wèn)題,因為需要實(shí)時(shí)功能的大部分系統同樣需要極高的可靠性。

  雙內核方法的不同實(shí)現使用不同的應用程序接口 (API) 使問(wèn)題進(jìn)一步復雜。在多數情況下,為通用操作系統編寫(xiě)的服務(wù)無(wú)法輕易移植到實(shí)時(shí)內核中,而且針對一個(gè)供應商的實(shí)時(shí)擴展組件編寫(xiě)的任務(wù)未必能在另一個(gè)供應商的實(shí)時(shí)擴展組件上運行?! ?/p>


圖 4. 在常見(jiàn)的雙內核實(shí)現中,通用操作系統會(huì )作為優(yōu)先級最低的任務(wù)在單獨的實(shí)時(shí)內核中運行。

  這種解決方案指出了使通用操作系統支持實(shí)時(shí)運行的實(shí)際困難和復雜性。但這并非是關(guān)于實(shí)時(shí)操作系統和通用操作系統孰優(yōu)孰劣的問(wèn)題。通用操作系統(如 Linux、Windows 和各種 Unix 系統)都能以臺式機或服務(wù)器操作系統的形式正常運行。但是,當進(jìn)入不符合其設計用途的確定運行環(huán)境中(如車(chē)載遠程信息處理裝置、醫療器械、實(shí)時(shí)控制系統和連續媒體應用)時(shí),它們就會(huì )凸顯不足。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: QNX 嵌入式 CPU

評論


相關(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>