- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件系统分析与设计07
LINUX设备驱动 武汉大学计算机学院 郑鹏 Email:pzheng51@163.com 设备驱动 Linux设备管理的主要任务是控制设备完成输入输出操作,所以又称输入输出(I/O)子系统。它的任务是把各种设备硬件的复杂物理特性的细节屏蔽起来,提供一个对各种不同设备使用统一方式进行操作的接口。 设备管理是Linux操作系统管理中最复杂的部分。 设备驱动 要支持某种设备,就必须提供这种设备的控制代码,而要把所有设备的控制代码都写到操作系统内核中,又必然会使内核变得过分庞大以至无法使用。这就提出了一个问题:必须为每种硬件设备提供控制代码,而又不能使操作系统内核过大。解决这个问题的思路是: 把与设备相关的控制代码从内核中分离出来,称这些代码为驱动程序。 在内核与驱动程序之间定义一个统一的接口,双方仅通过这个接口交互信息。 设备驱动 设备驱动程序和内核其余部分的关系: 设备驱动 从内核的角度看,驱动程序是一个设备的代表。 在Linux等操作系统中,所有的设备统一当文件来处理,称为设备文件。和其他文件一样,这种文件可以使用处理文件的标准系统调用打开、关闭和读写。 设备驱动 由于Linux中将设备当作文件来处理,所以对设备进行操作的系统调用和对文件操作的类似,主要包括open()、read()、write()、ioctl()、close()等。 应用程序发出系统调用指令以后,会从用户态转换到内核态,通过内核将open()这样的系统调用转换成对物理设备的操作。 设备驱动 Linux支持三类的硬件设备:字符、块和网络。 字符设备直接读写,没有缓冲区,例如系统的串行端口 /dev/cua0和/dev/cua1。 块设备只能按照一个块(一般是 512 字节或者 1024 字节)的倍数进行读写。块设备通过 buffer cache 访问,可以随机存取,就是说,任何块都可以读写而不必考虑它在设备的什么地方。块设备可以通过它们的设备特殊文件访问,但是更常见的是通过文件系统进行访问。一个块设备可以支持一个安装的文件系统。 网络设备通过 BSD socket 接口访问。 设备驱动 对设备的识别使用设备类型、主设备号、次设备号。 设备类型:字符设备还是块设备。 按照设备使用的驱动程序不同而赋予设备不同的主设备号。主设备号是与驱动程序一一对应的,同时还使用次设备号来区分一种设备中的各个具体设备。次设备号用来区分使用同一个驱动程序的多个设备。 设备驱动 Linux设备管理的基本特点是把物理设备看成文件,采用处理文件的接口和系统调用来管理控制设备。从抽象的观点出发,Linux的设备又称为设备文件。 设备文件也有文件名,设备文件名一般由两部分组成。 第一部分2~3个字符,表示设备的种类 第二部分通常是字母或数字,用于区分同种设备中的单个设备。 设备驱动 网络设备在Linux里做专门的处理。为屏蔽物理设备的多样性,Liunx对所有的网络设备抽象,并定义统一概念:接口。对于每一个已经驱动了的网络设备,都用一个struct net_device的数据结构表示。 网络设备与字符设备及块设备的不同在于: 网络接口不存在于Linux的设备文件系统/dev/中,而是在内核中用一个net_device数据结构表示。 网络设备在数据包发送和接收时,直接通过接口访问,而不需要进行文件的操作。 网络接口是在系统初始化的时候生成的,对于内核支持但不存在的物理设备,将不存在与之对应的net_device结构。 在系统和驱动程序之间定义有专门的数据结构skb_buff进行数据的传递。 1 设备驱动程序概念 设备驱动程序是内核的一部分,它由一组函数和一些私有数据组成,其中的大部分函数是对驱动程序接口的实现。驱动程序通过私有数据和函数控制设备,并通过驱动程序接口与内核的其他部分交互。驱动程序是与设备交互的唯一模块,一个驱动程序不与其它驱动程序交互,内核与驱动程序之间仅通过一个严格定义的接口交互。其优点: 可以将设备专用代码分离到一个独立的模块中 便于添加新设备 用户或厂商可以在没有没有内核源码的情况下添加设备 内核可以对所有设备一视同仁,通过相同的接口访问所有的设备。 1 设备驱动程序概念 Linux 有许多不同的设备驱动程序,但是它们都具有一些一般的属性: 内核代码(Kernel code) 设备驱动程序和内核中的其他代码相似,是 kernel 的一部分,运行在内核态。如果发生错误,可能严重损害系统。一个写错的驱动程序甚至可能摧毁系统,可能破坏文件系统,丢失数据。 实现标准的内核接口(Kernel interfaces) 设备驱动程序必须向 Linux 内核或者它所在的子系统提供一组函数来实现驱动程序接口。 使用标准的内核服务(Kernel mechanisms and
您可能关注的文档
- 2009-2010-2大学物理期中考试A.doc
- 吴忠三中2010—2011学年第一学期信息技术专用教室工作计划.doc
- Unit1topic3电子教案.doc
- 第十八届希望杯试题.doc
- 上海市地方标准制修.doc
- 函数的单调性_谢文利.doc
- 酸和碱复习教案.doc
- 教师制成评定程序.doc
- 7S管理学习资料(二).doc.doc
- 可怜娇妍性纯清千姿百态总是情.doc
- 市残联领导在市委巡察组巡察涉残领域工作动员会议上的表态发言.docx
- 市旅游发展集团关于“党的领导融入公司治理不够有效”专项整治回头看总结报告.docx
- 党课:永葆自我革命精神在正风肃纪中砥砺前行.docx
- 在2025年区委巡察组巡察区教育局党委工作动员会上的表态发言.docx
- 镇党委“三色先锋·旱码头引擎”党建品牌创建工作情况报告.docx
- 村党总支2025年上半年党建引领基层治理工作总结.docx
- 在县委新兴领域党建工作推进会上的讲话.docx
- 2025年村委换届选举大会工作方案.docx
- 党课:站稳政治立场,恪守纪律底线,争做对党忠诚、行有所止的青年干部.docx
- 在2025年公司半年纪检工作座谈会暨“三化”建设年行动推进会上的讲话.docx
文档评论(0)