采用 Linux 與 DSP/BIOS RTOS 實(shí)施雙 OS 信號(hào)處理技術(shù)
GPOS 傾向于提供較高程度的資源抽象,這不僅可通過(guò)支持軟件模塊性與資源隔離來(lái)提高應(yīng)用的便攜性、簡(jiǎn)化開(kāi)發(fā)流程,同時(shí)還能增強(qiáng)系統(tǒng)的穩(wěn)健性。這使 GPOS 成為諸如網(wǎng)絡(luò)、用戶(hù)界面以及顯示管理等通用系統(tǒng)組件的理想選擇。
然而,該抽象需要以系統(tǒng)資源的精細(xì)粒度控制作為代價(jià),以滿(mǎn)足信號(hào)處理代碼等高強(qiáng)度算法的計(jì)算性能要求。對(duì)于實(shí)現(xiàn)這種高級(jí)別的控制,開(kāi)發(fā)人員通常需要采用實(shí)時(shí)操作系統(tǒng) (RTOS)。
從嵌入式信號(hào)處理角度上講,我們通常要考慮兩種類(lèi)型的操作系統(tǒng),即通用操作系統(tǒng) Linux 與實(shí)時(shí)操作系統(tǒng) DSP/BIOS。Linux 可支持更高水平的抽象技術(shù),而 DSP/BIOS 則可提供更精細(xì)的控制。
為了充分發(fā)揮這兩種操作系統(tǒng)的優(yōu)勢(shì),開(kāi)發(fā)人員可采用系統(tǒng)虛擬機(jī),這就使編程人員可在同一 DSP 處理器上同時(shí)運(yùn)行 Linux 與 DSP/BIOS 系統(tǒng)。
?。ň幷咦ⅲ号c Java 虛擬機(jī)等特定編程語(yǔ)言使用的進(jìn)程虛擬機(jī)環(huán)境不同,系統(tǒng)虛擬機(jī)對(duì)應(yīng)于實(shí)際硬件,可在相同計(jì)算環(huán)境中與其它類(lèi)似實(shí)例相隔離的情況下執(zhí)行完整的操作系統(tǒng)。)
然而,我們要提出一個(gè)重要的問(wèn)題:為什么不使用分別運(yùn)行 Linux 與 DSP/BIOS 系統(tǒng)的 CPU+DSP 組合器件呢?畢竟,CPU 在運(yùn)行用戶(hù)接口控制代碼等方面具有更高的效率。此外,不同的內(nèi)核可避免虛擬化帶來(lái)的開(kāi)銷(xiāo)。不過(guò),在同一顆芯片上集成所有功能還是很有吸引力的,原因如下:
其一,當(dāng)今高性能 DSP 比前代 DSP 要強(qiáng)大得多,這樣可減少控制處理周期數(shù)。其二,大多數(shù)高性能 DSP 的通用性能均比前代產(chǎn)品更強(qiáng),從而可實(shí)現(xiàn)更高效的控制代碼處理工作。
如果所有功能都可集成在 DSP 上,那么其優(yōu)勢(shì)將更加出眾。更少的芯片數(shù)量可實(shí)現(xiàn)更低的成本與更小的占用空間。此外,由于不再需要在耗費(fèi)大量電力的處理器間數(shù)據(jù)傳輸,因此還可降低能耗。
進(jìn)度安排
操作系統(tǒng)最常見(jiàn)也是最有利的一個(gè)特性就是能同時(shí)執(zhí)行多個(gè)任務(wù)或多個(gè)線(xiàn)程。操作系統(tǒng)通過(guò)時(shí)間表來(lái)管理內(nèi)核處理,以連續(xù)執(zhí)行相關(guān)任務(wù)。
以往,嵌入式編程人員在使用 Linux 時(shí)會(huì)擔(dān)心實(shí)時(shí)性能較低的問(wèn)題。不過(guò),對(duì) Linux 內(nèi)核的最新增強(qiáng)顯著提高了其對(duì)系統(tǒng)事件的響應(yīng)能力,從而使其可滿(mǎn)足各種企業(yè)與個(gè)人以及嵌入式產(chǎn)品的需求。
Linux 可實(shí)現(xiàn)線(xiàn)程的時(shí)間切片以及優(yōu)先次序時(shí)間安排。時(shí)間切片技術(shù)是指在所有線(xiàn)程之間共享處理工作周期,以確保無(wú)封鎖線(xiàn)程。這種方法通常適用于用戶(hù)接口功能,以確保在系統(tǒng)超載、響應(yīng)較慢的情況下也不至于完全丟失用戶(hù)功能。
與此形成對(duì)比的是,優(yōu)先次序線(xiàn)程時(shí)間安排技術(shù)則可確保系統(tǒng)中最高優(yōu)先級(jí)線(xiàn)程的執(zhí)行,直至該線(xiàn)程放棄控制為止,這時(shí)下一個(gè)最高優(yōu)先級(jí)的線(xiàn)程即開(kāi)始執(zhí)行。
Linux 內(nèi)核在每次從內(nèi)核到用戶(hù)模式的轉(zhuǎn)換時(shí)都會(huì)對(duì)可用線(xiàn)程的優(yōu)先級(jí)進(jìn)行重新評(píng)估,這就意味著內(nèi)核最新評(píng)估的任何事件(如驅(qū)動(dòng)程序上數(shù)據(jù)的可用性)都能立即觸發(fā)新線(xiàn)程(調(diào)度器的時(shí)延響應(yīng)時(shí)間內(nèi))的轉(zhuǎn)換。由于確定了基于優(yōu)先級(jí)的線(xiàn)程,其通常用于必須滿(mǎn)足實(shí)時(shí)要求的信號(hào)處理應(yīng)用。
在推出 Linux 內(nèi)核 2.6 版本之前,制約實(shí)時(shí)性能的主要因素是 Linux 內(nèi)核會(huì)禁用中斷,且禁用時(shí)間有時(shí)會(huì)長(zhǎng)達(dá)數(shù)百毫秒。
就此而言,我們可以提高內(nèi)核實(shí)施的效率。因?yàn)樵诮弥袛鄷r(shí),代碼的某些部分無(wú)需重新進(jìn)入,而這會(huì)增加中斷響應(yīng)的時(shí)延。
目前的 2.6 版本提供了構(gòu)建選項(xiàng),可在整個(gè)內(nèi)核代碼中以更高的頻率插入中斷再啟用指令。Linux 社區(qū)通常將該特性稱(chēng)作先占內(nèi)核 (preempt kernel),盡管這會(huì)讓內(nèi)核性能略有下降,但卻能夠顯著提高實(shí)時(shí)性能。對(duì)于眾多系統(tǒng)任務(wù)而言,在先占性 Linux 2.6 內(nèi)核與實(shí)時(shí)線(xiàn)程結(jié)合使用時(shí),將能提供足夠的性能來(lái)滿(mǎn)足實(shí)時(shí)需求。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論