《设备驱动程序简介.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简史 Linux是类UNIX操作系统的一个分支,最初是由Linus(芬兰)于1991年为基于Intel80386的IBM兼容机开发的。 其构想源于改进另外一款类UNIX操作系统——Minix,开发一个更有效的UNIX个人计算机版本,Linus称它为Linux。 Linux通过Internet广泛流传,也通过Internet由上千名开发人员松散合作维护。 Linux内核树和发行版 Linux只是一个内核的标识,而内核只是操作系统中一个关键的部分,负责管理计算机上所有的硬件资源。 所谓发行版就是一些组织或个人将大量的自由软件收集起来,与内核一起打包,然后发售。例如平时所说的RedHat Linux,Turb Linux等。发行版的版本号与内核的版本号没有关联。 单一内核和微内核 单内核是由几个逻辑功能不同的部分组成的大程序。(一个程序,可基于一定原则 对其全部的数据和例程进行访问) 微内核只包括同步原语,简单的进程调度以及进程间通信机制,其它像内存管理,设备驱动和系统调用功能是在微内核之上的一些系统进程实现的。(各层之间的通信遵循一定的接口) 特点 微内核相对较慢,因为各层间的信息传递会有一定的消耗。但微内核功能模块化,易于移植到其它体系结构。代表是Windows 单一内核运行速度快,但占用内存多。使用“模块”的机制来弥补非模块化的缺点。代表是Linux 什么是设备驱动程序 设备驱动程序就是外部设备的软件抽象,或者说是软件表现 ,是系统看到的设备,是虚拟的设备。 一个外设的性能在很大程度上取决于驱动程序的性能。 驱动程序之于外部设备,犹如操作系统之于硬件环境。 驱动程序有什么用 Linux下的设备驱动程序都是一个个独立的“黑盒子”,使某个特定的硬件响应一个定义良好的内部编程接口,同时完全隐藏了设备的工作细节。用户对设备的操作通过一组标准化的系统调用来完成。驱动程序就是将这些调用映射到作用于实际硬件的设备特定的操作上(写寄存器命令)。 操作系统内核的功能 进程管理 内存管理 文件系统 设备控制 网络功能 操作系统内核的功能 进程管理:内核的进程管理活动就是在单个或多个CPU上实现多个进程的抽象。 内存管理:内核在有限的可用内存资源上为每个进程都创建了一个虚拟寻址空间。 操作系统内核的功能 文件系统:Linux(Unix)中的每个对象(包括设备)几乎都可以被看作文件。内核在没有结构的硬件上构造结构化的文件系统,所构造的文件系统抽象在整个系统中被广泛使用。另外,Linux支持多种文件系统类型,如符合Linux标准的ext2文件系统和常用的FAT文件系统等。 操作系统内核的功能 网络功能:大部分网络操作都和具体进程无关――数据包的传入是异步事件 。所以网络功能也必须由操作系统来管理 设备控制:几乎每个系统操作最终都会映射到物理设备上。除了处理器、内存以及其它很有限的几个实体外,所有设备控制操作都由与被控制设备相关的代码来完成,这段代码就叫做设备驱动程序 模块化的驱动程序 为了使系统更有效的运行,Linux支持内核的动态扩展,即在系统运行时给内核增加新的功能(模块)。 驱动程序就是几个可以模块化的功能之一。这也是Linux下驱动程序与Windows下驱动程序的最大区别。 什么是模块 模块是一段没有链接的目标代码(.o),它可由insmod程序动态的链接到正在运行的内核。链接后,它就成了内核的一部分,直到用rmmod程序解除链接。 和用户函数库的动态链接有些相似。但函数的功能在连接前就已明确,而模块连接时才注册自己的功能。 核心模块与应用程序的对比 世界上最简单的驱动程序 #define MODULE #include linux/module.h int init_module(void) { printk(“1 Hello World !\n”); return 0; } void cleanup_module(void) { printk(“1 Goodbye !\n”); } root# gcc –c helloworld.c root# insmod helloworld.o Hello World ! root# lsmod Module Size Used by helloworld 464 0 (unused) …… root# rmmod helloworld Goodbye ! 设备的分类 字符设备 块设备 网络接口设备 字符设备 字符设备是能够像字节流(例如文件)一样被访问的设备,一般不使用缓存技术。 字符设备驱动程序实现这种特性至少需要实现open、close

文档评论(0)

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

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

1亿VIP精品文档

相关文档