?? 00000015.htm
字號:
?
+
獲得互斥信號量 <br />搜索空閑內存塊鏈表 <br /> 釋放互斥信號量 <br /> 值得注意的是搜索一個足夠大的空閑內存塊的可能的冗長的時間是發生在調用任務 <br />的上下文中。這是可以被高優先級的任務搶占的(除了信號量調用的這段執行時間)。 <br /> <br /> 在一個標準的統一結構的實時內核中,內存分配例程操作如下: <br /> 進入內核 <br /> 搜索空閑內存塊鏈表 <br /> 退出內核 <br /> 整個內存分配發生在內核級,任務搶占被禁止如果高優先級的任務在此時變為就緒 <br />態,它必須等待直到內核為低優先級的任務完成內存分配。有些操作系統甚至在這段市 <br />時間禁止中斷。 <br />任務級操作系統服務 <br /> Wind River System的實時操作系統,VxWorks,顯示了這樣設計的一個最小內核是 <br />能夠滿足需求的。VxWorks是現在能夠獲得的獨立于任何處理器的、擁有相當小內核的、 <br />功能完全的層次結構的實時操作系統。 <br /> VxWorks在內核之上提供了大量的功能。它包括內存管理,一個完整的BSD4.3網絡包 <br />,TCP/IP,網絡文件系統(NFS),遠程過程調用(RPC),UNIX兼容的鏈接加載模塊, <br />C語言的解釋界面,各種類型的定時器,性能監測組件,調試工具,額外的通信工具如管 <br />道、信號和套接字,I/O和文件系統,和許多功能例程。這些都不是運行在內核級,所以 <br />不會禁止中斷或任務搶占。 <br />可配置性 <br /> 實時應用有多種內核需求。沒有哪個內核有一個用來滿足每種需求的很好的設計折 <br />衷。然而,一個內核可以通過配置來調整特定的性能特性,裁減實時系統來最好地適應 <br />一個應用的要求。不可預見的內核配置性以用戶可選擇的內核排隊算法的形式提供給應 <br />用。 <br />排隊策略 <br /> VxWorks中的排隊庫是獨立于使用他們的內核隊列功能而執行的,這樣提供了將來增 <br />加新的排隊方式的靈活性。 <br /> 在VxWorks中有各種內核隊列。就緒隊列是一個按優先級索引的所有等待調度的任務 <br />隊列。滴答隊列用于定時功能。信號量是一個等待信號量的被阻塞任務的鏈表。活動隊 <br />列是一個系統中所有任務的一個先進先出(FIFO)的鏈表。這些隊列中的每個隊列都需 <br />要一個不同的排隊算法。這些算法不是被內嵌在內核中,而是被抽取到一個自治的、可 <br />轉換的排隊庫中。這種靈活的組織形式是滿足特殊的配置需求的基礎。 <br />可擴展性 <br /> 支持不可預見的內核擴展的能力與以有功能的可配置性是同樣重要的。簡單的內核 <br />接口和互斥方法使內核級功能擴展相當容易; 在某些情況下,應用可以僅利用內核鉤子 <br />函數來實現特定的擴展。 <br />內部鉤子函數 <br /> 為了不修改內核而能夠向系統增加額外的任務相關的功能,VxWorks提供了任務創建 <br />、切換和刪除的鉤子函數。這些允許在任務被創建、 上下文切換和任務被刪除的時候額 <br />外的例程被調用執行。這些鉤子函數可以利用任務上下文中的空閑區創建wind內核的任 <br />務特性。 <br />未來考慮 <br /> 有許多系統函數現在變得越來越重要,而且會影響到內核設計時的搶占延時。盡管 <br />涉及這些問題一個完整的討論超出了本文的范圍,但值得簡單地提一下。 <br />RISC/CISC <br /> 設計一個獨立于CPU的操作系統一直是一個挑戰。隨著新的RSIC(精簡指令集)處理 <br />器變得很流行,這些難度也加大了。為了在RISC環境下有效地執行,內核和操作系統需 <br />要有執行不同策略的靈活性。 <br /> 例如,考慮在任務切換時內核執行的例程。在CISC(復雜指令集,如680x0或80x86 <br />)CPU,內核為每個任務存儲一套完整的寄存器,在運行任務的時候將這些寄存器換入換 <br />出。在一個RISC機器上,這樣是不合理的,因為涉及到太多的寄存器。所以內核需要一 <br />個更精密復雜的策略,如為任務緩存寄存器,允許應用指定一些寄存器給特殊的任務。 <br /> <br />移植性 <br /> 為了使wind內核在他們出現的結構上能夠運行,需要有一個可移植的內核版本。這 <br />使移植是可行的,但不是最優化的。 <br />多處理 <br /> 支持緊耦合的多處理需求要求實時內核的內部功能包含,在理想情況下,在遠 <br />端請求內核調用,如從一個處理器到另一個處理器。這就要涉及到信號量調用(為處理 <br />器間同步)和任務調用(為了控制另一個CPU上的任務)。這種復雜性無疑會增加內核級 <br />功能調用的開銷,但是許多服務如對象標識可以在任務級執行。在多處理系統中保持一 <br />個最小內核的優點是處理器之間的互鎖可以有較好的時間粒度。大的內核將在內核級消 <br />耗額外的時間,僅能獲得粗糙的互鎖時間粒度。 <br />Ada <br /> Ada語言為實時系統設計者提供了象聚會機制這樣的任務原語。異常處理、任務終止 <br />、終止替換和聚會都將潛在地影響內核設計。這些操作可以由前面討論的任務和同步機 <br />制構造,為了保持減小搶占延時的設計目標,許多工作能夠在任務級執行。 <br />4. 實時內核的重要尺度 <br /> 許多性能特性被用來比較以有的實時內核,這些包括: <br /> 快速的任務上下文切換----由于實時系統的多任務的特性,系統能夠快速地從一個 <br />任務切換到另一個任務是很重要的。在分時系統中,如UNIX,上下文切換是在ms級。Wi <br />nd內核執行原始上下文切換只用17us。 <br /> 最小的同步開銷----因為同步是實現資源互斥訪問的基本方法,這些操作所引起的 <br />開銷最小化是很重要的。在VxWorks中,請求和釋放二值信號量僅用8us。 <br /> 最小的中斷延時----因為外部世界來的事件通常以中斷的形式到來,操作系統快速 <br />的處理這些中斷是很重要的。內核在操作一些臨界數據結構的時候必須禁止中斷。為了 <br />減小中斷延時,必須使這些時間最小化。Wind內核的中斷延時小于10us。 <br />搶占延時對性能指標的影響 <br /> 當許多的實時解決方案被提交給應用工程師時, 性能指標對于評估供應商的產品變 <br />得越來越重要。不象上下文切換和中斷延時,搶占延時很難測量。所以它很少在說明中 <br />被提及。但是考慮到當內核通常禁止上下文切換會長達數百微妙,而聲稱一個50us的固 <br />定長度(與任務個數無關)的上下文切換時間是毫無意義的。除了很難測量外,搶占延 <br />時可能會削弱許多性能指標的有效性。 <br /> Wind內核通過減小內核的大小來盡量減小搶占延時。 包含繁多功能的內核必將引起 <br />長的搶占延時。 <br />5. 結論 <br /> 為了滿足對實時內核日益增加的要求,如新的調度算法、多處理、Ada和RISC結構, <br />wind內核始終以靈活性和可配置性為設計目標。它所提供的優秀的運行性能將成為實時 <br />應用需求新標準。 <br />d <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 166.111.161.11] <br /><a href="00000014.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一頁</a><a href="index.htm">回到目錄</a><a href="#top">回到頁首</a><a href="00000016.htm">下一篇</a></h1></center><center><h1>BBS 水木清華站∶精華區</h1></center></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -