Linux内核模块

一、什么是模块

1、定义

可加载内核模块Loadable Kernel Module,LKM

 

2、为什么需要模块

LINUX内核是单内核,即内核模块是内核的一部分,和内核其他代码是一个程序。那么问题就来了:PC这样的通用平台会遇到什么问题?

 

3、模块融入内核的时机

A、静态编译进内核

内核模块代码跟内核其他代码一起编译。

 

B、运行时动态加载

内核先编译,然后再单独编译内核模块,内核模块运行时融入到内核。

 

二、内核模块

 

 

 

A、编译器完成

通过gcc扩展属性,告诉gcc链接的时候,把代码放到特定的区域去

B、编写代码完成

自己设计一个函数指针数组,编写代码,完成函数首地址存放


三、编译模块

linux内核是单内核,即内核一个程序,内核模块是这个特殊程序中的一部分

1、问题引入——进程空间

 

2、问题引入——共享库函数调用

 

 

 

3、内核模块使用内核函数


   

4、结论

编译一个内核模块,必须使用编译出模块要融入的内核的内核源码。

A、编译系统

编译器不一致,可能会造成代码运行问题

B、头文件声明

编译器帮助做语法检查

C、符号表

链接使用的内核函数,如果模块要导出函数或变量,知道在符号表合理的位置区域分配

 


四、加载内核模块

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值