分享
分销 收藏 举报 申诉 / 22

类型《Linux操作系统原理与应用》电子教案.ppt

  • 上传人:快乐****生活
  • 文档编号:14651780
  • 上传时间:2026-10-25
  • 格式:PPT
  • 页数:22
  • 大小:1.60MB
  • 下载积分:10 金币
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Linux操作系统原理与应用 Linux 操作系统 原理 应用 电子 教案
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第九章 设备驱动,设备驱动概述,设备驱动程序,专用I/O端口,字符设备驱动程序,块设备驱动程序,Linux,操作系统把设备纳入文件系统的范畴来管理,每个设备都对应一个文件名,在内核中也就对应一个索引节点,对文件操作的系统调用大都适用于设备文件,从应用程序的角度看,设备文件逻辑上的空间是一个线性空间(起始地址为,0,,每读取一个字节加,1,)。从这个逻辑空间到具体设备物理空间(如磁盘的磁道、扇区)的映射则是由内核提供,并被划分为文件操作和设备驱动两个层次,计算机中三个最基本的物质基础是CPU、内存和输入输出(I/O)设备,,文件操作是对设备操作的组织和抽象,而设备操作则是对文件操作的最终实现,设备驱动概述,对于一个具体的设备而言,文件操作和设备驱动是一个事物的不同层次。从这种观点出发,从概念上可以把一个系统划分为应用、文件系统和设备驱动三个层次,Linux,将设备分成两大类。一类是像磁盘那样以块或扇区为单位,成块进行输入输出的设备,称为,块设备,;另一类像键盘那样以字符(字节)为单位,逐个字符进行输入输出的设备,称为,字符设备,。,文件系统通常都建立在块设备上,设备驱动概述,进程,从普通文件的逻辑空间到设备逻辑空间的映射,从设备逻辑空间到设备物理空间的映射,从设备逻辑空间到设备物理空间的映射,设备1,设备2,设备n,进程,File结构,File结构,File结构,普通文件,文件系统层,设备文件,设备驱动层,应用层,设备驱动程序,:,处理和管理硬件控制器的软件,Linux,内核的设备管理是由一组运行在特权级上,驻留在内存以及对底层硬件进行处理的共享库的驱动程序来完成的,设备管理的一个基本特征是设备处理的抽象性,即所有硬件设备都被看成普通文件,可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写入设备,系统中每个设备都用一种设备文件来表示,设备驱动程序基础,图9.2 用户进程请求设备服务的流程,设备驱动程序基础,I/O端口,设备文件,中断处理,设备驱动程序框架,I/O 端口,设备驱动程序要直接访问外设或其接口卡上的物理电路,通常以寄存器的形式出现,外设寄存器也称为,I/O,端口,,通常包括控制寄存器、状态寄存器和数据寄存器三类,“内存映射(,Memory-mapped),”,方式:,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,“,I/O,映射(,I/O-mapped),”,方式,:,将外设的寄存器看成一个独立的地址空间,为对外设寄存器的读写设置专用指令,设备文件,设备文件用来表示,Linux,所支持的大多数设备,每个设备文件除了设备名外,,,还有类型、主设备号、次设备号这三个属性,设备文件是通过,mknod,系统调用创建的。其原型为:,mknod,(const char*,int,mode,dev_t dev),同一主设备号既可以标识字符设备,也可以标识块设备,一个设备文件通常与一个硬件设备相关联,或硬件设备的某一物理或逻辑分区。但有时,设备文件不会和任何实际的硬件关联,而是表示一个虚拟的逻辑设备。,中断处理,当设备执行某个命令时,设备驱动程序可以从查询方式和中断方式中选择一种来判断设备是否已经完成此命令,基于中断的设备驱动程序,指的是在硬件设备需要服务时向,CPU,发一个中断信号,引发中断服务处理程序执行,假定,要,实现一个简单的输入字符设备的驱动程序。当用户在相应的设备文件上发出,read(),系统调用时,一条输入命令就发往设备的控制寄存器。在一个不可预知的长时间间隔后,设备把一个字节的数据放在输入寄存器。设备驱动程序返回这个字节作为,read(),系统调用的结果。,根据功能,驱动程序的代码可以分为如下几个部分:,(,1,)驱动程序的注册和注销,(,2,)设备的打开与释放,(,3,)设备的读和写操作,(,4,)设备的控制操作,(,5,)设备的中断和查询处理,关于设备的控制操作可以通过驱动程序中的,ioctl,(),来完成。与读写操作不同,,ioctl,(),的用法与具体设备密切相关,设备驱动程序框架,字符设备驱动程序的注册,图9.4,struct device_struct,const char*name;,struct,*fops;,;,用于注册字符设备的数据结构为device_struct:,简单字符设备驱动程序举例,驱动程序的编译、运行、安装及测试,:,使用,makefile,文件编译驱动程序:,在命令行输入“,make-f test.,mk,”,,则驱动程序被编译,成一个可装载的“内核模块”,。如果编译成功,则把它安装到系统中去,安装和卸载驱动程序:,$,insmod,-f,chardev,.o,$,rmmod,test,创建设备文件,$,mknod,/dev/test c major minor,编写测试程序,内核使用主设备号来标识块驱动程序,但块主设备号和字符主设备号是互不相干的,它们具有各自独立的主设备号分配空间。,register_blkdev(),使用,block_device_operations,结构的指针,,该结构就是块驱动程序接口,块驱动程序的注册,struct block_device_operations,int(*open)(struct inode*,struct file*);,/*,打开块设备文件,*/,int(*release)(struct inode*,struct file*);,/*,关闭对块设备文件的最后一个引用,*/,int(*ioctl)(struct inode*,struct file*,unsigned,unsigned long);,/*,在块设备文件上发出,ioctl(),系统调用,*/,int(*check_media_change)(kdev_t);,/*,检查介质是否已经变化(如软盘),*/,int(*revalidate)(kdev_t);,/*,检查块设备是否持有有效数据,*/,;,注册和注销一个驱动程序模块时所要调用的函数及数据结构,加载模块时,,insmod,命令调用,init_module(),函数,该函数调用,register_,blkdev,(),和,blk,_init_queue(),分别进行驱动程序的注册和请求队列的初始化。,register_,blkdev,(),把块驱动程序接口,block_device_operations,加入,blkdevs,表中。,blk,_init_queue(),初始化一个默认的请求队列,将其放入,blk,_dev,表中,并将该驱动程序的,request,函数关联到该队列。,卸载模块时,,rmmod,命令调用,cleanup_module(),函数,该函数调用,unregister,_,blkdev,(),和,blk,_cleanup_queue(),分别进行驱动程序的注销和请求队列的清除,在内核安排一次数据传输时,首先在一个表中对该请求排队,并以最大化系统性能为原则进行排序。然后,请求队列被传到驱动程序的,request,函数,块设备的读写操作都是由,request(),函数完成,对于具体的块设备,函数,request(),是不同的。,所有的读写请求都存储在,request,结构的链表中,request(),函数从,INIT_REQUEST,宏命令开始,它对请求队列进行检查,保证请求队列中至少有一个请求在等待处理。如果没有请求,,,INIT_REQUEST,宏命令将使,request(),函数返回,任务结束,块设备请求,块设备驱动程序初始化时,由驱动程序的,init(),完成。为了引导内核时调用,init(),,,需要在,blk,_dev_init(),函数中增加一行代码,Mysdd,_init(),。,块设备驱动程序初始化的工作主要包括:,(,1,)检查硬件是否存在;,(,2,)登记主设备号;,(,3,)利用,register_,blkdev,(),函数对设备进行注册:,(,4,)将块设备驱动程序的数据容量传递给缓冲区,块设备请求,驱动程序内核级程序开发的场所,在,网上,,Linux,驱动程序的开发有大量的资料,Linux Device Driver,是最精典的参考书,读者自己开发一个鼠标驱动程序。,
    展开阅读全文

    开通VIP折扣优惠下载文档

    提示  咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。

    咨信网小贴示:
    1、浏览或下载可查看了解,请点击【咨信网告知】。
    2、下载文件中如有侵权或不适当内容,将立即纠正。
    3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
    4、开具发票登录电脑端申请,请点击【索取发票】。

    咨信网客服组:【微信客服】

    自信AI创作助手
    关于本文
    本文标题:《Linux操作系统原理与应用》电子教案.ppt
    链接地址:https://www.zixin.com.cn/doc/14651780.html

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork