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