《os09设备管理》ppt课件

上传人:tia****nde 文档编号:67810886 上传时间:2019-01-09 格式:PPT 页数:52 大小:601.81KB
返回 下载 相关 举报
《os09设备管理》ppt课件_第1页
第1页 / 共52页
《os09设备管理》ppt课件_第2页
第2页 / 共52页
《os09设备管理》ppt课件_第3页
第3页 / 共52页
《os09设备管理》ppt课件_第4页
第4页 / 共52页
《os09设备管理》ppt课件_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《《os09设备管理》ppt课件》由会员分享,可在线阅读,更多相关《《os09设备管理》ppt课件(52页珍藏版)》请在金锄头文库上搜索。

1、第五章 设备管理,着重于管理的软件部分设备驱动程序和中断处理程序,种类繁多的I/O设备,以信息交换的单位分类 块设备 字符设备 按设备的共享属性分类 独占设备 共享设备 虚拟设备,I/O系统中的基本概念,总线(ISA、PCI、SCSI、USB) 端口 设备控制器,一个典型的PCI总线系统,PC机的I/O指令与I/O空间,IN指令将外部I/O设备的数据传入到AL、AX或EAX。 OUT指令传送AL 、AX或EAX的数据到外部的I/O设备。 IBM PC用16位端口地址访问它的I/O空间。PC的I/O空间放在I/O端口为0000H03FFH的地方,但也有些适配卡使用的I/O地址可能超过03FFH。

2、 IBM PC机提供了外部设备的抽象接口,并将其固化在BIOS(基本输入/输出系统)中。,常用输入/输出设备端口,设备控制器,在对设备的操作中,需要持续地注意设备地状态。如果软件想要直接控制设备,需要在操作中不间断地监控设备的详细操作状态。这种监控大多是简单地观察状态、提供详细命令、修正小的错误等。这就是设备控制器要做的第二件事(将设备连接到总线是第一件事) 接口设计的目标就是使软件能操作设备(经由控制器),并能使其行为与设备同步。,逻 辑,状态,数据0,命令,数据1,数据n-1,概念化的设备控制器接口,I/O控制方式,在CPU和设备之间完成数据交换,主要有三种方式 轮询 中断 DMA,应用程

3、序内I/O与CPU的交迭执行,应用程序员希望单个的进程(线程)具有串行执行语义: read ( dev_ID, “%d”, x ); y= f(x); 读指令必须在下一条指令执行前完成。从进程的角度看,虚拟机要等候设备完成I/O操作后才能执行赋值语句。,多个线程间I/O与CPU的交迭执行,无论何时一个单线程执行I/O操作,它会将CPU让给另一个线程执行。,使用轮询的直接I/O,由CPU负责确定I/O操作何时完成,并在机器主存与设备控制器数据寄存器间进行数据传送。 CPU在向控制器发出一条I/O命令后,同时置busy位为1,然后CPU不断地循环检测busy位,直至busy位为0,空闲:软件可以放

4、置一个命令到命令寄存器,激活设备。 新的I/O命令的出现会引起控制器将busy设为1(工作),并开始工作。利用数据寄存器完成数据的输入和输出,进程通过检查状态寄存器来检测操作状态。 当I/O操作完成后(成功或失败),设备控制器清除busy标志位,而置done标志位(完成) 。当完成读操作后,设备会将数据拷贝到数据寄存器;当完成写操作后,数据会从控制器的数据寄存器拷贝到设备中。 如果在写操作后,设备的标志位均为0,那么就可以写新数据到控制器的数据寄存器;如果是从设备读数据,软件从控制器读取数据后,控制器清done位,表明设备空闲。,read (device, ),数 据,读函数,写函数,设备控制

5、器,命令,状态,数 据,硬件接口,系统接口,1、应用进程请求读操作,2、设备驱动程序查询状态寄存器,确定设备是否空闲;如果设备忙,则驱动程序循环等待知道设备空闲。,3、驱动程序把输入命令存入控制器命令寄存器,启动设备(设置状态位)。,4、驱动程序通过反复读取状态寄存器的值等待设备操作完成。,5、驱动程序拷贝控制器数据寄存器的内容到用户进程地址空间。,中断I/O,中断请求(由设备与CPU的中断连线) 中断向量定位中断请求到对应的中断处理程序 中断优先级 可屏蔽中断与不可屏蔽中断 中断处理程序负责处理中断请求 中断机制可以用于实现 异常 系统调用 中断处理程序可以分为两个部分 Top half B

6、ottom half,DMA I/O,中断驱动I/O是以字节为单位进程I/O,DMA允许以较大的数据块为单位传输。 DMA控制器 数据交换是在设备与内存间直接完成,无需CPU中转。,I/O系统,一方面,I/O设备种类繁多,另一方面,I/O系统必须为用户提供简单、一致的I/O接口 解决问题的方法是,操作系统隐藏或抽象大多数设备操作的细节,为用户提供几种的设备类型的访问 块设备 字符设备 时钟,I/O设备管理器抽象,设备管理器被分为两部分 设备无关部分(设备管理的基础设施) 设备管理中的数据结构 缓冲区管理(buffering、caching) spooling(独占设备的共享技术) 错误处理 访

7、问控制 设备相关部分 设备驱动程序,设备管理器的基础设施,基础设施使得OS可以提供一组公共的设备接口系统调用,并将对公共接口的调用转换到特定的设备驱动函数。是设备管理器的设备无关部分,缓冲,缓冲区可以缓和CPU和I/O设备间的速度不匹配的矛盾;减少CPU的中断频率,提高CPU和I/O设备间的并行能力。 单缓冲 双缓冲 循环缓冲 缓冲池,专有缓冲区,设备分配,当进程通过系统调用使用I/O设备时,设备分配程序按照一定的策略,将设备分配给请求用户。 设备分配的数据结构 分配策略(相关属性、算法、安全性分配) 设备分配是设备无关的。,设备独立性,应用程序独立于具体使用的物理设备。 逻辑设备和物理设备

8、增强设备分配的灵活性 易于实现I/O重定向 设备独立性软件,设备独立性软件,执行所有设备的公有操作: 设备的分配&回收 逻辑设备到物理设备映射 设备保护 缓冲管理 差错控制 向用户层软件提供统一的接口,I/O 接口,struct file_operations int (*seek) (struct inode * ,struct file *, off_t ,int); int (*read) (struct inode * ,struct file *, char ,int); int (*write) (struct inode * ,struct file *, off_t ,int)

9、; int (*readdir) (struct inode * ,struct file *, struct dirent * ,int); int (*select) (struct inode * ,struct file *, int ,select_table *); int (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long); int (*mmap) (struct inode * ,struct file *, struct vm_area_struct *); int (*open) (str

10、uct inode * ,struct file *); int (*release) (struct inode * ,struct file *); int (*fsync) (struct inode * ,struct file *); int (*fasync) (struct inode * ,struct file *,int); int (*check_media_change) (struct inode * ,struct file *); int (*revalidate) (dev_t dev); ,function i (),function i (),Dev_fun

11、c_i ( devID, . ) / processing common to all devices switch( devID) case dev0: dev0_func_i ( ) ; break; case dev1: dev1_func_i ( ) ; break; case devM: devM_func_i ( ) ; break; ; / processing common to all devices ,设备独立性软件,设备分配策略 逻辑设备到物理设备映射 差错控制 并发控制 缓冲区管理 ,可重配置的设备驱动程序,设备J的驱动程序,设备J的入口点,支持可重配置的设备管理器使用

12、一个间接表(对每个系统调用)来引用各自的设备函数。特定设备的表项可以用对设备驱动程序进行注册的实用程序在运行时建立。,Dev_func_i j ( ),Spooling 技术,输入缓冲区,输出缓冲区,输入井,输出井,输入设备,输出设备,磁盘,汤子瀛计算机操作系统page 166,设备处理方式,为每一类设备设置一个进程,专门用于执行这类设备的I/O操作 . 在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块), 供用户进程或系统进程调用。,设备驱动程序,设备驱动程序由一组函数组成,它抽象了一个特定设备

13、控制器的操作。一组设备驱动程序为所有的设备导出了相同的(或尽可能相似的)抽象。 设计者依据设备的细节,通过构建标准接口上的实现函数来实现抽象。,struct file_operations test_fops = NULL, read_test, write_test, NULL, /* test_readdir */ NULL, NULL, /* test_ioctl */ NULL, /* test_mmap */ open_test, release_test, NULL, /* test_fsync */ NULL, /* test_fasync */ /* nothing more,

14、 fill with NULLs */ ;,设备相关的驱动程序基础框架,每个设备控制器都提供一个特定的接口给软件:接口的细节包括了用来发送给设备的命令、状态和返回的错误报告、定时和软件如何控制设备的其他需求。 设备驱动程序使用特定的硬件接口来实现抽象的I/O操作。设备驱动程序被分为n个不同的函数,它们可以经由系统调用接口进行访问。,设备驱动程序的功能,接收由I/O进程发来的命令和参数, 并将命令中的抽象要求转换为具体要求,例如,将磁盘块号转换为磁盘的盘面、 磁道号及扇区号。 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。,发出I/O命令,如果设备空闲,便立

15、即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。 及时响应由控制器发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。,设备驱动程序的特点,驱动程序主要是指在请求I/O的进程与设备控制器之间的一个通信和转换程序。 驱动程序与设备控制器和I/O设备的硬件特性紧密相关, 因而对不同类型的设备应配置不同的驱动程序。 驱动程序与I/O设备所采用的I/O控制方式紧密相关。 由于驱动程序与硬件紧密相关, 因而其中的一部分必须用汇编语言书写。,使用中断的设备处理,在使用中断的情况下,设备管理的功能可以划分为4个部分: 初始化I/O操作的设备驱动

16、程序的“上半部分” 设备状态表 中断处理程序 设备处理程序,应用进程请求读操作 设备驱动程序的上半部分查询状态寄存器,确定设备是否空闲;如果忙,驱动程序等待直到空闲 驱动程序将输入命令存入控制器的命令寄存器中,启动设备 当设备驱动程序的上半部分完成它的工作,根据操作情况保存相应信息到设备状态表,如最初的调用地址、以及I/O操作的一些特定参数等。系统中的每个设备在表中都有对应的表项。操作完成后CPU就可以分配给其他进程使用了,因此,设备管理器调用进程管理器的调度程序运行,原进程的执行被暂停,执行输入指令的步骤,设备完成操作后,引起中断处理程序的运行 中断处理程序确定哪个设备引起中断,然后分支转移到该设备对应的设备处理程序执行 设备处理程序重新从设备状态表中找到等待I/O操作完成的进程状态信息 设备处理程序拷贝控制器数据寄存器的内容到用户进程空间 设备处理程序作为由应用程序激活的设备驱动程序的下半部分,将控制权返回给应用进程。,read

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号