- 1、本文档共65页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.1linux设备管理概论
第10章 设备管理 Linux和其他操作系统一样,支持众多的、各式各样的外接设备。 但是,面对层出不穷的新硬件产品,必须有人不断编写新的驱动程序,以便让这些设备能够在 Linux 下正常工作,从这个意义上讲,讲述驱动程序的编写就是一件非常有意义的工作。 本章也涉及到Linux下设备管理的原则和方法。 举例来说,Linux下的驱动程序仅仅是为相应的设备编写几个基本函数,并向VFS注册就可以安装成功了。 当应用程序需要设备时,可以访问该设备对应的文件节点,利用VFS调用该设备的相关处理函数。 本章主要介绍了设备管理方面的有关知识: ◆ 系统管理设备的方式。 ◆ 驱动程序运作过程。 ◆ 驱动程序的具体实例。 10.1 设备管理结构 10.1.1 概述 设备管理即输入输出子系统,可分为上下两部分:一部分是上层的,与设备无关的,这部分根据输入输出请求,通过特定的设备驱动程序接口,来与设备进行通信。 另一部分是下层的,与设备有关的,常称为设备驱动程序,它直接与相应设备打交道,并且向上层提供一组访问接口。 设备管理的目标是对所有的外接设备进行良好的读、写、控制等操作。 首先要解决的问题就是怎样将任意的一个设备的所有操作进行归纳,设计出统一的接口。 内核常常使用设备类型、主设备号和次设备号来标识一个具体的设备。 但用户希望能用同样的应用程序和命令来访问设备和普通文件。 为此,Linux中的设备管理应用了设备文件这个概念来统一设备的访问接口。 简单的说,系统试图使它对所有各类设备的输入、输出看起来就好像对普通文件的输入、输出一样。 如图10-1所示,应用程序通过Linux的系统调用与内核通信。 图10-1 Linux内核体系结构 由于Linux中将设备当作文件来处理,所以对设备进行操作的系统调用和对文件操作的类似,主要包括open()、read()、write()、ioctl()、close()等。 应用程序发出系统调用指令以后,会从用户态转换到内核态,通过内核将open()这样的系统调用转换成对物理设备的操作。 10.1.2 字符设备与块设备 字符设备以字节为单位进行数据处理。字符设备通常只允许按顺序访问,一般不使用缓存技术。如鼠标,声卡等。 块设备以块为单位进行处理,块的大小通常为0.5KB到32KB等。 大多数块设备允许随机访问,而且常常采用缓存技术。 块设备有硬盘、光盘驱动器等。可以查看文件/proc/devices获得。 我们这里主要讨论字符设备,有兴趣的读者可参考其它书籍中有关块设备的内容。 10.1.3 主设备号和次设备号 设备管理中,除了设备类型(字符设备或块设备)以外,内核还需要一对称做主、次设备号的参数,才能唯一表示设备。 主设备号(major number)相同的设备使用相同的驱动程序,而次设备号 (minor number) 用来区分具体设备的实例。 例如,第一IDE接口上的所有磁盘及其分区共用同一主设备号3,而次设备号则为0,1,2,3 …。 10.1.4 Linux设备命名习惯: Linux习惯上将设备文件放在目录/dev或其子目录之下。 设备文件命名(通常由两部分组成)规则为:第一部分通常较短,可能只有2或3个字母组成,用来表示设备大类。 例如,普通硬盘如IDE接口的为“hd”,软盘为“fd”。第二部分通常为数字或字母用来区别设备实例。 例如,/dev/hda、/dev/hdb、/dev/hdc表示第一、二、三块硬盘;而 dev/hda1、/dev/hda2、/dev/hda3则表示第一硬盘的第一、二、三分区。 10.2 驱动程序 10.2.1 驱动程序基本功能 在Linux操作系统中驱动程序是操作系统内核与硬件设备之间的桥梁,它屏蔽了硬件的细节 (如总线协议、DMA操作等),在应用程序看来硬件设备只是一个特殊的文件。 驱动程序的基本功能为: 1. 对设备初始化和释放。如对音频设备而言包括向内核注册设备,设置音频的输入输出参数 (如采样频率、采样宽度等)、分配音频设备使用的内核内存等工作。 2. 对设备进行管理。包括实时参数设置以及提供对设备的操作接口。 3. 读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户空间、内核空间、总线及外设之间传输数据。 4. 检测和处理设备出现的错误。 10.2.2 驱动程序的运作过程 为了便于读者理解,在此结合大家比
文档评论(0)