久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux模塊指的是什么意思

165次閱讀
沒有評論

共計 1602 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 linux 模塊指的是什么意思的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

在 linux 中,模塊是一種能夠向 linux 內核添加設備驅動程序、文件系統以及其他組件的方法,是一些可以作為獨立程序來編譯的函數和數據類型的集合,可以通過靜態或動態的方法加載到內核空間。

本教程操作環境:linux7.3 系統、Dell G3 電腦。

linux 模塊是什么意思

模塊是一種能夠向 Linux 內核添加設備驅動程序、文件系統及其他組件的方法,它不需要重新編譯內核或者重啟系統。對于內核來講,它需要處理的就是模塊的裝載和卸載以及模塊間的依賴關系。因為模塊是在內核空間運行的,因此模塊必須使用內核提供的函數,我們也可以使用模塊來調用相應的內核函數,這屬于內核態編程的一種方式。模塊文件的本質是一種可重定位的二進制文件,一般以 *.ko 的形式出現。

Linux 模塊可以通過靜態或動態的方法加載到內核空間,靜態加載是指在內核啟動過程中加載;動態加載是指在內核運行的過程中隨時加載。一個模塊被加載到內核中時,就成為內核代碼的一部分。模塊加載入系統時,系統修改內核中的符號表,將新加載的模塊提供的資源和符號添加到內核符號表中,以便模塊間的通信。

模塊的使用

模塊的組成

Linux 內核模塊主要由以下幾個部分組成:

模塊加載函數(必須):當通過 insmod 命令加載內核模塊時,模塊的加載函數會自動被內核執行,完成本模塊相關初始化工作;

模塊卸載函數(必須):當通過 rmmod 命令卸載模塊時,模塊的卸載函數會自動被內核執行,完成與模塊加載函數相反的功能;

模塊許可證聲明(必須):模塊許可證(LICENSE)聲明描述內核模塊的許可權限,如果不聲明 LICENSE, 模塊被加載時將收到內核被污染的警告。

模塊參數(可選):模塊參數是模塊被加載的時候可以被傳遞給他的值,它本身對應模塊內部的全局變量;

模塊導出符號(可選):內核模塊可以導出符號 (symbol, 對應于函數或變量),這樣其他模塊可以使用本模塊中的變量或函數;

模塊作者等信息聲明(可選)。

一個模塊的示例:

// 內核頭文件
#include linux/module.h 
#include linux/kernel.h 
#include linux/init.h 
// 加載函數
static int __init init_hello_module(void){
 // 內核打印函數,linux 系統使用 dmesg 命令可以查看打印信息
 printk(KERN_INFO  Hello World\n 
 return 0;
// 卸載函數
static void __exit exit_hello_module(void){
 printk(KERN_INFO  Exit the Hello world Module!\n 
module_init(init_hello_module);
module_exit(exit_hello_module);
MODULE_LICENSE( GPL 
MODULE_AUTHOR( Eric 
MODULE_VERSION( v0.1 
MODULE_DESCRIPTION(TEST FOR MODULE

模塊對應的 Makefile 文件:

#Makefile
obj-m:=hello.o
KERNELBUILD:=/lib/modules/$(shell uname -r)/build
 make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
 make -C $(KERNELBUILD) M=$(shell pwd) clean

感謝各位的閱讀!關于“linux 模塊指的是什么意思”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計1602字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 金川县| 苏尼特右旗| 都安| 梁山县| 云梦县| 衡东县| 大丰市| 独山县| 宜黄县| 勃利县| 毕节市| 肇东市| 方城县| 赤峰市| 禹州市| 吴堡县| 湟中县| 浦江县| 东平县| 永顺县| 金沙县| 永福县| 太康县| 醴陵市| 沾化县| 鹤峰县| 永嘉县| 渑池县| 含山县| 阿城市| 尖扎县| 盐亭县| 余江县| 方正县| 泾阳县| 五河县| 平利县| 大同县| 瑞丽市| 额尔古纳市| 宁德市|