Linux设备驱动程序笔记(1)

Linux设备驱动程序笔记(1)

第一章 设备驱动程序简介

• 设备驱动程序的作用

   从一个角度看,设备驱动程序的作用在于提供机制,而不是策略。在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时,不要给用户强加任何特定策略。因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用程序。

   从另一个角度来看驱动程序,它还可以看作是应用程序和实际设备之间的一个软件层。

   总的来说,驱动程序设计主要还是综合考虑下面三个方面的因素:提供给用户尽量多的选项、编写驱动程序要占用的时间以及尽量保持程序简单而不至于错误丛生。

• 内核功能划分

  Unix系统支持多进程并发运行,每个进程都请求系统资源。内核负责处理所有这些请求,根据内核完成任务的不同,可将内核功能分为如下几部分:

   1.进程管理:负责创建和销毁进程,并处理它们和外部世界之间的连接。内核进程管理活动就是在单个或多个CPU上实现了多个进程的抽象。

   2.内存管理:内存是计算机的主要资源之一,用来管理内存的策略是决定系统性能的一个关键因素。

   3.文件系统:内核在没有结构的硬件上构造结构化的文件系统,而文件抽象在整个系统中广泛使用。

   4.设备控制:几乎每一个系统操作最终都会映射到物理设备上。

   5.网络功能:网络功能也必须由操作系统来管理,系统负责在应用程序和网络接口之间传递数据包,并根据网络活动控制程序的执行。另外,所有的路由和地址解析问题都由内核处理

   可装载模块:Linux有一个很好的特性:内核提供的特性可在运行时进行扩展。可在运行时添加到内核的代码被称为“模块”。Linux内核支持几种模块类型,包括但不限于设备驱动程序。每个模块由目标代码组成,可以使用insmod程序将模块连接到正在运行的内核,也可以使用rmmod程序移除连接。

• 设备和模块的分类

  Linux系统将设备分成三个基本类型:字符设备、块设备、网络接口。

   1.字符设备:字符设备驱动程序通常至少要实现open、close、read和write系统调用。字符设备可以通过文件系统节点来访问。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。

    2.块设备:和字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备上能够容纳文件系统。块设备和字符设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同对用户来讲是透明的。在内核中,和字符驱动程序相比,块驱动程序具有完全不同的接口。

    3.网络接口:网络接口由内核中的网络子系统驱动,负责发送和接受数据包,但它不需要了解每项事务如何映射到实际传送的数据包。网络驱动程序不需要知道各个连接的相关信息,它只要处理数据包即可。内核和网络设备驱动程序间的通信,完全不同于内核和字符以及块驱动程序之间的通信,内核调用一套和数据包传输相关的函数而不是read、write等。

• 安全问题

    1.系统中的所有安全检查都是由内核代码进行的,如果内核有安全漏洞,则整个系统就会有安全漏洞。运行正式发布的内核时,只有超级用户或成为超级用户的入侵者才能使用特权代码。

   2.驱动程序编写者应当尽量避免在代码中实现安全策略。安全策略问题最好在系统管理员的控制之下,在内核的高层来实现。驱动程序编写者还应当避免由于自身原因引入安全方面的缺陷。



   3.任何从用户进程得到的输入只有经过内核严格验证后才能使用。还要小心对待未初始化的内存:任何从内核中得到的内存,都必须在提供给用户进程或者设备之前清零或者以其他方式初始化,否则就可能发生信息泄露。



   4.应当小心使用从第三方获得的软件,特别是与内核相关时更是如此,这是因为源代码是开放的,每个人都可以修改和重新编译它。



   5.Linux内核也可编译为不支持模块方式,从而可以关闭任何模块相关的安全漏洞。可以通过权能机制禁止在系统启动后转载内核模块。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值