• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于驅動程序的協議棧設計

    基于驅動程序的協議棧設計

    作者: 時間:2009-06-18 來源:網絡 收藏

    ,相比于傳統的任務的來說有兩點好處:(1)效率更高;(2)對于有多個棧的系統來說,有更大的兼容性。
    1 任務的方式
      在我們比較兩種方式的技術細節之前,我們必須了解它們。傳統的設計方式包括將置于實時或內核之上,但是大多數實時不提供網絡互連的框架。所以,的設計者們不得不利用實時提供的機制――Task。圖1說明了如何利用任務來實現一個三層間通信的協議。每一層被作為一個單獨的任務,外加任務間通信機制負責傳送數據和控制包上下通過,程序設計者負責定義層與層之間的接口和一個應用程序接口(API),以利于應用程序員傳送和接收數據。

    本文引用地址:http://www.czjhyjcfj.com/article/152454.htm

    在這里存在幾個效率不高的來源:首先,正如圖1中點線所說明的,當包在應用程序、上層的通信協議,以及網絡接口的設備之間交換時,下層的操作系統正忙于上下文切換,每一次實時操作系統掛起其中一個任務,恢復執行另一個任務,時間都浪費在存取任務上下文中,考慮到每一個包無論是發還是收,都要通過協議棧的每一層,上下文切換的確造成了巨大的浪費。另外,當數據和控制包在應用程序任務和網絡接口之間流動時,包含此類信息的緩沖區必然重復在任務間通信隊列加入或刪除。然而,這個系統開銷是很大的,這本身是由于系統在隊列操作時必然包括需與中斷和上下文切換隔離的臨界區。因此,不僅時間浪費于隊列操作,而且整個系統對一些重要的事件例如中斷的響應變得延遲。
    2 基于的方法
      另外一種選擇是將協議棧各層置于實時操作系統之中,圖2說明了基于此種方案,同樣的三層間通信協議是如何實施的。兩者之間的顯著區別在于:各個協議層是作為驅動程序模塊,而不是任務來實現的。

    另外一個改變在于:協議棧之上還有一個網絡服務模塊。加入這個模塊的目的在于將與協議無關的網絡特性抽象化。也就是說,它將應用程序設計者用來在協議棧間收發數據的應用程序接口(API)標準化,例如:你的嵌入式系統可能需要同時支持基于調制解調器接口的PPP連到一臺遠程計算機和一個紅外接口用來與本地計算機通信。然而程序設計者不必為兩個事件各自編程,它只需用網絡服務模塊提供API與其它計算機進行通信,唯一的區別在于通過哪個網絡接口而已。
      基于驅動程序方式的一個顯著優點就在于上下文切換的次數僅僅是基于控制臺應用程序的函數,并不基于協議層的數量。這樣一來就可以減少實時操作系統保存和恢復任務上下文的次數,因而空出時間作更有意義的事,例如執行應用程序代碼。
      另一個好處在于,數據和控制信息更簡單的在層與層之間傳輸,因為所有的協議層都處于同一個上下文中,所以相關的數據結構自動地為上下層所接受,結果你不必把他們在任務間隊列中傳送,由此產生的是,同時也避免了那些臨界區系統由此可改進中斷和優先級任務的響應時間。
    3 緩沖區拷貝
      緩沖區拷貝效率不高的第一個潛在因素在于:當數據在層與層之間傳輸時,數據緩沖區的分配、拷貝和釋放,這與協議棧的結構無關,僅與緩沖區本身的結構有關。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 龙川县| 宣恩县| 朔州市| 綦江县| 昭苏县| 宾阳县| 沧源| 法库县| 霍林郭勒市| 山东省| 长汀县| 南阳市| 如东县| 安顺市| 佛坪县| 中山市| 泊头市| 巴中市| 中阳县| 会昌县| 永州市| 黎平县| 迭部县| 山阳县| 沙坪坝区| 育儿| 改则县| 怀柔区| 波密县| 报价| 米脂县| 双鸭山市| 萝北县| 青龙| 石首市| 台中县| 临高县| 富裕县| 凉山| 嘉兴市| 阿克|