第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设备模型设计的一些了解,但并不是真正的入门级阅读.

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

  1. linux 内核 ide,Linux设备驱动程序学习(7)-内核的数据类型

    Linux设备驱动程序学习(7)-内核的数据类型 由于前面的学习中有用到 第十一章 内核数据结构类型 的知识,所以我先看了.要点如下: 将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正 ...

  2. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  3. linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间

    linux驱动程序一般工作在内核空间,但也可以工作在用户空间.下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们. Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,L ...

  4. linux 内核空间与用户空间 简介

    本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space). 内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4 ...

  5. Linux进程地址空间与进程内存布局详解,内核空间与用户空间

    Linux进程地址空间与进程内存布局详解 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据. 未初始化过的数据( ...

  6. 关于linux内核空间与用户空间的理解

    简介 现代计算机都有两种以上的运行模式(普通模式.特权模式),linux系统只有两层:高优先级模式(特权模式),低优先级模式(普通模式).linux系统在高优先级模式中运行系统内核代码以及与硬件密切相 ...

  7. AndroidM 内核空间到用户空间接口类型

    Android系统中, 驱动程序因商业需求分为运行在用户空间的hardware层以及运行在内核空间的驱动程序, 大多情况下内核驱动都需要提供用户空间访问的接口. Linux内核空间到用户空间的接口有主 ...

  8. Windows内核--内核空间和用户空间(3.6)

    内核喜欢抽象出句柄给用户空间 句柄, Handle, 表达处理.控制之意.内核不会直接暴露指针给用户空间,这样会增大内核风险.相反,内核抽象出Handle给用户态,不管是文件.进程.线程等对象,通过H ...

  9. linux内核--设备驱动程序(学习笔记)

    字符设备驱动 一个字符设备要能够工作,需要三部分配合: 有一个设备驱动程序的ko模块,包含中断处理函数.设备操作函数.模块初始化时,将设备号注册到内核的全局数据结构cdev_map中. /dev目录下 ...

  10. Linux内核空间和用户空间

    在Linux系统中存在进程的概念: 进程的分类: 用户进程:运行在用户空间的进程被称为用户进程 内核进程:运行在内核空间的进程被称为内核进程 进程的空间: 系统会为每一个进程分0-4G的虚拟寻址空间, ...

最新文章

  1. [leetcode] Binary Tree Preorder Traversal
  2. Ubuntu中Vim 中文乱码解决方法
  3. javascript中BOM介绍、屏幕尺寸、历史记录、URL解析、计算机信息获取、定时器、三大系列及兼容代码、封装动画函数、同步和异步
  4. java jdk 的环境变量_Java JDK14(Java 14)在Windows上安装与环境变量配置
  5. RDD之四:Value型Transformation算子
  6. ORACLE 两个表或两个结果集的数据对比常用的函数
  7. python语言的实验心得体会_爱的五种语言——“好妈妈”培训班家教情商课课堂纪实!...
  8. 辞退可以,暴力不行!
  9. 解题报告 poj 1087
  10. 基于springboot的社区物业系统
  11. 快速排序时间复杂度分析
  12. 机载激光雷达原理与应用科普(九)
  13. C语言中结构体所占内存空间
  14. CPU-显卡-硬盘性能天梯图排行榜源码
  15. 学到了林海峰,武沛齐讲的Day17-5 内置函数
  16. python抢淘宝的东西-Python实现淘宝秒杀功能
  17. mac java 配置
  18. 新手编程 编写一个方法,输出大于某个正整数n的最小的质数。
  19. FIR滤波器(1)- 基础知识
  20. 使用Mifare卡加密数据 笔记

热门文章

  1. 190709每日一句 以这样的方式去过每一天,你的生活将永远改变!
  2. 190529每日一句,放胆去梦想,努力去奋斗
  3. 281210每日一句
  4. unity常用的引用赋值一个GameObject的三种方法
  5. Atitit pagging翻页与按需加载图像 vue lazyload懒加载目录1.1. 翻最好就是不翻页直接加载一千数据咯 11.2. 使用VueLazyload 11.3. 五.更加方
  6. Atitit 艾提拉总结的操作硬件解决方案 目录 1.1. Atitit 列出wifi热点以及连接 1 1.2. 剪贴板 1 1.3. 屏幕 触摸与截屏 1 1.4. 性能 cpu 内存 硬盘 资源
  7. Atitit 提升开发效率几大策略 目录 1. 提升效率三原则 2 1.1. 更少的工作 2 1.2. 优化配置减少等待 2 1.3. 提升一次性处理能力 2 2. 方法提升 3 2.1. 分类优
  8. Atitti html5 h5 新特性attilax总结
  9. Atitit.aticmd v4  新特性q39 添加定时器释放功能
  10. Atitit.图片木马的原理与防范 attilax 总结