[计算机软件及应用]2012 第9章 Linux设备管理.ppt

[计算机软件及应用]2012 第9章 Linux设备管理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]2012 第9章 Linux设备管理

* * 内核模块的引入带来的问题(2) (4) 有些模块要求利用其他模块的功能,因此,内核要维护模块之间的依赖性。 (5) 内核必须能够在卸载模块时通知模块,并且要释放分配给模块的内存和中断等资源; (6) 内核版本和模块版本的不兼容,也可能导致系统崩溃,因此,严格的版本检查是必需的。 内核模块与应用程序加载的不同: 内核模块的加载只是向内核预先注册自己以便服务于将来的某个请求,只是加载了某项功能,而不需要马上执行 应用程序加载后就开始执行 内核模块不能使用外部函数库,只能使用内核导出的函数 应用程序可以使用外部函数库 内核模块只能运行在内核空间,并且不生成新的进程 应用程序运行在用户空间,一般一个应用程序生成一个新的进程 作业 为什么块设备需要缓冲cache的参与? 什么是设备驱动程序? 如何注册字符设备驱动程序? 为什么Linux使用设备转换表引导设备操作? 字符设备与块设备有何区别? 为什么一个I/O设备有两个设备号?一个是主设备号,另一个是次设备号。 将设备和普通文件统一命名的好处是什么? 了解Linux设备驱动程序的基础知识 掌握Linux驱动模块的构造和装载方法 * * 系统启动时,会把设备驱动程序挂载在/dev/目录下,Linux设备文件的创建和删除、目录层次都都由各个设备驱动程序管理 /dev/下面每个文件都动态对应了一个系统上存在的设备驱动程序。 新添加(或者删除)一个设备,比如u盘,系统就会自动在/dev目录中创建(或者删除)对应的设备节点。 * (3)建立设备文件 格式:mknod 文件名 类型 主设备号 从设备号 类型:c字符设备 b块设备 p管道设备 s 网络设备 实例:# mknod /dev/fdo b 1 2 * * 在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生; 块设备则利用一块系统内存作缓冲区。 字符设备和块设备可以像文件一样被访问,如驱动程序会实现open(打开)、close/release(关闭)、read(读取)、write(写入)等操作。网络设备是一类比较特殊的设备,对它的访问不通过对应的设备文件节点实现。 ②字符型设备和块设备的区别是系统对这两种类型设备的管理方式。应用程序对字符设备的每一个I/O操作,都会直接传递给系统内核对应的驱动程序;对块设备的操作,则经过系统的缓冲区管理,间接传递给驱动程序。 * 在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生; 块设备则利用一块系统内存作缓冲区。 * private_data:驱动程序可以把这个字段用于任何目的,或者忽略这个字段。驱动程序可以把这个字段指向已分配的任何数据结构 * * 设备特殊文件的 VFS 索引节点中包含设备号信息。如果通过系统调用访问设备,则内核可通过该 VFS 索引节点中的设备号信息调用适当的设备驱动程序。 Ioctl:控制设备,例如控制光盘的弹出。需要提供符合设备预先定义的命令字 Fsyn:实现内存与设备(如硬盘)的同步 Readv:进行读设备前需要验证地址是否可读 Writev: 在进行写操作之前,需要验证地址是否可写 * 对于不支持的操作,可以用NULL指针代替。 在documentation/devices.txt中定义了主设备号和次设备号的分配与指定 转换表定义了逻辑I/O和设备驱动程序之间的抽象接口。 * 对于不支持的操作,可以用NULL指针代替。 共255个元素 每个字符特殊文件使用的VFS inode和所有设备特殊文件一样,包含着设备的主从标志符。这个VFS inode由底层的文件系统来建立(如EXT2),其信息来源于设备相关文件名称所在文件系统。 * 对于不支持的操作,可以用NULL指针代替。 共255个元素 每个字符特殊文件使用的VFS inode和所有设备特殊文件一样,包含着设备的主从标志符。这个VFS inode由底层的文件系统来建立(如EXT2),其信息来源于设备相关文件名称所在文件系统。 * 因为内核要为块设备文件提供缓冲区,实际的读写操作由缓冲区协调处理,因此,需要驱动程序为缓冲区提供接口。 * 上述操作组成了驱动程序的下半部。驱动程序的上半部不能通过设备转换表得到。 设备驱动程序控制硬件的接口由2部分组成,一部分是设备的控制和状态寄存器,另一部分是处理机操作外设的指令和中断向量。中断服务例程是设备驱动程序的上半部。当设备发出中断请求时,内核识别发出中断的设备,然后转去执行中断服务里程,并唤醒等待该中断的下半部所描述的上述操作例程 为什么在block_device_operations接口中没有read和 write操作?因为所有涉及到块设备的I/O操作通常由

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档