設備節點被創建在/dev下,是連接內核與用戶層的樞紐,就是設備是接到對應哪種接口的哪個ID 上。 相當於硬盤的inode一樣的東西,記錄了硬件設備的位置和信息
在Linux中,所有設備都以文件的形式存放在/dev目錄下,都是通過文件的方式進行訪問,設備節點是Linux內核對設備的抽象,一個設備節點就是一個文件。應用程序通過一組標准化的調用執行訪問設備,這些調用獨立於任何特定的驅動程序。而驅動程序負責將這些標准調用映射到實際硬件的特有操作。
設備節點,驅動,硬件設備是如何關聯到一起的呢?
這是通過設備號實現的,包括主設備號和次設備號。當我們創建一個設備節點時需要指定主設備號和次設備號。應用程序通過名稱訪問設備,而設備號指定了對應的驅動程序和對應的設備。 主設備號標識設備對應的驅動程序,次設備號由內核使用,用於確定設備節點所指設備。
主設備號:
驅動程序在初始化時,會注冊它的驅動及對應主設備號到系統中,這樣當應用程序訪問設備節點時,系統就知道它所訪問的驅動程序了。你可以通過/proc/devices文件來查看系統設備的主設備號。
次設備號:
驅動程序遍歷設備時,每發現一個它能驅動的設備,就創建一個設備對象,並為其分配一個次設備號以區分不同的設備。這樣當應用程序訪問設備節點時驅動程序就可以根據次設備號知道它說訪問的設備了。
設備節點(設備文件):
Linux中設備節點是通過“mknod”命令來創建的。一個設備節點其實就是一個文件,Linux中稱為設備文件。有一點必要說明的是,在Linux中,所有的設備訪問都是通過文件的方式,一般的數據文件程序普通文件,設備節點稱為設備文件。
設備文件(設備節點),/dev目錄下是字符設備文件,和塊設備文件。
網絡設備注冊在/sys/class/net目錄下。
原文鏈接:https://blog.csdn.net/gongjiwei/article/details/82881029
總結:
非要說設備節點與主設備號有什么區別的話?
其實兩者根本就不是一個東西,沒有可比性。
linux下對設備的訪問是要通過文件的形式的,故設備都以文件形式存放在/dev目錄下,它沒有實際上的作用,就相當於是一個接口,為應用程序訪問設備提供的一個手段。那么應用程序可以通過設備節點訪問設備后,又怎么分辨哪類設備,哪個設備,由此有了主次設備號。在加載驅動時,可以不申請設備節點,只申請設備號,但是應用程序就無法訪問到驅動與設備了。