linux设备驱动程序学习笔记(一)

第一章       设备驱动程序简介

1.区分机制和策略是Unix设计背后隐含的最好思想之一。大多数编程问题实际上都可以分为两部分:“需要提供什么功能”(机制)和“如何使用这些功能”(策略)。如果这两个问题由程序的不同部分来处理,或者甚至由不同的程序来处理,则这个软件包更易开发,也更容易根据需要来调整。驱动程序同样存在机制和策略的分离问题。例如,软驱的驱动程序不带策略,它的作用是将磁盘表示为一个连续的数据库阵列。系统高层提供策略,比如谁有权访问软盘驱动器,是直接访问驱动器还是通过文件系统,以及用户是否可以在驱动器上挂载文件系统等等。既然不同的环境通常需要不同的方式来使用硬件,我们应当尽可能做到让驱动程序不带策略。

2.不带策略的驱动程序包括一些典型的特征:同时支持同步和异步操作、驱动程序能够被多次打开、充分利用硬件特性,以及不具备用来“简化任务”的或提供与策略相关的软件层等。实际上,不带策略是软件设计者的一个共同目标。

3.linux系统将设备分成三种基本类型:

  • 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序至少要实现open、close、read、write系统调用。字符设备可以通过文件系统节点来访问,比如/dev/tty1和/dev/lp0等,这些设备文件和普通文件的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。
  • 块设备:块设备也是通过/dev目录下的文件系统节点来访问。在大多数Unix系统中,进行I/O操作时块设备每次只能传输一个或多个完整的块,而每块包含512(或2的更高次幂字节的数据)字节。
  • 网络接口: 任何网络事物都经过一个网络接口形成,即一个能够和其他主机交换数据的设备。通常,接口是一个硬件设备,但也可能是一个纯软件设备,比如回环(loopback)接口。网络接口由内核中的网络子系统驱动,负责发送和接收数据包

4.除了设备驱动程序外,内核中其他一些功能也都模块化了。一个常见的例子是文件系统。一个文件系统类型决定了如何在块设备上组织数据,以表示目录和文件形成的树。文件系统不是设备驱动程序,因为没有任何实际物理设备同这种信息组织方式相关联。相反,文件系统类型是个软件驱动程序,它将底层数据结构映射到高层数据结构,决定文件名可以有多长以及在目录项中存储文件的哪些信息等等。

5.内核功能划分,Unix系统支持多个进程的并发运行,每个进程都请求系统资源,比如运算、内存、网络连接或其他一些资源等。

  • 进程管理:进程管理功能负责创建和销毁进程,并处理它们和外部世界之间的连接(输入和输出)。不同进程之间的通信是整个系统的基本功能,因此也由内核处理。概括来说,内核进程管理活动就是在单个或多个CPU上实现了多个进程的抽象。
  • 内存管理:内存是计算机的主要资源之一,内存在有限的可用资源之上为每个进程都创建了一个虚拟地址空间。
  • 文件系统:Unix中的每个对象几乎都可以当做文件来看待,内核在没有结构的硬件上构造结构化的文件系统。
  • 设备控制:几乎每个系统操作最终都会映射到物理设备上。除了处理器,内存以及其他很有限的几个对象外,所有设备控制操作都由与被控制设备相关的代码来完成,这段代码就叫做驱动程序。内核必须为系统中的每件外设嵌入相应的驱动程序,这包括硬件驱动器、键盘、磁带驱动器等。
  • 网络功能:网络功能也必须有操作系统来管理,因为大部分网络操作和具体进程无关:数据包的传入是异步事件。在某个进程处理这些数据包之前必须收集、标识和分发这些数据包。系统负责在应用程序和网络接口之间传递数据包,并根据网络活动控制程序的执行。另外,所有的路由和地址解析问题都由内核处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值