您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > pdf南OS5-设备管理
第五章设备管理VI/O硬件原理VI/O软件原理V具有通道的I/O系统V缓冲技术V驱动调度技术V设备分配V虚拟设备VLinux设备管理VWindows2003I/O系统2计算机系统中,除CPU和内存外的绝大部分硬件均可称为外部设备(I/O设备)。I/O系统:I/O设备及其接口线路、设备控制器、通道和管理软件的总称。I/O操作:计算机的主存和外围设备介质之间的信息传送操作。各种设备的数据传输率、数据表示方式、传输单位、可能的错误和处理有很大不同。§5.1I/O硬件原理5.1.1I/O系统3U按信息交换单位分类:字符设备:低速、以字符为单位读写块设备:高速、以数据块为单位读写U按I/O操作特性分类:输入设备:键盘、鼠标、扫描仪、数码摄像机+视频捕捉卡、麦克风、温度/电流等传感器……输出设备:显示器、打印机、绘图仪、音箱……存储设备:通常是块设备,磁盘、磁带、光盘……顺序存取存储设备:严格依赖信息的物理位置进行定位和读写,如磁带。直接存取存储设备:存取任何一个物理块所需的时间几乎不依赖于此信息的位置,如磁盘。5.1.1I/O系统45.1.2I/O控制方式U四种I/O方式:U(1)轮询方式——CPU忙等I/O结束U(2)中断方式——通用,中断次数多U(3)DMA方式——常用于磁盘I/OU(4)通道方式——常用于大中型机、工作站等5a1、轮询——程序直接控制N设置Ready=0,Fault=0,Busy=0CPU从设备中读数据到主存Ready为1?设备控制器设置Ready=1,标识已发出一条命令从设备控制器的数据寄存器中读出一个字,送到主存YCPUNBusy为0?a设备控制器在状态寄存器中有一忙位Busy和一故障位Fault;命令寄存器中有一就绪位Ready。CPU忙等I/O结束Y设置Busy=1,把设备中一个字读出,写到数据寄存器中6a2、中断驱动的I/O进程发出请求数据的指令,该指令置设备中断允许位原进程阻塞,CPU重新调度其它进程运行CPU接到设备发来的中断信号后,执行中断处理程序,把数据传送给原进程,原进程就绪设备执行设备驱动程序,准备好数据并填满I/O控制器的数据缓冲区,然后向CPU发中断中断信号设备每I/O完一批字(设备控制器的数据缓冲区长度)后,以中断请求方式通知CPU,再由CPU把这些字送入内存,然后设备再I/O下一批字。中断可以使I/O设备之间以及I/O设备与CPU之间并行操作,但中断种类和次数太多时CPU负担重。7在内存和设备间直接(不经过CPU)进行块传送;仅在传送开始和结束时才需CPU干预,整块数据的传送是在控制器的控制下完成的。通过窃取CPU周期DMA控制器中包括:设备地址寄存器、控制寄存器、状态寄存器、数据缓冲、传送字(节)计数器、内存地址寄存器。CPU主存总线磁盘DMA控制器数据缓冲设备地址/控制/状态寄存器内存地址寄存器传送字(节)计数器a3、直接内存存取方式:DirectMemoryAccess8UDMA工作原理和过程:CPU向DMA控制器发出I/O数据块的指令;发出数据传送请求的进程阻塞;由DMA控制器完成设备的一个连续数据块与一个连续的内存区之间的直接数据传送(不断挪用CPU工作周期,将数据缓冲中的数据写入内存单元或从内存单元读出写到数据缓冲);I/O完一个数据块后DMA控制器向CPU发出中断;发出数据传送请求的进程被唤醒。a3、直接内存存取DMA方式:9UDMA与中断方式的区别:一个数据块传送完后发中断;由DMA控制器负责数据传送数据缓冲寄存器满时发中断;中断时由CPU负责数据传送VsUDMA方式优缺点:UI/O效率高;DMA传送时,CPU执行速度降低。对磁盘的I/O控制方式采用DMA,对打印机采用什么I/O控制方式?中断!a3、直接内存存取DMA方式:10U通道:带有专用I/O处理器的智能部件,可独立完成I/O操作。通道由CPU的I/O指令和通道程序控制。U通道程序中包含多条通道指令,每条通道指令完成一个连续内存区的I/O。U通道在完成多个数据块的I/O之后向CPU发出一次中断。a4、通道控制方式:主机I/O通道1I/O通道2控制器控制器控制器控制器设备设备115.1.3设备控制器U设备接口复杂烦琐(包含许多对机械和电子装置的启动、控制、监视、读取、传送数据等)UI/O设备的组成:机械部件打印机电缆电子部件即设备控制器(适配器adapter)接口12设备控制器的结构和功能:设备CPU内存总线设备控制器Buffer控制(命令)寄存器状态寄存器数据输入寄存器数据输出寄存器o端口地址译码(每个寄存器都有自己的端口地址)o在主机和设备间传送数据和控制/状态信号o在主机和设备间进行模/数、数/模转换o实现一些诸如设备内部硬件缓冲、数据(格式)转换、DMA等提高性能的任务。13UI/O软件总体设计要考虑的问题:设备独立(无关)性:OS与应用程序不依赖于具体使用的物理设备。在应用程序中使用逻辑设备名来请求使用某类设备,在实际执行时,由OS转换为某物理设备名。缓冲Buffer:平衡两个硬件之间的速度差异出错处理:尽量在低层软件解决设备错误。支持同步I/O和异步I/O方式同步I/O——阻塞式,进程被挂起,直到I/O结束,易于理解和使用。异步I/O——I/O执行时进程也同时运行,难于使用,I/O结束时,I/O子系统向进程发信号。5.2.1I/O软件的设计目标:高效率和通用性§5.2I/O软件原理149为实现通用性(用统一标准的方法来管理所有设备),将I/O软件的结构分为四个层次:低层与硬件相关,将硬件特征与高层隔开;高层提供友好而规范的用户接口。9中断处理程序9设备驱动程序9独立于设备的I/O软件9用户空间的I/O软件设备相关层设备无关层5.2.1I/O软件的设计目标15U中断处理程序位于OS底层,设备发出中断后,CPU响应中断。5.2.2I/O中断处理程序UCPU和中断控制器之间用总线上的中断请求线连接。CPU的中断请求线被I/O设备触发。Bus正确应答中断控制器165.2.3I/O设备驱动程序U设备驱动程序直接依赖于具体的硬件设备,它向OS内核(如I/O系统调用,I/O调度,Buffer,Cache,SPOOLing,错误处理等)隐藏了I/O控制器的差异。U设备驱动程序是OS中唯一知道各种I/O设备的控制器细节及其用途的部分。U设备驱动程序的结构:一个设备驱动程序通常由驱动程序头和若干个子程序组成,每个子程序实施一种或一组物理操作。每个驱动程序控制一种或一组接口相近的设备。17U设备驱动程序从与设备无关的软件中接收抽象的I/O请求,一条典型的请求是读某文件的第n块,把这个逻辑I/O请求转换成并发出设备能识别执行的物理命令,如设备名转化为端口地址、逻辑记录转化为物理记录、逻辑操作转化为物理操作等,然后监督命令的正确执行。U设备驱动程序的具体过程和内部策略见下页5.2.3I/O设备驱动程序18①确定是否接受设备请求:若请求合法,驱动程序闲则实施,忙则排入I/O请求队列。②确定发送什么物理操作命令:把I/O请求转换为具体的控制器操作序列。③向设备发出命令(实施物理操作):向设备控制器的有关寄存器写入命令。之后的真正I/O在设备控制器的控制下进行。④发出命令后的处理:等待物理操作的完成和监督其正确执行•通常设备驱动程序会被阻塞,直到设备控制器完成I/O或发生错误时发来中断把它唤醒;•但若I/O操作会很快完成,则设备驱动程序不必阻塞。•操作完成后,检查是否出错。⑤中断时设备驱动程序的处理:检查结果状态和传送结果给上层;若有错误则报告给调用者;唤醒等待该操作完成的阻塞进程;启动I/O请求队列中的下一操作或阻塞自己等待新请求。19基本任务:实现一般设备都需要的I/O功能,并向用户层提供统一的接口(系统调用和各类假脱机)。次设备号具体哪台设备主设备号设备驱动程序如:/dev/tty03i节点¾统一命名:同文件一样,每个设备都有一个字符串或整数的名字,这个名字不依赖于具体设备,因此用户不知道同一名字下具体设备所发生的改变(便于实现I/O重定向)。I/O时把设备的符号名映射到相应的设备驱动程序。5.2.4独立于设备的I/O软件20¾设备保护:对设备设rwx权限。¾向上层提供与设备实际容量、块长度、速度等无关的逻辑块。¾为设备分配和释放缓冲:当数据到达率和离去率不匹配时。¾独占设备的分配和释放:统一通过open和close来申请/释放。¾出错处理:当驱动程序无法处理或是与设备无关的错误时,如磁盘损坏、读文件或数据错时,向上层(OS、调用者或管理员)报告。由上层决定如何处理。5.2.4独立于设备的I/O软件21这部分I/O软件主要由以下两部分构成:9库函数:即I/O系统调用。如write、printf、getchar、scanf等,它们提供I/O操作所需的参数,并把I/O操作以一种格式表示出来。9各种SPOOLing(假脱机):运行于内核之外。如打印机、网络的邮件传输等。5.2.5用户空间的I/O软件22I/O软件的层次结构及各层的功能用户进程与设备无关的OS软件设备驱动程序中断处理程序硬件I/O请求I/O响应各层的功能发出I/O调用;格式化;假脱机;设备名解析和保护;设备申请进程阻塞和分配;缓冲;设置设备寄存器;启动I/O;检查设备状态和结果状态;I/O完成后,处理中断;报告错误;唤醒设备驱动程序;实施I/O操作23§5.3具有通道的I/O系统CPU通道通道地址字CAW通道命令字CCW通道状态字CSW控制器设备5.3.1通道命令和通道程序U通道程序中包含多条通道命令,每条通道命令完成一个连续内存区的I/O。24①用户发出I/O请求,CPU生成通道程序并放到内存中;首地址放到通道的CAW(通道地址字);②CPU发出“启动I/O”指令;③通道根据CAW取出第一条通道命令,放入CCW。逐条地执行完通道程序后向CPU发出中断。例:由5条通道命令构成的一个简单的通道程序。操作码P(通道程序结束位)R(记录结束标志)字符计数内存首址Write0080810Write001001024Write01605800Write002001850Write11200720由内存写到外存5.3.3通道启动和I/O操作过程25引入缓冲BUFFER:缓和CPU与I/O设备间速度不匹配、设备间数据大小差异的矛盾;提高CPU与I/O设备间并行性;减少对CPU中断频率,放宽响应时间限制;例:从远程终端来的数据仅用一位缓冲来接收,若通信速率为9.6kb/s,则中断CPU的频率=9.6kHz,即100μs中断一次,且CPU必须在100μs内响应。若设置一个8位的缓冲寄存器,则中断频率降为1/8,但响应时间仍只有100μs。若再增设一8位的寄存器,则响应时间放宽到800μs。§5.4缓冲技术265.4.1单缓冲:实现缓冲:专用硬件缓冲、用软件管理的内存缓冲。I/O设备输入缓冲OS传送用户进程工作区CPU计算TMC5.4.2双缓冲:用于生产者/消费者速度基本匹配时,两缓冲交替使用输入设备输入缓冲2OS输出缓冲1输出设备275.4.3多缓冲:•公用缓冲池:每个缓冲既可用于输入又可用于输出输入设备输入输入缓冲1CPU输入缓冲2输出缓冲1输出缓冲2输出设备输出southinhoutsin缓冲池eminout提取输入收容输出用户程序收容输入输入设备提取输出输出设备285.4.4缓冲区高速缓存BufferUNIX内核在内存建立数据缓冲区buffer(块高速缓存),专门用于保存昀近使用过的磁盘数据块。用“提前读入下一磁盘块”和“延迟写脏块”减少磁盘读写次数。所有缓冲被组织在两种双向链接循环队列中:空闲链表:保存缓冲buffer昀近将被再次分配的次序。散列队列:将缓冲buffer按设备号和块号来散列。空闲链表头blkno3mod4blkno2mod4blkno1mod4blkno0mod4284641759798501033599295.4.4缓冲区高速缓存当请求从指定文件读写数据时,根据给定的设备号
本文标题:pdf南OS5-设备管理
链接地址:https://www.777doc.com/doc-1307269 .html