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

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

2013-11-13 15:42:47  來源: Oracle 

  作者李宇
  
  與Linux API的兼容程度是評估這類實時系統的一個重要指標如果一個實時系統兼容了所有Linux API那麼就允許所有Linux上的應用程序和庫在其上運行使用因此這將會帶來一個巨大的好處所有在Linux上可用的第三方軟件均可以在其上使用當然開發一款這樣兼容所有Linux API的實時系統決不是件容易的事尤其是對於單個開發商來說
  
  所以大量的第三方軟件並不能很容易地移植到實時系統中來這點不足也使Linux的優勢大打折扣!
  
  
  雙核方法
  
  
  這種方法在同一硬件平台上采用了兩個相互配合共同工作的系統核心一個核心提供精確的實時多任務管理另一個核心提供復雜的非實時通用功能
  
  這種方法是通過在Linux操作系統的最底層增加一層實時核心層來實現的實時核心負責硬件管理並提供實時任務管理實時核心還用軟件模擬常規Linux系統對底層硬件的使用/禁止中斷而不是真正的操作中斷控制寄存器Linux核心被看做實時核心中優先級最低的任務來調度只有當沒有可運行的實時任務時Linux核心才被調度
  
  這種方法的一個關鍵所在是運行在常規Linux核心上的所有非實時任務必須是支持可搶占式調度的這樣才能做到對實時核心提供精確實時保證沒有任何影響由於實時核心非常小並不會增加整個系統的負載所有這些對開發實時性要求嚴格的實時軟件都提供了有力保障
  
  這種方法的弊端在於實時任務的開發是直接面向提供精確實時服務的小實時核心的而不是功能強大的常規Linux核心因此實時任務是運行在系統核心層的這就意味著這些實時任務可以運行在沒有內存保護的級別之上所以一個實時任務的錯誤可能會導致整個系統的癱瘓!更要命的是這些實時任務的開發由於面對的是小的實時核心而不能直接利用Linux API和第三方軟件及運行庫
  
  這種開發模式暗示我們必須要對應用進行靜態分解把它分解成實時部分和非實時部分在大多情況下這是件好事情它迫使開發人員將應用系統分解成實時子系統和非實時子系統兩部分但很顯然使用這種開發模式也限制了應用的類型!因為這種用二元論觀點看待實時系統的方法並不適合所有的應用在一些應用中實時部分和非實時部分的界線並不是十分分明期間可能存在著不同程度的軟實時部分
  
  這種方法的另一個不足之處是開發模式混合了實時應用的兩個不相干維度——功能需求和實時需求它要求應用的實時需求必須限制於由實時核心提供的功能需求限度以內而實時核心提供的功能支持非常有限當然我們也可以擴展實時核心的功能比如增加實時網絡功能等然而新增加的部分很有可能會重疊Linux核心已有功能而導致了不必要的系統膨脹並折損這種方法的價值
  
  
  修改核方法
  
  
  這種方法是基於已有Linux系統對實時軟件開發的支持進行源代碼級修改而使Linux變成一個真正的實時操作系統這種方法也是和Linux哲學相吻合的任何基於Linux核心源代碼修改的產品都要遵循GPL 協議對所有軟件人員開放源代碼一旦很多人認為它是有用的就會有人對它進行維護或者是混合在通用Linux核心中或者是單獨分出一個實時Linux分支
  
  這種方法的中心原則是精心選擇部分改動就可以滿足一系列相關Linux實時開發此外由於這些改動都是相對局部的不會從根本上改變Linux的核心而且一些改動還可以通過常規Linux的可加載模塊方式完成在需要時系統可以動態加載該功能模塊在不需要時還可以動態卸載該模塊
  
  比如修改之一是核心搶占式調度把核心從非搶占式變成搶占式是結構上的大變動並可能引起很多問題但很多問題已經在Linux支持SMP 的時候解決了因此核心的搶占式修改就可以簡單地利用SMP 掛鉤另一個修改點是前面提到過的使中斷處理句柄可調度還有一些修改是全局的例如修改系統時鐘服務來提供更高精度的心跳而不增加不必要的系統負載或者是提供在核心實現互斥機制來支持優先級繼承
From:http://tw.wingwit.com/Article/program/Oracle/201311/17179.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.