您何時需要實時操作系統(tǒng)?
自適應分區(qū)
本文引用地址:http://www.ex-cimer.com/article/140324.htm圖 3. 自適應分區(qū)可阻止優(yōu)先級高的任務消耗超過其分配的規(guī)定比例的 CPU,除非系統(tǒng)包含未使用的 CPU 周期。例如,任務 A 和任務 D 可在分配至分區(qū) 3 的時間內(nèi)運行,因為任務 E 和任務 F 不需要剩余的 CPU 周期預算。
另一種被稱作自適應分區(qū)的方法提供了更靈活的動態(tài)調(diào)度算法,從而有效克服了靜態(tài)分區(qū)的缺陷。與靜態(tài)分區(qū)一樣,自適應分區(qū)允許系統(tǒng)設計人員為單獨進程或一組進程預留 CPU 周期。因此,系統(tǒng)設計人員能保證一個子系統(tǒng)或分區(qū)上的負載不會影響其他子系統(tǒng)的可用性。而且,與靜態(tài)分區(qū)不同的是,自適應分區(qū)還能將空閑分區(qū)中的 CPU 周期以動態(tài)方式重新分配到可受益于額外處理時間的分區(qū)——只有當 CPU 滿載時,分區(qū)預算才會執(zhí)行。因此,系統(tǒng)就能處理高峰需求并使利用率達到 100%,同時又能繼續(xù)享受資源保證帶來的收益。
同樣重要的是,自適應分區(qū)還能直接應用于先有系統(tǒng),而無需重新設計代碼或修改代碼。例如,在 QNX® Neutrino® 實時操作系統(tǒng)中,系統(tǒng)設計人員只需啟動分區(qū)內(nèi)已有的基于 POSIX 應用程序,實時操作系統(tǒng)的調(diào)度程序就會確保每個分區(qū)都會收到分配的預算。在每個分區(qū)內(nèi),會繼續(xù)根據(jù)基于優(yōu)先級的搶占式調(diào)度算法對每項任務進行調(diào)度——應用程序不必更改其調(diào)度運行。此外,系統(tǒng)設計人員還能以動態(tài)方式重新配置分區(qū),以精確調(diào)節(jié)系統(tǒng)實現(xiàn)最佳性能?! ?/p>
圖 3. 自適應分區(qū)可阻止優(yōu)先級高的任務消耗超過其分配的規(guī)定比例的 CPU,
除非系統(tǒng)包含未使用的 CPU 周期。例如,任務 A 和任務 D 可在分配至分區(qū)
3 的時間內(nèi)運行,因為任務 E 和任務 F 不需要剩余的 CPU 周期預算。
“組合”內(nèi)核
通用操作系統(tǒng)(包括 Linux、Windows 和各種類型的 Unix 系統(tǒng))通常都缺少我們目前介紹的實時機制。但供應商已開發(fā)出許多實時擴展組件和補丁,試圖填補這一空白。例如,有一種雙內(nèi)核方法,其中的通用操作系統(tǒng)能以任務的形式在專用實時內(nèi)核上運行(參見圖 4)。任何需要確定性調(diào)度的任務都會在該內(nèi)核中運行,但其優(yōu)先級要高于通用操作系統(tǒng)的優(yōu)先級。 因此,只要這些任務需要運行,它們就能搶占通用操作系統(tǒng),而且只有在其工作完成后,才會向通用操作系統(tǒng)釋放 CPU。
遺憾的是,實時內(nèi)核中運行的任務只能有限地利用通用操作系統(tǒng)中現(xiàn)有的系統(tǒng)服務,如文件系統(tǒng)、網(wǎng)絡服務等。實際上,如果實時任務向通用操作系統(tǒng)請求任何服務,它都會面臨同樣的搶占問題,這會阻止通用操作系統(tǒng)的進程以確定方式運行。因此,必須針對實時內(nèi)核創(chuàng)建新的驅(qū)動程序和系統(tǒng)服務,即使通用操作系統(tǒng)中已存在相同的服務。但是,多數(shù)通用操作系統(tǒng)為正常的非實時進程提供的受內(nèi)存管理單元 (MMU) 保護的可靠環(huán)境卻無法惠及在實時內(nèi)核中運行的任務。相反,它們會在無保護的內(nèi)核空間運行。因此,任何含有公共編碼錯誤(如損壞的 C 指針)的實時任務都會輕易導致內(nèi)核出現(xiàn)嚴重故障。這的確是一個問題,因為需要實時功能的大部分系統(tǒng)同樣需要極高的可靠性。
雙內(nèi)核方法的不同實現(xiàn)使用不同的應用程序接口 (API) 使問題進一步復雜。在多數(shù)情況下,為通用操作系統(tǒng)編寫的服務無法輕易移植到實時內(nèi)核中,而且針對一個供應商的實時擴展組件編寫的任務未必能在另一個供應商的實時擴展組件上運行。
圖 4. 在常見的雙內(nèi)核實現(xiàn)中,通用操作系統(tǒng)會作為優(yōu)先級最低的任務在單獨的實時內(nèi)核中運行。
這種解決方案指出了使通用操作系統(tǒng)支持實時運行的實際困難和復雜性。但這并非是關于實時操作系統(tǒng)和通用操作系統(tǒng)孰優(yōu)孰劣的問題。通用操作系統(tǒng)(如 Linux、Windows 和各種 Unix 系統(tǒng))都能以臺式機或服務器操作系統(tǒng)的形式正常運行。但是,當進入不符合其設計用途的確定運行環(huán)境中(如車載遠程信息處理裝置、醫(yī)療器械、實時控制系統(tǒng)和連續(xù)媒體應用)時,它們就會凸顯不足。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論