熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

把Linux改造為實時操作系統(1)

2013-11-13 15:50:23  來源: Oracle 

  作者李宇
  
  過去很多嵌入式系統不是一個操作系統或者是提供商的專有核心或者是DOS操作系統的擴展顯然這些方法並不能適應今天嵌入式系統開發的要求!現有的一些商業實時操作系統盡管提供了很小的核心和多任務開發環境但性能並不理想也不符合現在實時嵌入式市場的需求
  
  因此人們把目光投向了通用操作系統(例如WindowsSolarisLinux)希望把它們改造為實時操作系統通常這些操作系統功能強大結構復雜易於軟件的二次開發實用性強並且提供編程人員熟悉的標准API此外這些操作系統也提供了一些對實時軟件開發的支持然而這些操作系統用於嵌入式系統的開發還存在不足嵌入式系統要求具備高可靠性滿足應用需求的可剪裁性以及比通用操作系統要求更高的實時性
  
  做為嵌入式系統開發的解決方案Linux在眾多通用操作系統中具有獨一無二的優勢
  
  首先Windows和Solaris等專有商業操作系統的剪裁受到商家的嚴格控制這大大限制了開發者的剪裁深度而Linux遵循GPL協議開放所有系統源代碼非常易於剪裁
  
  其次同其它開放源碼的通用操作系統(如FreeBSD)相比Linux在多種處理器開發板支持和軟件開發工具支持上有很強的優勢
  
  Linux最初也是作為通用操作系統而設計開發的但提供了一些實時處理的支持這包括支持大部分POSIX標准中的實時功能支持多任務多線程具有豐富的通信機制等
  
  Linux還提供符合了POSIX標准的調度策略包括FIFO調度策略時間片輪轉調度策略和靜態優先級搶占式調度策略其默認的調度策略是第三種Linux還提供了內存鎖定功能以避免在實時處理中存儲頁被換出也提供了符合POSIX 標准的實時信號機制
  
  一個致命問題是Linux在用戶態支持可搶占調度策略而在核心態卻不支持搶占式調度策略這樣運行在Linux核心態的任務(或系統調用)是不能被其它優先級更高的任務所搶占的這樣就會引起優先級逆轉問題另外Linux操作系統的中斷處理句柄是不可調度的不能依優先級高低調度而在實時系統中卻希望中斷處理句柄同實時任務一樣可以有優先級來被系統的調度程序所調度
  
  此外我們還關心和任務響應時間相關的時鐘精度以及由於資源共享而帶來的優先級逆轉問題Linux中硬件時鐘中斷的默認時間間隔是ms所有的軟件時鐘都是靠硬件來觸發的而簡單同步機制(互斥)不支持優先級繼承又很可能導致優先級逆轉
  
  
  獨立核方法
  
  
  Linux作為實時系統的獨立核方法是指設計一種完全獨立的實時核心但其API 與Linux核心相兼容這種方法的理論基礎是一款優秀的實時操作系統必須在其設計之初就充分考慮到系統實時性的要求並能夠提供符合標准的API這種實現方法對很多與POSIX 兼容的專有實時系統提供商很有吸引力
  
  這種方法的局限性是由於設計了一個完全獨立的實時核心而沒有使用原有Linux核心導致Linux系統的一些優勢難以繼承尤其是與Linux核心相關的一些優勢無法獲得比如Linux核心對大量硬件的廣泛支持Linux核心超群的可靠性穩定性等另外由於這種方法並沒有通過修改Linux核心代碼來開發實時核心而是在Linux系統之上重新設計了一個實時核心這樣的開發並不要求源代碼開放因此Linux一些基於開放源代碼的優勢也勢必受損最後一點任何基於Linux核心的開發成果也無法方便地應用到實時核心中
  
  當然這種實現方法也從Linux系統中得到了很多好處由於Linux系統的支撐實時核心就並不需要的去實現而且熟悉Linux系統的開發人員也可以很快地熟悉這種方法開發出的實時系統人們也會自然地想到用Linux系統做嵌入式系統的開發平台此外如果這種實時系統的API是Linux系統API子集的話我們還可以只在Linux主機上仿真進行應用程序的開發和調試免去了遠程調試之苦!
From:http://tw.wingwit.com/Article/program/Oracle/201311/17377.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.