字符设备、块设备、网络设备详解
字符設備、塊設備、網絡設備
設備模型
設備驅動的代碼量占內核程序的50%
設備模型的意義:
為了降低設備多樣性帶來的Linux驅動開發的復雜度,以及設備熱拔插處理、電源管理等,Linux內核提出了設備模型(也稱作Driver Model)的概念。設備模型將硬件設備歸納、分類,然后抽象出一套標準的數據結構和接口。驅動的開發,就簡化為對內核所規定的數據結構的填充和實現。
因為硬件設備多種多樣,使得設備驅動程序繁多,設備模型將硬件設備分類,抽象出一套標準的數據結構和接口。
一、字符設備
1.特點
一個字節一個字節讀寫的設備,
讀取數據需要按照先后數據(順序讀取)
常見的字符設備有鼠標、鍵盤、串口、控制臺和LED設備
每個字符設備在/dev目錄下對應一個設備文件,linux用戶程序通過設備文件(或稱設備節點)來使用驅動程序操作字符設備。
2.上層應用如何調用底層驅動?
1.應用層的程序open(“/dev/xxx”,mode,flags)打開設備文件,進入內核中,即虛擬文件系統中。
2.VFS層的設備文件有對應的struct inode,其中包含該設備對應的設備號,設備類型,返回的設備的結構體。
3.在驅動層中,根據設備類型和設備號就可以找到對應的設備驅動的結構體,用i_cdev保存。該結構體中有很重要的一個操作函數接口file_operations。
4.在打開設備文件時,會分配一個struct file,將操作函數接口的地址保存在該結構體中。
5.VFS層 向應用層返回一個fd,fd是和struct file相對應,這樣,應用層可以通過fd調用操作函數,即通過驅動層調用硬件設備了。
二、塊設備
1.特點
數據以固定長度進行傳輸,比如512K
從設備的任意位置(可跳)讀取,但實際上,塊設備會讀一定長度的內容,而只返回用戶要求訪問的內容,所以隨機訪問實際上還是讀了全部內容。
塊設備包括硬盤、磁盤、U盤和SD卡等
每個塊設備在/dev目錄下對應一個設備文件,linux用戶程序通過設備文件(或稱設備節點)來使用驅動程序操作塊設備。
塊設備可以容納文件系統,比如磁盤
三、網絡設備
1.特點
面向報文而不是面向流的,因此將網絡接口映射到文件系統的節點比較困難
內核調用一套和數據包相關的函數,而不是read,write。
網絡接口沒有像字符設備和塊設備一樣的設備號,只有唯一的名字,如eth0,eth1
主要通過socket操作,打開通常用命令行,
2.關系
網絡協議接口層:網絡層,IP
網絡設備接口層:將協議和各種網絡驅動連接在一起,這一層提供一組通用函數供底層網絡設備驅動使用。
網絡驅動接口層:數據鏈路層,提供對物理層訪問的設備驅動程序,這可以是各種介質,例如串口鏈路或以太網設備。包括LLC和MAC層
物理層:PHY層
————————————————
版權聲明:本文為CSDN博主「qq_27840681」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_27840681/article/details/77567094
總結
以上是生活随笔為你收集整理的字符设备、块设备、网络设备详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity Kinect运行 FaceT
- 下一篇: chrome设置socket5代理