第十章Linux设备管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章Linux设备管理

* 第十章 Linux设备管理 §1 Linux设备管理 Linux 的设备管理的主要任务是控 制设备完成输入输出操作,所以又 称输入输出(I/O)子系统。 Linux 操作系统在设备管理中不但 提供了使用设备的统一接口,而且 把对设备的管理与文件管理统一起 来。 Linux把设备看作是特殊的文件,系 统通过处理文件的接口——虚拟文 件系统VFS来管理和控制各种设备。 系统经过VFS的转换完成对设备的 各种操作,而设备操作的具体实现 是由设备驱动程序完成的。 一.Linux设备管理方法 1.设备驱动程序 Linux操作系统把物理设备逻辑化, 仅向用户提供逻辑设备。 用户在程序中使用的是逻辑设备, 由系统内核建立逻辑设备与物理设 备的联系。 用户进程使用的设备与实际使用的 物理设备无关,称为设备独立性。 在Linux中设备被分为三类: 块设备 字符设备 网络设备 每类设备都有特有的管理控制方式 和不同的驱动程序。 设备驱动程序是由设备服务子程序 和中断处理程序组成 设备服务子程序包括对设备进行各 种操作的代码 中断处理子程序处理设备中断。 在操作系统的控制下,CPU通过执 行驱动程序来实现对设备底层硬件 的处理和操作。 驱动程序是与设备相关的。 设备驱动程序的代码并没有置于各 种设备的应用程序中,而是由内核 统一管理,并且在具有特权级的内 核态下运行。 设备驱动程序虽然是由设备生产厂 家开发的,但它却是Linux输入输 出子系统的一部分。 2.设备的识别 Linux操作系统对设备首先识别是字 符设备还是块设备。 按照设备使用的驱动程序不同而赋予 设备不同的主设备号。 使用同一个驱动程序的每种设备有一 个唯一的主设备号。 使用次设备号来区分一种设备中的各 个具体设备。 3.设备文件 Linux设备管理的基本特点是对物理 设备抽象化,把物理设备看成文件 采用处理文件的接口和系统调用来 管理控制设备。 Linux的设备又称为设备文件。 设备文件名一般由两部分组成: 第一部分2~3个字符,设备的种类 串口设备是cu,并口设备是lp, IDE硬盘是hd ,SCSI硬盘是sd, 软盘是fd 第二部分通常是字母或数字, 用于区分同种设备中的单个设备。 如hda1表示第一块的第1个分区 Linux使用VFS做为统一的操作接口 处理文件和设备。 每个设备也使用一个VFSinode描述。 对设备的操作也是通过对文件操作的 file_operations结构体来调用驱动程 序的设备服务子程序。 二.字符设备管理 在系统内核保持着一张字符设备注 册表,它由128个表项组成,每种 字符设备占用一个表项。 字符设备注册表的形态是一个静态 的结构数组chrdevs[ ], #define MAX_CHRDEV 128 static struct device_struct chrdevs[MAX_CHRDEV] = { { NULL, NULL }, }; struct device_struct { const char * name; struct file_operations * fops; }; 使用同一个驱动程序的每种设备有 一个唯一的主设备号。 注册表的每个表项与一个主设备号 对应。 chrdevs[ ]数组的下标值就是主设 备号。 三.块设备管理 块设备注册在系统的块设备注册表 中,块设备注册表是一个结构数组 blkdevs[ ]。 其元素也是device_struct结构: static struct device_struct blkdevs[MAX_BLKDEV] 块设备不直接对设备进行读写数据。 设备与内存之间的数据传送必须经 过缓冲。 只有在缓冲区内已没有要读的数据 或缓冲区已满而无写入的空间时, 才启动设备控制器进行设备与缓冲 区之间的数据交换 设备与缓冲区的数据交换是通过 blk_dev[ ]数组实现的: struct blk_dev_struct blk_dev[MAX_BLKDEV]; 与块设备注册表数组blkdevs[ ]类 似,每个块设备对应数组中的一项, 数组的下标值与主设备号对应。 *

文档评论(0)

ldj215322 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档