Linux系統裝置驅動程式概述

來源:互聯網
上載者:User

Linux作業系統網路驅動程式編寫

一.Linux系統裝置驅動程式概述
1.1 Linux裝置驅動程式分類
1.2 編寫驅動程式的一些基本概念
二.Linux系統網路裝置驅動程式
2.1 網路驅動程式的結構
2.2 網路驅動程式的基本方法
2.3 網路驅動程式中用到的資料結構
2.4 常用的系統支援
三.編寫Linux網路驅動程式中可能遇到的問題
3.1 中斷共用
3.2 硬體發送忙時的處理
3.3 流量控制(flow control)
3.4 調試
四.進一步的閱讀
五.雜項
一.Linux系統裝置驅動程式概述
1.1 Linux裝置驅動程式分類
Linux裝置驅動程式在Linux的核心原始碼中佔有很大的比例,原始碼的長度日
益增加,主要是驅動程式的增加。在Linux核心的不斷升級過程中,驅動程式的結構
還是相對穩定。在2.0.xx到2.2.xx的變動裡,驅動程式的編寫做了一些改變,但是
從2.0.xx的驅動到2.2.xx的移植只需做少量的工作。

Linux系統的裝置分為字元裝置(char device),塊裝置(block device)和網路
裝置(network device)三種。字元裝置是指存取時沒有緩衝的裝置。塊裝置的讀寫
都有緩衝來支援,並且塊裝置必須能夠隨機存取(random access),字元裝置則沒有
這個要求。典型的字元裝置包括滑鼠,鍵盤,串列口等。塊裝置主要包括硬碟磁碟片
裝置,CD-ROM等。一個檔案系統要安裝進入作業系統必須在塊裝置上。

網路裝置在Linux裡做專門的處理。Linux的網路系統主要是基於BSD unix的socket
機制。在系統和驅動程式之間定義有專門的資料結構(sk_buff)進行資料的傳遞。系
統裡支援對發送資料和接收資料的緩衝,提供流量控制機制,提供對多協議的支援。

1.2 編寫驅動程式的一些基本概念
無論是什麼作業系統的驅動程式,都有一些通用的概念。作業系統提供給驅動
程式的支援也大致相同。下面簡單介紹一下網路裝置驅動程式的一些基本要求。

1.2.1 發送和接收
這是一個網路裝置最基本的功能。一塊網卡所做的無非就是收發工作。所以驅
動程式裡要告訴系統你的發送函數在哪裡,系統在有資料要發送時就會調用你的發
送程式。還有驅動程式由於是直接操縱硬體的,所以網路硬體有資料收到最先能得
到這個資料的也就是驅動程式,它負責把這些未經處理資料進行必要的處理然後送給系
統。這裡,作業系統必須要提供兩個機制,一個是找到驅動程式的發送函數,一個
是驅動程式把收到的資料送給系統。

1.2.2 中斷
中斷在現代電腦結構中有重要的地位。作業系統必須提供驅動程式響應中斷
的能力。一般是把一個中斷處理常式註冊到系統中去。作業系統在硬體中斷髮生後
調用驅動程式的處理常式。Linux支援中斷的共用,即多個裝置共用一個中斷。

1.2.3 時鐘
在實現驅動程式時,很多地方會用到時鐘。如某些協議裡的逾時處理,沒有中
斷機制的硬體的輪詢等。作業系統應為驅動程式提供定時機制。一般是在預定的時
間過了以後回調註冊的時鐘函數。在網路驅動程式中,如果硬體沒有中斷功能,定
時器可以提供輪詢(poll)方式對硬體進行存取。或者是實現某些協議時需要的逾時
重傳等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.