您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统原理8-IO管理
12第八章I/O管理3第八章输入输出管理8.1I/O管理的概念8.1.1引言计算机外部设备在计算机系统中除CPU和内存储外所有的设备和装置称为计算机外部设备(外围设备、I/O设备)。48.1I/O管理的概念存储设备:用来存放各种信息的设备称为存储设备,例如,软盘、硬盘、光盘和磁带等;I/O设备:用来向计算机输入和输出信息的设备,如键盘、鼠标、显示器、打印机等。在现代计算机系统中有些设备既可以做存储设备,也可以做I/O设备,例如,软盘、硬盘等。I/O管理就是设备管理,它是操作系统的一个重要的组成部分,负责管理系统中所有的外部设备。58.1I/O管理的概念计算机外部设备种类繁多,特性各异。主要表现在以下几个方面:1.速度不同的外部设备的传输速度的差别相当大,如键盘的传输速度不过几十,上百个字符,而磁盘的传输速度则是60万字节/每秒。2.传输单位有的设备的传输单位是字节,如键盘、打印机、显示器;有的传输单位是字符块,如软盘、硬盘、磁带等;有的传输单位是位,如个人计算机中的SerialPort(s)COM1、COM268.1I/O管理的概念3.容许的操作(操作特性)设备完成的操作种类各不相同,如打印机只允许写操作,键盘只能做读操作,而磁盘既可读,也可写。4.出错条件不同的设备,其出错条件也不相同,即数据传输失败的原因各种各样,如打印机有缺纸错,磁盘I/O有奇偶校验错等。78.1.2设计目标1.字符代码的独立性现在使用的ASCII码(美国信息交换标准码)2.设备独立性3.效率4.设备处理的一致性88.1.3I/O管理功能1.状态跟踪设备控制块是存放设备管理和控制信息的数据结构。系统要掌握设备的状态。2.设备存取实现对设备的存取操作。3.设备分配在多用户的环境下,负责设备的分配和回收。4.设备控制设备控制包括设备的驱动、完成和故障中断处理。98.1.4设备独立性一、设备独立性的概念设备独立性是指用户在编程序时所使用的设备与实际设备无关。两类设备独立性:1.一个程序应独立于分配给它的某类设备的具体设备。即在用户程序中只指明I/O使用的设备类型即可。如在系统中配备了两台打印机,用户要打印时只要告诉系统要将信息送到打印机即可。2.程序要尽可能地与它使用的设备类型无关。即在用户程序中只要指出要输入或输出信息,至如信息I/O使用的设备不需用户指明。108.1.4设备独立性二、设备独立性的实现在UNIX系统中,把设备与文件统一处理,这比前两种设备独立性又算了一步,对于用户来说,就没有设备的概念。118.1.4设备独立性三、设备独立性的优点1.方便用户编程2.使用程序运行不受具体的机器环境的限制,如UNIX系统环境下,系统提供标准输入和输出,在用户程序中的输入输出都使用这两个标准的I/O,实际运行时,根据具体情况而定。如果配备打印机,则将输出信息送到打印机打印,如果没有配备打印机,就把输出重向到某个指定文件,把要打印的信息送到该文件中。3.便于程序移植128.1.5设备控制块一、设备控制块设备控制块是设备管理的数据结构,用来存放设备的管理和控制信息,每类设备有一个设备控制块。138.1.5设备控制块二、设备转换表(设备开关表)设备开关表存放设备驱动和控制程序人口地址。148.1.5设备控制块158.1.5设备控制块168.2缓冲技术8.2.1概述CPU与各种外部设备的速度上的差异很大,设备与设备之间的速度的差异也很大。系统有时会产生大量的数据需要I/O,有时又会很长时间没有I/O。造成I/O负荷的不均匀要解决这两个方面的问题就要引入缓冲的概念。缓冲是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。教材上的定义缓冲技术是用来匹配CPU与设备之间速度差异和负荷的不均匀。常用的缓冲技术有三种:双缓冲、环形缓冲、缓冲池178.2.2双缓冲系统设置两个缓冲区,BUF1和BUF2,各进程使用这两个缓冲区。这种缓冲技术是最简单的,用于低频度活动号I/O。工作过程:首先输入将数据送入BUF1,然后,申请BUF2,在向BUF2输入数据的同时,输出进程可从BUF1中取数据。同理,向BUF1输入与从BUF2中取数据可以并行。教材p193图8.2是双缓冲技术应用的策略图。188.2.3环形缓冲在系统中设置若干缓冲区,并把这些缓冲区链接起来,这样若干个缓冲区就形成了一个环,故称环形缓冲区。198.2.3环形缓冲环形缓冲技术使用设置一个输入指针in、一个输出指针out、开始指针strat。系统初始时,strat=in=out。输入时,要判断in是否与out相等,若相等,则要等待。否则,将信息送入in指向的缓冲区,填满后,将缓冲区中的指向下一个缓冲区的指针next置in,如此类推。输出时,首先判断out=in,若相等,则等待(意味着系统中没有数据可取)。否则,取出缓冲区中的信息,将缓冲区中的next置out;208.2.4缓冲池系统设置多个缓冲区,形成一个缓冲池。这个池中的缓冲区为系统中所有的进程共享使用。例如,UNIX系统中,在块设备管理中设置了一个15个缓冲区组成的缓冲池。为了管理这些缓冲区,建立了以下数据结构218.3设备分配8.3.1分配原则一、静态分配和动态分配1、静态分配当一个作业(或进程)运行时,根据作业要求的设备,系统如果能满足,则将其要求的设备全部分配给它,然后开始运行,运行完成释放其占用的所有设备。这种分配方式的优点是系统绝不会出现死锁,缺点是设备利用率太低。2、动态分配这种分配方法是在作业(或进程)运行的过程中,需要使用设备时,就向系统申请,系统根据某种分配原则进行分配。这种方法的优点是设备的利用率高,缺点是系统有出现死锁的可能。228.3设备分配8.3.1分配原则二、设备分配算法1、先来先服务算法2、优先级高者优先三、设备分配的安全性对于共享设备,不论采用静态分配还是采用动态分配都不会出现死锁。对于独占设备,采用动态分配有可能造成死锁。独享分配、共享分配、虚拟分配238.4I/O控制8.4.1I/O控制方式一、循环测试I/O方式早期的设备控制方式采用。二、I/O中断方式为了提高CPU和设备的利用率,就应使CPU与设备并行工作,采用I/O中断方式。采用这种方式要求控制寄存器中有一个中断位。248.4I/O控制8.4.1I/O控制方式在I/O中断方式下,数据的输入(或输出)步骤如下:设备驱动程序工作:1、要求输入数据的进程把一个启动命令和允许中断位“1”写入相应设备的控制状态寄存器中,从而启动了该设备;2、该进程因等待输入的完成进入睡眠状态。3、当输入完成后,输入设备向CPU发出完成中断请求信号;258.4I/O控制8.4.1I/O控制方式设备中断处理程序工作:4、处理机响应中断,处理该中断,并唤醒等待输入完成的进程;5、在以后的某个时期,该程序被调度到后,继续运行。这种方式的优点是大大地提高了CPU的利用效率,缺点是每次I/O都要CPU的干预,如果系统中配备了多台(套)设备时,CPU的利用率也会降低。解决的方法是采用通道技术。268.4I/O控制8.4.1I/O控制方式通道:是计算机系统中专门用于I/O的处理机。在大、中、小型计算机中一般称为通道,结构如图所示。在个人计算机系统中采用微通道,就是教材中所讲的DMA。278.4.2I/O控制功能8.4.2I/O控制功能控制设备I/O工作的核心模块通常称为设备驱动程序。它包括三个方面的功能:1.解释用户I/O命令2.设备驱动3.中断处理288.4.2I/O控制功能不论是哪种设备驱动程序,它的功能是相同的,接受用户的I/O请求命令,并把用户的请求转换成I/O请求块,挂到相应设备的I/O请求队列。每类设备有一个I/O请求队列,在系统初始化时,将系统中所有设备的I/O请求队列置为空。在系统初启时,系统为每类设备创建一个进程,执行程序就是该设备的设备驱动程序。由于系统初启时,相应的I/O请求队列为空,则在该队列上睡眠。298.4.2I/O控制功能一旦有I/O请求块挂入,唤醒该设备驱动进程。它被调度到时,从队列中取出一个I/O请求块,并按该块的内容执行一次I/O操作,发出I/O完成(或出错)中断信号。然后,检查请求队,若为空,则进入睡眠状态,否则,取下一个请求块。308.5unix系统设备管理两种设备类型1.块设备以字符块(一般情况下是512字节)为基本I/o单位的设备称为块设备,如磁盘、磁带、光盘等;2.字符设备以字符为基本I/O单位的设备称为字符设备。318.5UNIX系统的设备管理8.5.1UNIX系统设备管理的特点1.外部设备看作文件,由文件系统统一处理;2.系统设备配置改变灵活、方便;3.有效地使用了块设备缓冲技术,大大地提高了块设备存取操作的速度。328.5.2UNIX设备驱动程序接口338.5.3设备管理数据结构1.主设备号和次设备号在系统内部使用的设备名称为设备号。它由两个部分组成,主设备号和次设备号。主设备号:设备的类型编号;次设备号:同类设备的设备台号。348.5.3设备管理数据结构2.设备开关表(块设备)Structbdevsw{int(*d_open)();int(*d_close)();int(*d_strategy)();int*d_tab;}bdevsw[];字符设备开关表structcdevsw{int(*d_open)();int(*d_close)();int(*d_read)();int(*d_write)();int(*d_sgtty)();}cdevsw[];358.5.3设备管理数据结构3.块设备表Structdevtal{chard_active;/*执行一个I/O请求的标志*/chard_errcnt;/*出错计数器*/structbuf*b_forw;/*设备缓冲队列前指针*/structbuf*b_back;/*设备缓冲队列后指针*/structbuf*b_actf;/*I/O请求队列头指针*/structbuf*b_actl;/*I/O请求队列尾指针*/}368.5.3设备管理数据结构4.设备管理数据结构的关系378.5.4缓冲区管理一、缓冲区结构在UNIX系统中采用缓冲池的缓冲技术,系统中设置一个有15个缓冲区的缓冲池。每个缓冲区占514个字节,其中512个字节用来存放数据,2个字节用作校验用。为了管理缓冲区,系统还设置了一个数据结构,称为缓冲区首部,其结构如下:388.5.4缓冲区管理一、缓冲区结构Structbuf{intb_flags;/*标志*/structbuf*b_forw;/*设备缓冲队列前指针*/structbuf*b_back;/*设备缓冲队列后指针*/structbuf*av_forw;/*空闲缓冲队列前指针*/structbuf*ac_back;/*空闲缓冲队列后指针*/intb_dev;/*设备号*/intb_wcount;/*请求传送的字节数*/char*b_addr;/*缓冲区的首地址*/char*b_blkno;/*设备的物理块号*/charb_error;/*出错信息*/char*b_resid;/*出错时尚末传送的剩余字数*/}buf[NBUF];398.5.4缓冲区管理一、缓冲区结构b_flags包括:B_WRITE写(将信息写到磁盘上去)B_READ读(从磁盘上读取信息到缓冲区中)B_DONEI/O操作结束B_ERROR因I/O出错而中止B_BUSY相应的缓冲区正在使用中B_WANTED有进程正在等待使用该buf,清B_BUSY时要唤醒这种进程B_ASYNC异步I/O标志B_DELWRI延迟写,在相应缓存移作它用时,要将缓存中的内容写到相应的磁盘块中。408.5.4缓冲区管理二、自由缓冲队列和设备缓冲队列1.空闲缓冲区队列当系统中某个进程释放缓冲区时,将释放的缓冲区的buf挂到该队列的队尾。分配缓冲区是从该队列队首取出一个buf,分配给申请者。418.5.4缓冲区管理二、自由缓冲队列和设备缓冲队列2.设备缓冲区队列当某个设备使用缓冲区时,将该缓冲区的buf挂入到相应的设备缓冲队列,并且一直保留在该队列
本文标题:操作系统原理8-IO管理
链接地址:https://www.777doc.com/doc-3085743 .html