linux内核程序运行在哪里,linux内核 – 设备驱动程序代码在哪里执行?内核空间还是用户空间?...

第1部分

在Linux上,驱动程序在内核空间中运行.是的,正如你所说的那样,对此有重大的安全隐患.驱动程序中的大多数异常将占用内核,从而可能会损坏内核内存(带来各种后果). Buggy驱动程序也会对系统安全性产生影响,而恶意驱动程序可以做任何事情.

MacOSX和Window NT内核看到的趋势是用户空间驱动. Microsoft已经有一段时间推动了Windows Userspace Driver Framework,MacOSX长期以来为Firewire和USB驱动程序提供了用户空间API,并为许多USB外设提供了符合类别的驱动程序.在MacOSX上安装第三方内核模式设备驱动程序是非常不寻常的.

可以理解的是,Windows用于内核混乱的不良声誉可归因于与每个手机,相机和打印机相关的(通常质量差)的内核模式驱动程序.

Linux图形驱动程序几乎全部在用户空间中实现,内核驻留部分最少,Fuse允许在用户空间中实现归档系统.

第2部分

USB,Firewire,MCI(以及PCI-e)均具有枚举机制,通过该机制,总线驱动程序可以将该设备与驱动程序相匹配.实际上,这意味着所有设备都会公开描述它们的元数据.

元数据中包含的是DeviceID,VendorID以及设备提供的功能描述和相关的ClassID. ClassID便于通用Class Drivers.

在概念上,操作系统将尝试找到一个特别支持VendorID和DeviceID的驱动程序,然后回到支持ClassID的驱动程序.

匹配设备与驱动程序是Linux Device Model核心概念,匹配的精确匹配标准是特定总线驱动程序中的match()函数.

一旦设备驱动程序被绑定到一个设备,它使用总线驱动程序(或由它提供的寻址信息)执行读写操作.在PCI和Firewire的情况下,这是一个内存映射的IO地址.对于USB,它的总线寻址信息.

Linux Documentation tree提供了对Linux设备模型设计的一些了解,但并不是真正的入门级阅读.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值