linux驱动07:核心模块与应用程序的对比

图1 将模块链接到内核

内核编程和应用程序编程一点重要的不同之处在于各环境下处理错误的方式不同。

用户空间和内核空间

通常将运行模式称为内核空间和用户空间,两种模式具有不同的优先权等级,也有自己的内存映射(地址空间)。模块运行在内核空间,用于扩展内核功能,应用程序运行在用户空间,实现用户定义的功能。

Unix中,内核运行在最高级别(超级用户态),可以进行所有操作;应用程序运行在最低级别(用户态),处理器控制着对硬件的访问以及对内存的非授权访问。

一个驱动程序要执行两类任务:模块中的某些函数作为系统调用的一部分而执行,而其他函数负责中断处理。当应用程序执行系统调用或被硬件中断挂起时,Unix将执行模式从用户空间切换到内核空间。

内核中的并发

内核编程区别于常见应用程序编程的地方在于对并发的处理。

Linux内核代码(包括驱动代码)必须是可重入的,必须能够同时运行在多个上下文中。

其他

内核代码不能实现浮点运算。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值