收藏 分销(赏)

第5章设备管理.pptx

上传人:人****来 文档编号:8739150 上传时间:2025-02-28 格式:PPTX 页数:156 大小:845.85KB 下载积分:20 金币
下载 相关 举报
第5章设备管理.pptx_第1页
第1页 / 共156页
第5章设备管理.pptx_第2页
第2页 / 共156页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,Booting,Post,BIOS,Partition boot,program,Loader,OS,ROM,RAM,POWER,ON,CMOS,Adapted from:,Operating Systems,(3,rd,Edition,Gary Nutt),第五章 设备管理,MANAGING I/O DEVICES,1,、没有,I/O,设备的计算机就像一个没有轮子的汽车,I/O,管理的重要性,2.I/O,性能经常成为系统性能的瓶颈,(1)CPU,性能不等于系统性能,响应时间也是一个重要因素,(2)CPU,性能越高,与,I/O,差距越大,弥补:更多的进程,(3),进程切换多,系统开销大,3.,操作系统庞大复杂的原因之一是:资源多、杂,并发,均来自,I/O,4.,理解,I/O,的工作过程与结构是理解操作系统的工作过程与结构的关键,5.I/O,技术很实用,6.,与其他功能联系密切,特别是文件系统,5.1 I/O,系统的组成,5.2 I/O,控制方式,5.3,缓冲管理,5.4,设备分配,5.5,设备驱动,5.6,磁盘存取设备管理,本章内容,5.1 I/O,系统的组成,5.1.1 I/O,设备分类,1.,按使用特性分,存储型设备,输入型设备(,外设,主机,),输出型设备(主机,外设),输入输出型设备,2.,按信息交换的单位分,块设备,以数据块为单位存储、传输信息,字符设备,以字符为单位存储、传输信息,3.,按外部设备的从属关系分,系统设备,指操作系统生成时,登记在系统中的标准设备,(如终端、打印机、磁盘机等),3.,按外部设备的从属关系分,用户设备,指在系统生成时,未登记在系统中的非标准设备。对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理。,如,A/D,,,D/A,转换器,,CAD,所用专用设备,4.,按传输速率,:,低速,(100KB/s),5.,按资源分配角度分,独占设备,在一段时间内只能有一个进程使用的设备,一般为低速,I/O,设备。(如打印机,磁带等),共享设备,在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘),虚设备,在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备。(将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率),为了提高资源利用率,如,SPOOLing,技术就使用了虚设备技术,用硬盘模拟输入输出设备。,SPOOLing,技术,为解决独立设备数量少,速度慢,不能满足众多进程的要求,而且在进程独占设备期间,设备利用率比较低而提出的一种设备管理技术,5.1.2,设备控制器,设备组成,I,O,设备一般由机械和电子两部分组成,把这两部分分开处理,以提供更加模块化,更加通用的设计,1.,设备,机械部分是设备本身,2.,设备控制器,电子部分叫做设备控制器或适配器。,在小型和微型机中,它常采用印刷电路卡插入计算机中,控制器卡上通常有一个插座,通过电缆与设备相连,控制器和设备之间的接口是一个标准接口,它符合,ANSI,、,IEEE,或,ISO,这样的国际标准,I/O,模块的一般结构,I/O,逻辑,数据寄存器,状态,/,控制寄存器,外部设备,界面接口,外部设备,界面接口,.,系统接口,外设接口,数据线,地址线,控制线,数据 状态 控制,数据 状态 控制,数据信号线,设备到控制器的接口,I/O,设备,状态信号线,控制信号线,控制逻辑,转换器,缓冲,到设备,控制器,5.1.2,设备控制器,控制器是,CPU,与,I/O,设备之间的接口;,接收从,CPU,发来的命令,并控制,I/O,设备工作。,控制器是一个可编址设备,例如,PC,中硬盘控制器的,I/O,端口地址为,1F01F7,。,从物理上看,控制器是一块接口卡或主板上的一个功能模块。,1.,设备控制器的组成,数据线,控制器与设备接口,CPU,与控制器接口,控制器与设备接口,1,地址线,控制线,I/O,控,制逻辑,控制器与设备接口,i,数据,控制,控制,/,状态,R,数据寄存器,状态,数据,控制,状态,.,.,I/O,设备的编址:,为了,CPU,便于对,I/O,设备进行寻址和选择,必须给众多的,I/O,设备进行编址,也就是给每一台设备规定一些地址码,称为设备号或设备代码,.,有两种寻址方法,专设,I/O,指令,.,例指令,IN,完成输入,指令,OUT,完成输出操作,.,其地址码指出,I/O,设备的设备代码,.,这是,I/O,空间独立于存储器空间的情况,即设备码的编码和存储器的存储单元的编码是平行存在的,.,利用访存,(,取数,/,存数,),指令完成,I/O,功能,.,使用这种方法时,从主存的地址空间中分出一部分地址码作为,I/O,的设备代码,当访问到这些地址时,表示被访的不是主存储器,而是,I/O,设备寄存器,(,例如,设备的数据缓冲器或设备的状态寄存器,).,这时,I/O,空间和存储器空间是合在一起的,即,I/O,设备和存储单元是统一编址的,.,80X86,是有专门的,I/O,指令,直接寻址设备码可达,512,个,.,输入输出设备,占用地址数,地址码,(16,进制,),硬盘控制器,16,32032FH,软盘控制器,8,3F03F7H,单色显示器,/,并行打印机,16,3B03BFH,彩色图形显示器,16,3D03DFH,异步通信控制器,8,3F83FFH,操作系统将命令写入控制器寄存器中,以实现输入输出,例如:,IBM PC,的软盘控制器可接收,15,条命令,,READ,、,WRITE,、,FORMAT,、,SEEK,、,RECALIBRATE,,命令可以带参数。它们被一起送入控制器的寄存器中,当控制器接受一条命令后,可独立于,CPU,完成指定操作,,CPU,可以转去执行其它运算。,命令完成时,控制器产生一个中断,,CPU,响应中断,控制转给操作系统。,CPU,通过读控制器寄存器中的信息,获得操作结果和设备状态,2.,设备控制器的功能,地址识别,:,识别,I/O,端口地址,使,I/O,操作与设备对应。,接收和识别命令指挥设备执行,接收,CPU,通过,I/O,总线发来的命令和参数,存储,在控制器中相应的控制寄存器中,并对它进行译码识别,转换,成适当的电信号,通过控制器与设备的接口向设备发送,指挥设备执行,特定的操作。,接收和记录设备的状态,接收,从设备发来的电信号,进行,转换,和解释,变为设备的状态信息,将此结果,记录,在控制器的状态寄存器上,供,CPU,了解。,数据交换、数据缓冲、差错控制,实现,CPU,控制器,设备,的,数据交换,从而实现了,CPU,到设备的数据传递和设备到,CPU,的数据传递。,举例,:,典型的设备控制器是磁盘控制器,它从,I/O,总线上接收发来的诸如“写这个数据块”之类的高级命令,并对它进行译码识别,转换成诸如“把磁头定位在正确的磁道上”和“把数据写入这个磁道”之类的低级磁盘操作的电信号,指挥磁盘驱动器执行这些操作,每执行一步都要将磁盘驱动器的发来的电信号进行转换和解释,变为设备的数据状态信息,将此结果记录在控制器的状态寄存器上,供,CPU,了解。,CPU,根据此状态信息确定下一步如何操作。,枢轴,柱面扇,柱面,磁道,扇区,磁头,移动臂,梁,5.1.3 I/O,通道,引入通道的目的,:为了使,CPU,从,I/O,事务中解脱出来,同时为了提高,CPU,与设备,设备与设备,之间的并行工作能力,原理,:,执行通道程序,向控制器发出命令,并具有向,CPU,发中断信号的,功能,。一旦,CPU,发出指令,启动通道,则通道,独立,于,CPU,工作。一个通道可连接多个控制器,一个控制器可连接多个设备,形成树形交叉连接,通道程序:,I/O,处理机:,由运算和控制逻辑,累加器,寄存器构成,有指令系统,由通道程序控制。,通道程序:,由通道指令组成;,由,CPU,按数据传送的不同要求自动生成;,放在主存中;,其在主存中的起始地址通知,I/O,处理机:,目态,(目态程序),管态,(,I/O,管理程序),通道,(运行通道程序),请求,I/O,转管指令,编制通道程序,启动通道,组织,I/O,操作,I/O,操作结束向,CPU,发出中断请求,响应,I/O,中断请求,登记或例外情况处理,CPU,t,管理程序,根据用户提供的参数(设备号、交换信息的起址、交换的字节数)编制通道程序;,将其放在内存的相应缓冲区中,起址,CAW,置于通道寄存器中;,执行“启动,I/O,”,指令,(SIO),使通道进入,通道选择期,(选择通道、子通道、设备控制器及设备),,寻找并启动相应的外部设备。,通道被启动后,,CPU,退出管态,返回目态继续执行目标程序,而通道则按照通道程序的要求组织整个,I/O,操作,进入,数据传输期,开始控制内存与设备之间的直接数据交换,直到数据传输结束(或出现非正常结束)才由,CPU,处理。,系统中还可以同时有多个通道分别运行自己的通道程序,控制所属的,I/O,操作,实现通道与通道、设备与设备之间的全方位并行。,通道类型,字节多路通道:,连接大量慢速外围设备而设置的,它可以,分时,地执行多个通道程序,当一个通道程序,控制,某台设备传送一个字节后,通道硬件就,控制转去执行,另一个通道程序,控制另一台设备传送信息,主要连接以,字节为单位的低速,I/O,设备,。如打印机,终端。以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节,通道类型,选择通道,选择通道:,以成组方式工作的,即每次传送一批数据,故传送速度很高。在这段时间内只能为一台设备服务。当这台设备数据传输完成后,再选择与通道连接的另一台设备。,主要连接磁盘,磁带等高速,I/O,设备。,通道类型,成组多路通道:,它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令。,主要连接高速设备。数据多路通道,实际上,是对通道程序采用多道程序设计的硬件实现。,3.,解决瓶颈问题,通道往往成为,I/O,的瓶颈如图,:,(p149,图,5-4),存储器,通道,1,通道,2,控制器,1,控制器,2,控制器,3,控制器,4,设备,1,设备,2,设备,3,设备,4,设备,5,设备,6,设备,7,存储器,通道,1,通道,2,控制器,1,控制器,2,设备,1,设备,2,设备,3,设备,4,改单通路为多通路解决瓶颈问题,(p150,图,5-5),总线:,将计算机系统中的各个子系统(,CPU,、内存、外设等)相互连接,且连接是共享的,好处:,低成本(一线多用)、灵活性(易于增加设备,),总线的缺点:,本身形成了通讯瓶颈,限制,I/O,吞吐量,总线分类:,数据总线、地址总线、控制总线,引入原因:,在设备与主机的硬连接上,引入总线,节省连线并提供配置扩充与改变时的灵活性;,5.1.4,总线系统,定义,总线上连接计算机各个部件的通信线路和相关的控制电路。,是微处理器芯片对外引线信号的延伸或映射,是微处理器与片外存储器及,I/0,接口传输信息的通路。系统总线信号按功能可分为三类:,地址总线(,Where,):指出数据的来源与去向。地址总线的位数决定了存储空间的大小。,数据总线(,What,)提供模块间传输数据的路径,数据总线的位数决定微处理器结构的复杂度及总体性能。,控制总线(,When,):提供系统操作所必需的控制信号,对操作过程进行控制与定时。,微机中常用总线:,ISA,总线:,工业标准总线,也叫,AT,总线,数据,16,位,EISA,总线:,扩展的工业标准总线与,ISA,总线兼容,数据线,32,位,VESA,总线:,1991,年推出的,32,位局部总线。,PCI,总线:,局部总线标准,数据线,32-64,位。,PC,系统总线发展,PC/XT,总线是,8,位总线标准,AT,总线提高到,16,位,增加了,C,D,插座,CPU,与控制器间通讯:,单总线模型(微机、小型机),多总线模型(中、大型机),控制器与,设备接口,磁盘控制器,打印机控制器,磁盘,驱动器,打印机,内存,CPU,扩充总线:,亦称设备总线,用于系统,I/O,扩充。与系统总线工作频率不同,经接口电路对系统总统信号缓冲、变换、隔离,进行不同层次的操作(,ISA,、,EISA,、,MCA),局部总线:,扩充总线不能满足高性能设备(图形、视频、网络)接口的要求,在系统总线与扩充总线之间插入一层总线。由于它经桥接器与系统总线直接相连,因此称之为局部总线(,PCI,)。,总线操作,总线一个操作过程是完成两个模块之间传送信息,启动操作过程的是主模块,另外一个是从模块。某一时刻总线上只能有一个主模块占用总线。,总线的操作步骤:,主模块申请总线控制权,总线控制器进行裁决。,主模块得到总线控制权后寻址从模块,从模块确认后进行数据传送。,数据传送的错误检查。,5.2 I/O,控制方式,程序,I/O,方式,中断驱动,I/O,控制方式,DMA,控制方式,I/O,通道控制方式,5.2.1,程序,I/O,方式,CPU,I/O,I/O CPU,CPU,忙等,循环检测,I/O CPU,CPU,内存,向,I/O,控制器发读命令启动输入机,置,busy=1,读,I/O,控制器状态,busy,检查状态,就绪,busy,=0,未就绪,busy,=1,出错,从,I/O,控制器中读入字,向存储器中写字,P152,图,5-7(a),完成?,N,Y,下条指令,从,输入机读字到,控制器,数据寄存器,5.2.2,中断驱动,I/O,控制方式,当某进程要启动某个,I/O,设备工作时,便由,CPU,向相应的,设备控制器,发出一条,I/O,指令,然后立即返回继续继续执行原来的任务。,设备控制器,便按该指令的要求去控制指定的,I/O,设备。此时,CPU,可以去做其它事情与,I/O,设备并行工作。,例如,在输入时,当,设备控制器,收到,CPU,发来的读命令后,便去控制相应的输入设备读数据。数据进入数据寄存器后,设备控制器,通过,中断控制器,和,控制总线向,CPU,发出中断信号,CPU,响应中断,读,设备,控制器状态检查是否出错,若无错,则通过数据总线从,设备,控制器中读出,数据,写入存储器。,P152,图,5-7(b),CPU,I/O,I/O CPU,I/O CPU,CPU,内存,向,I/O,控制器发读命令启动输入机,读,I/O,控制器状态,检查状态,就绪,出错,从,I/O,控制器中读字,向存储器中写字,P152,图,5-7(b),完成?,N,Y,下条指令,从,输入机读字到,控制器,数据寄存器,CPU,作其它事,响应中断,中断请求,中断控制器执行的操作,1.,监视,IRQ,线,检查出现的中断信号。,2.,如果在,IRQ,线上出现了一个中断信号:,a.,把接受到的信号转换成一个对应的中断向量。,b.,将中断向量存入中断控制器的一个,I/O,端口,允许,CPU,读中断向量。,c.,控制器向处理器的,INTR,引脚发出一个中断。,d.,等待,收到,CPU,发出中断应答信号,将中断向量放到数据线上,清,INTR,线。,3.,返回到第一步。,CPU,根据中断向量去执行,中断服务子程序,中断硬件机构采用级连的,8259A,实现,Linux,的中断机制,中断控制器包含的寄存器:,一个状态寄存器,(I/O,地址,0 x20,、,0 xa0):,实时记录设备的中断请求情况。初始时全为,0,一个屏蔽寄存器,(I/O,地址,0 x21,、,0 xa1):,每位对应一个设备,,0-,允许,,1-,屏蔽,通过读取状态寄存器的值了解设备的中断情况,设备驱动程序建立联系,Linux,为了将来自硬件设备的中断传递到相应的设备驱动程序,在驱动程序初始化的时,就将其对应的中断程序进行了登记。,通过调用函数,request_irq(),将其中断信息添加到结构为,irqaction,的数组中,从而使中断号和中断服务子程序联系起来。,request_irq(),函数原形,int request_irq(,unsigned int irq,/*,中断请求号 *,/,void(*handler)(int,void*,struct pt_regs*),/*,指向中断服务子程序*,/,unsigned long irqflags,/*,中断类型*,/,const char*devname,/*,设备的名字*,/,void*dev_id,/*,设备标识符*,/,),;,中断描述符表,(IDT),中断服务程序,(,及异常处理程序,),的入口地址依照中断,源位置组成,IDT,表,入口地址就是中断门,(,中断向量,),。,Linux IDT,表共有,256,个中断向量,即,0,至,255,其中,0,到,31,由,Intel,公司留给异常事件处理程序。,CPU,根据,IDT,表和中断源,可转入相应的中断服务程序,中断处理程序执行的四个基本操作,在内核栈中保存,IRQ,的值和寄存器的内容。,为正在给,IRQ,线服务的,PIC,发送一个应答,这将允许,PIC,进一步发出中断。,执行共享这个,IRQ,的所有设备的中断服务例程,(ISR),跳到,ret_from_intr(),的地址后中断结束。,把,IRQ,分配给,I/O,设备的一个例子,IRQ,中断向量 硬件设备,032,时钟,133,键盘,234PIC,级连,335,第二个串口,436,第一个串口,638,软盘,840,系统时钟,1143,网络接口,1244PS/2,鼠标,1345,数学协处理器,1446EIDE,磁盘控制器的一级链,1547EIDE,磁盘控制器的二级链,5.2.3 DMA(direct memory access),控制方式,DMA,控制方式的引入,中断方式是以字节,(,字,),为单位进行,I/O,的,每完成一个字节,(,字,)CPU,要处理一次中断,这种方法用于块设备效率极低,为了进一步减少,CPU,对,I/O,的干预,提高,CPU,与,I/O,设备的并行读引入,DMA,控制方式。,DMA,方式的特点为:,数据传送的基本单位是数据块。,数据是直接在设备,内存之间传送的。,仅在传送一个或多个数据块的开始和结束时才需要,CPU,对,I/O,的干预,传送工作本身是由,DMA,控制器完成的。,DMA,控制器的组成,主机与,DMA,控制器的接口,数据寄存器,(DR),内存地址寄存器,(MAR),数据计数器,(DC),命令,/,状态寄存器,(CR),DMA,控制器与块设备的接口,I/O,控制逻辑,DR,MAR,DC,CR,I/O,控,制,逻,辑,块设备接口,控制器与,内存,CPU,cout,DMA,方式从磁盘读入数据块的工作流程,:,P154,图,5-9,CPU,将读命令发送到控制器的寄存器,CR,将目标地址和数据计数送到,MAR,和,DC,中,将磁盘的源地址送至它的,I/O,控制逻辑上,启动,DMA,传送命令,先从磁盘读入数据字送到,DR,再挪用存储器周期将数据送到内存,存储器地址增加,1,字计数器,DC,减,1,DC=0,请求中断,CPU,做其他工作,CPU,读,DMA,的状态,CR,继续下条指令,响应,中断,N,Y,DMA,工作原理,窃取总线控制权,存放输入数据的内存起始地址,、,要传送的字节数送入,DMA,控制器的内存地址寄存器和传送字节计数器,;,中断允许位和启动位置成,1,启动设备。,发出传输要求进程进入等待状态,其他进程占据,CPU,。,DMA,控制器不断窃取总线控制权,数据不断写入内存。,传送完毕,发出中断信号。,CPU,接到中断信号转入中断处理程序处理。,中断处理结束,CPU,返回原进程或切换到新的进程。,DMA,方式与中断的主要区别,中断方式的数据传送到存储器是由,CPU,控制完成的。,而,DMA,方式的数据传送到存储器则不经过,CPU,由,DMA,控制器直接完成。,中断方式在设备控制器的数据缓冲寄存区满后,发中断请求,CPU,进行中断处理将缓冲区数据传送到内存。,而,DMA,方式则是在所要求传送的数据块全部传送到内存结束时,发中断请求,CPU,进行中断处理。,大大减少了,CPU,进行中断处理的次数和时间。,DMA,控制器按目标存储地址,从第一字,(,节,),开始,反复进行数据传送,(,窃取总线控制权,),每传一字节,计数器值减,1;,直到值为,0,时,发出中断请求,通知,CPU,操作完成。,CPU,提供,命令,被读块磁盘地址,目标存储地址,待读取字节数,DMA,工作示例,(以硬盘为例),CPU,发出命令后去处理其它任务。,MAR,DC,CR,内存,CPU,cout,磁盘,接口,DR,内存地址,计数器,命令,/,状态,I/O,控,制,逻,辑,5.2.4 I/O,通道控制方式,1.,通道控制方式的引入,DMA,方式传送的是连续的数据块。当需要一次读多个离散的数据块并将它们传送到不同的内存区域时。怎么办?,为了进一步减少,CPU,对,I/O,的干预引入通道控制方式,它是,DMA,方式的发展。,DMA,方式由控制器的,I/O,控制逻辑来执行读、写等,I/O,操作,只能传送一个连续的数据块。而通道方式则由通道内的通道程序来指挥控制器并由控制器执行,I/O,操作,比较灵活,能传送多个连续数据块。,2.,通道程序,通过执行通道程序,并与设备控制器共同完成对,I/O,设备的控制,通道程序的每条指令含如下信息,:,操作码,内存地址,计数,结束位,P,记录结束,R,通道可实现,CPU,、通道和,I/O,设备三者并行工作。,例:,操作,P R,计数 内存起始地址,Write 0 0 80 810,Write 0 0 140 1340,Write 0 1 60 5810,Write 0 1 300 2000,Write 0 0 250 1650,Write 1 1 250 2820,课后题,P 181 2,4,6,8,以一个具体的实例全面描述中断处理过程(如时钟中断、键盘中断等等)。,以,ISA,(或,PCI,)总线的,DMA,为例,说明,DMA,的工作过程。,(以上说明可以结合具体的操作系统),5.3,缓冲管理,为什么要使用缓冲?,由哪几种缓冲方式?,缓冲区处在何处?,缓冲区由谁管理?怎样管理?,5.3.1,为什么引入缓冲,缓和,CPU,与,I/O,设备速度不匹配的矛盾,减少对,CPU,的中断频率,放宽对中断响应时间的限制。,提高,CPU,和设备之间的并行性,5.3.2 I/O,缓冲方式,1.,单缓冲,(Single Buffer),块设备输入时,输入到缓冲区的时间为,T,OS,将数据从缓冲区传到用户区的时间为,M,CPU,处理这块数据的时间为,C;,显然,T,和,C,是可以并行的。,T,1,M,1,C,1,T,2,M,2,C,2,T,3,M,3,C,3,T,4,工作区,缓冲区,输入,(T),传送,(M),I/O,设备,处理,(C),用户进程,字符设备输入输出时,缓冲区用于暂存一行数据。,2.,双缓冲,(Doubel Buffer),为了加快,I/O,速度提高设备利用率,又引入了双缓冲机制,(,缓冲对换,Buffer Swapping);,如果,Csp,eflags,CS,eip,edi,esi,ebp,esp,ebx,edx,ecx,eax,pushf,pusha,movl%esp,kernel_sp,movl pcb-sp,%esp,popa,iret,stack pointer,Interrupt Servicing,CPU pushes eflags,CS,eip onto stack,Push process context onto stack,pusha,Save stack pointer in PCB,movl%esp,proc_stack,Load kernel stack pointer,movl kern_stack,%esp,Recover kernel context from stack,popa;popf,Return to dispatcher,Process,Kernel,Return address,ebp,eflags,edi,esi,ebp,ebx,edx,ecx,eax,&PCB,kernel_sp,pcb-sp,eflags,CS,eip,edi,esi,ebp,ebx,edx,ecx,eax,pushf,pusha,movl%esp,kernel_sp,movl pcb-sp,%esp,popa,iret,stack pointer,pusha,movl%esp,pcb-sp,movl kernel_sp,%esp,popa,popf,5.5.4 Linux,设备管理,提供一个统一而简单的,I/O,系统调用接口。,I/O,子系统可分为上下两部分:,下层,:,与设备有关的称为设备驱动程序。,上层,:,与设备无关的,根据,I/O,请求,通过特定设备驱动程序接口,与设备进行通信。,一、设备驱动程序基础,总线,I/O,空间,I/O,数据传送,字符设备与块设备,主设备号与次设备号,设备文件,设备驱动程序接口,1.,总线,CPU,和,I/O,设备是通过总线连接起来的。,总线定义了设备之间进行通讯的协议;,遵循同一种协议的硬件可在同一条 总线上协调工作。,常用,PC,总线:,ISA,、,VESA,、,EISA,、,PCI,等。,2.I/O,空间,计算机的,I/O,空间由所有设备的寄存器组成。,I/O,空间的配置分为两种情况:,I/O,空间与内存空间相互独立:如,intel386,I/O,寄存器作为内存的一部分:如,Motorla680 x0,对于,要使用专门的,I/O,语句:,inb,和,outb,Linux,系统所使用的,I/O,空间,可以查看文件:,/proc/ioports:,3.I/O,数据传送,查询、中断、,DMA,4.,字符设备与块设备,字符设备,:,按顺序访问,不使用缓冲技术。,块设备,:,随机访问,使用缓冲技术。,Linux,所使用的设备查看文件,:/proc/devices,5.,主设备号和次设备号,主设备号相同设备用相同驱动程序。,次设备号用来区分具体设备实例。,主设备号和次设备号共同来标识一个具体设备。,6.,设备驱动程序接口,I/O,子系统向内核其它部分提供了统一标准的设备接口,通过,结构,file_operations,实现。,struct file_operations,lseek(),;,/*,重新定位读写位置*,/,read();,/*,从设备中读数据*,/,write(),;,/*,向设备写数据*,/,readdir(),;,/*,无用,只用于文件系统,而非设备*,/,ioctl(),;,/*,控制字符设备*,/,mmap(),;,/*,将设备内存映射到进程地址空间*,/,open(),;,/*,打开并初始化设备,;,可以为,NULL,这样,每次打开设备总会成功,而且不通知设备驱动程序*,/,release(),;,/*,关闭设备,并释放资源*,/,fsync(),;,/*,实现内存与设备,(,如硬盘,),间的同步*,/,fasync(),;,/*,实现内存与设备,(,如鼠标,),间的异步通信*,/,check_media_change();,/*,用来检查设备介质,(,如软盘,),是否自上次操作后发生了变化,仅用于块设备*,/,revalidate();,/*,仅用于块设备,该函数与缓冲区有关*,/,;,Linux,内核为了将来自硬件设备的中断传递到相应的设备驱动程序,在驱动程序初始化的时候就将其对应的中断程序进行了登记,即通过调用函数,request_irq(),使中断号和中断服务子程序联系起来。函数原形为:,int request_irq(,unsigned int irq,/*,中断请求号 *,/,void(*handler)(int,void*,struct pt_regs*),/*,指向中断服务子程序*,/,unsigned long irqflags,/*,中断类型*,/,const char*devname,/*,设备的名字*,/,void*dev_id),;,/*,设备标识符*,/,request_irq(),函数,中断在驱动程序工作的过程中的作用,用户发出某种输入,/,输出请求,;,用驱动程序的,read(),函数或,request(),函数,将完成输入,/,输出的指令送给设备控制器,现在设备驱动程序等待操作的发生。,一小段时间以后,硬设备准备好完成指令的操作,并产生中断信号标志事件的发生。,中断信号导致调用驱动程序的中断服务子程序,它将所要的数据从硬设备复制到设备驱动程序的缓冲区中,并通知正在等待的,read(),函数或,request(),函数,现在数据可供使用。,在数据可供使用时,,read(),或,request(),函数现在可将数据提供给用户进程。,二、设备驱动程序的框架,1.,驱动程序的注册与注销,系统引导时,通过,sys_setup(),进行系统初始化。,而,sys_setup(),又调用,device_setup(),进行设备初始化。,设备初始化分为块设备初始化,blk_dev_init(),与字符设备初始化,chr_dev_init(),字符设备初始化通过,register_chrdev(),函数向内核注册,extern int register_chrdev(unsigned int Major,const char*name,struct file_operation*fops),若注册成功,内核就可向请求的进程提供操作的入口地址进而启动驱动程序进行工作,完成进程的请求操作。,注销函数,unregister_chrdev(unsigned int major const char*name),2.,设备的打开与释放,打开设备用,open(),完成,;,如打印机用,lp_open(),打开。,打开设备过程需要执行如下操作:,检查与设备相关的错误,如果是首次打开,则初始化设备,如果需要,分配且设置设备文件的私有数据,递增设备使用的计数器,释放设备是由,release(),完成的,递减设备使用的计数器,释放文件中的私有数据所占的内存空间,如果属于最后一个释放,则关闭设备,3.,举例:一个简单的字符设备,mouse,假设有一个进程打开,/dev/logibm,文件,(,主设备号为,10),VFS,调用主设备号为,10,的通用,open(),函数。,因为这类设备包括很多不同种类的设备,因此有一个名为,misc_open(),的函数。,这个函数根据次设备号装载一组更专用的文件操作。,最终结果是,该文件的,f_op,域指向,bus_mouse_fops,表,,并调用,open_mouse(),函数,检查总线鼠标是否被连接。,请求总线鼠标所使用的,IRQ,线,也就是,IRQ5,并注册,mouse_interrupt(),中断服务例程。,初始化一个类型为,mouse_status,的,mouse,数据结构,该结构存放总线鼠标的有关状态信息。这些状态信息包括哪个键被按下,以及最后一次读取设备文件之后鼠标指针的水平、垂直位移。,向,0 x23e,控制寄存器中写入,0,,从而启用总线鼠标中断,(,总线鼠标使用从,0 x23c,到,0 x23f,的,I/O,端口,),。,open_mouse(),函数,mouse,数据结构的填充是异步进行的,:,每次用户移动鼠标或者按下一个鼠标键时,鼠标控制器都会产生一个中断,从而激活,mouse_interrupt(),函数,;,该函数执行以下操作:,通过向,0 x23e,控制寄存器写入适当的命令,并从,0 x23c,输入寄存器中读取相应的值来查询鼠标设备的状态。,更新,mouse,数据结构。,向,0 x23e,控制寄存器中写入,0,来重新启用鼠标中断,(,鼠标中 断每次发生时,鼠标设备都会自动将其禁用,),mouse_interrupt(),函数,进程要读取,/dev/logibm,文件的内容才能获得鼠标的状态,;,每个,read(),系统调用最终都会调用,read_mouse(),函数,也就是文件操作的,read,函数,;,该函数执行以下操作,:,1.,查进程是否最少请求了,3,个字节,否则返回,-EINVAL,2.,检查对,/dev/logibm,的最后一次读操作之后鼠标状态是否有已发生变化,;,如果没有,就返回,-EAGAIN,。,3.,调用,disable_irq(),来禁止,IRQ5,的中断处理,读取,mouse,数据结构中所存放的值,;,然后通过调用,enable_irq(),来重新启用,IRQ5,的中断处理。,4.,最后一次读操作之后把代表鼠标状态,(,键状态,水平位置,垂直位置,),的,3,个字节写入用户态缓冲区,;,如果进程所请求的内容超过,3,个字节,就用,0,填充用户态缓冲区。,5.,返回所写字节的数量。,read_mouse(),函数,5.6,磁盘存取设备管理,5.6.1,磁盘性能简述,1.,磁盘的特点和结构,:,容量大,断电后仍可保存信息,存取速度较块,成本较低,可实现直接,(,随机,),存取,存取磁盘上任一物理块的时间不依赖于该物理块所处的位置。,盘设备由两部分组成,:,驱动部分,+,存储介质,(,磁盘,),磁盘以恒定转速旋转,磁臂沿径向驱动磁头移动到所要求的磁道上,并等待所要求的扇区开始位置旋转到磁头下,开始读写数据,在磁头和缓冲区间传输数据。,柱面,扇区,磁臂,磁头,磁道,2.,磁盘数据组织和格式,信息记录在磁道上,多个盘片,正反两面都用来记录信息,每面一个磁头,所有盘面中处于同一磁道号上的所有磁道组成一个柱面。,Track,Sector,Top View of a Surface,Rotating Storage,Cylinder,Platters,R/W,Heads,Note:Parallel Read/Write Drives,Activate All Heads Simultaneously,Surface Layout,Spindle,Surface,Tracks,Track,k,Sectors,Gaps,Adapted from:,Computer Systems:A Programmers Perspective,Platter View,Surface 0,Surface 1,Surface 2,Surface 3,Surface 4,Surface 5,Cylinder,k,Spindle,Platter 0,Platter 1,Platter 2,Adapted from:,Computer Systems:A Programmers Perspective,Disk in Action,Spindle,物理地址形式,:,磁头号,(,盘面号,),、磁道号,(,柱面号,),、扇区号,磁盘格式化的一种形式:,p172,图,5-22,每个物理扇区,600,个字节包含:,标识符字段 数据字段,Track#:,磁道号,Gap:,为间隙,Head#:,磁头号,Synch:,为定界符,Sector#:,扇区号,CRC:,用于校验,Gap,ID Field,Gap,Data Field,Gap,17 7 41 515 20,Synch,Track#Head#Sector#,CRC,1 2 1 1 2,Synch,Data,CRC,1 512 2,3.,磁盘类型:,磁盘分为硬盘和软盘,单片盘和多片盘,固定头磁盘和移动头磁盘等。,固定头磁盘,:,每个磁道设置一个磁头,所有磁头都被安装在一个刚性磁臂中,各磁头并行读写,磁头不需要机械移动,速度快但成本高,用于大容量硬盘上。,移动头磁盘,:,一个盘面只有一个磁头,变换磁道时需要移动磁头,速度慢但成本低,微机上配置的软盘和硬盘,(,温盘,),都采用这种结构。,活动硬盘,:,增加灵活性和便携性。,4.,磁盘访问时间(,Ta),寻道时间,Ts:,把磁头移动定位到指定磁
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

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

客服