- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux设备驱动程序示范
第十一章 设备驱动程序
11.1 概述
在Linux 中输入/输出设备被分为三类:块设备,字符设备和网络设备。这种分类的使用方法,可以将控制不同输入/输出设备的驱动程序和其它操作系统软件成分分离开来。例如文件系统仅仅控制抽象的块设备,而将与设备有关的部分留给低层软件,即驱动程序。字符设备指那些无需缓冲区可以直接读写的设备,如系统的串口设备/dev/cua0和/dev/cua1。块设备则仅能以块为单位进行读写的设备,如软盘,硬盘,光盘等,典型块的大小为 512 或 1024 字节。从名称使人想到,字符设备在单个字符的基础上接收和发送数据。为了改进传送数据的速度和效率,块设备在整个数据缓冲区填满时才一起传送数据。网络设备可以通过BSD套接口访问数据,关于这方面的内容我们将在第十二章中进行讨论。
在Linux中,对每一个设备的描述是通过主设备号和从设备号,其中主设备号描述控制这个设备的驱动程序,也就是说驱动程序和主设备号是一一对应的,从设备号是用来区分同一个驱动程序控制的不同设备。例如主IDE硬盘的每个分区的从设备号都不相同,/dev/hda2 表示主IDE硬盘的主设备号为3而从设备号为2。Linux通过使用主、从设备号将包含在系统调用中的设备特殊文件映射到设备的管理程序,以及大量系统表格中,如字符设备表—chrdevs。 块(磁盘)设备和字符设备的设备特殊文件可以通过 mknod 命令来创建,并使用主从设备号来描述此设备。网络设备也用设备相关文件来表示,但 Linux 寻找和初始化网络设备时才建立这种文件
11.1.1 I/O软件
I/O 软件的总体目标就是将软件组织成一种层次结构,低层软件用来屏蔽具体设备细节,高层软件则为用户提供一个简洁规范的界面。这种层次结构很好的体现了I/O 设计的一个关键的概念:设备无关性,其含义就是程序员写的软件无须修改就能读出软盘,硬盘以及CD-ROM等不同设备上的文件。
输入/ 输出系统的层次结构及各层次的功能如图11.1所示:
从图可以看出,用户进程的下层是设备无关的软件,在Linux 中,设备无关软件的功能大部分由文件系统去完成,其基本功能就是执行适用于所有设备的常用的输入/输出功能,向用户软件提供一个一致的接口。其结构如图11.2所示:
图11.1 输入/输出系统的层次结构及各层次的功能
图11.2 设备无关软件的功能
设备无关的软件具有以下特点:
· 文件和设备采用统一命名。设备无关软件负责将设备名映射到相应的驱动程序,一个设备名唯一地确定一个索引节点,索引节点中包含了主设备号和次设备号,通过主设备号可以找到相应的设备驱动程序,通过次设备号确定具体的物理设备。
·对设备提供的保护机制同文件系统一样都采用rwx权限。
·数据块的大小可能对于不同的设备其大小不一样,但操作系统屏蔽这一事实,向高层软件提供了统一的逻辑块的大小。
·为了解决数据交换速度的匹配问题,采用了缓冲技术,对于缓冲区的管理由文件系统去完成。
·块设备的存储分配也是由文件系统去处理。
·对于独占设备的分配和释放属于对临界资源的管理。
11.1.2 设备驱动程序
CPU并不是系统中唯一的智能设备,每个物理设备都拥有自己的控制器。键盘、鼠标和串行口由一个高级I/O芯片统一管理,IDE控制器控制IDE硬盘而SCSI控制器控制SCSI硬盘等等。每个硬件控制器都有各自的控制状态寄存器(CSR)并且各不相同。例如Adaptec 2940 SCSI控制器的CSR与NCR 810 SCSI控制器完全不一样。这些寄存器用来启动、停止、初始化设备以及对设备进行诊断。在 Linux 中管理硬件设备控制器的代码并没有放置在每个应用程序中而是由内核统一管理,这些处理和管理硬件控制器的软件就是设备驱动程序。Linux 内核的设备管理是由一组运行在特权级上,驻留在内存以及对底层硬件进行处理的共享库的驱动程序来完成的。
设备管理的一个基本特征是设备处理的抽象性,即所有硬件设备都被看成普通文件,可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写入设备。系统中每个设备都用一种设备特殊文件来表示,例如系统中第一个IDE硬盘被表示成/dev/hda。
那么,系统是如何将设备在用户视野中屏蔽起来的呢?图11.3说明了用户进程请求设备进行输入输出的简单流程。
图11.3 用户进程请求设备服务的流程
首先当用户进程发出输入输出时,系统把请求处理的权限放在文件系统,文件系统通过驱动程序提供的接口将任务下放到驱动程序,驱动程序根据需要对设备控制器进行操作,设备控制器再去控制设备本身。
这样通过层层隔离,对用户
您可能关注的文档
- 2012年造价工程师《工程造价管理基本理论与相关法规》冲刺试题练习单项选择二.doc
- 2012年造价工程师《工程造价管理基本理论与相关法规》冲刺试题练习多项选择七.doc
- 2012年造价工程师《工程造价管理基本理论与相关法规》冲刺试题练习多项选择三.doc
- 2012年造价工程师《工程造价管理基本理论与相关法规》冲刺试题练习多项选择二.doc
- 2012年造价工程师《工程造价管理基本理论与相关法规》冲刺试题练习多项选择四.doc
- 2012年高校北京录取分数排名与往年对比分析.doc
- 2012年造价工程师《工程造价管理基本理论与相关法规》冲刺试题练习多项选择五.doc
- 2012年高考理科综合化学考前冲刺试卷4.doc
- 2012年黑龙江省中考化学预测试卷4.doc
- 2012校本课程.doc
文档评论(0)