第五章设备管理§5.1I/O系统§5.2I/O控制方式§5.3缓冲管理§5.4I/O软件§5.5设备分配§5.6磁盘存储器的管理1.I/O设备的重要的性能指标§I/O设备的类型繁多,从OS观点看,其重要的性能指标有:设备使用特性数据传输速率数据的传输单位设备共享属性等2.按设备的使用特性分类§按设备的使用特性,可将设备分为两类。第一类是存储设备,第二类就是输入/输出设备,又具体可分为输入设备、输出设备和交互式设备。3.按传输速率分类§按传输速度的高低,可将I/O设备分为三类。第一类是低速设备,第二类是中速设备,第三类是高速设备。4.按信息交换的单位分类§按信息交换的单位,可将I/O设备分成两类。第一类是块设备(BlockDevice),第二类是字符设备(CharacterDevice)。5.按设备的共享属性分类§这种分类方式可将I/O设备分为如下三类:(1)独占设备。(2)共享设备。(3)虚拟设备。6.设备控制器的基本功能§1)接收和识别命令§2)数据交换:这是指实现CPU与控制器、控制器与设备之间的数据交换。§3)标识和报告设备的状态§4)地址识别:设备控制器必须能够识别它所控制的每个设备的地址。§5)数据缓冲:在输出时,用此缓冲器暂存由主机高速传来的数据,然后才以I/O设备所具有的速率将缓冲器中的数据传送给I/O设备;在输入时,缓冲器则用于暂存从I/O设备送来的数据,待接收到一批数据后,再将缓冲器中的数据高速地传送给主机。§6)差错控制:对由I/O设备传送来的数据进行差错检测。若发现传送中出现了错误,通常是将差错检测码置位,并向CPU报告,于是CPU将本次传送来的数据作废,并重新进行一次传送。这样便可保证数据输入的正确性。7.I/O通道(I/OChannel)设备的引入目的§虽然在CPU与I/O设备之间增加了设备控制器后,已能大大减少CPU对I/O的干预,但当主机所配置的外设很多时,CPU的负担仍然很重。§为此,在CPU和设备控制器之间又增设了通道。其主要目的是为了建立独立的I/O操作,不仅使数据的传送能独立于CPU,而且也希望有关对I/O操作的组织、管理及其结束处理尽量独立,以保证CPU有更多的时间去进行数据处理;或者说,其目的是使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来。8.通道的分类§按照信息交换方式不同,一个系统中可设立三种类型的通道:字节多路通道数组选择通道数组多路通道•以字节为单位交叉地传送数据,它主要用来连接大量的低速设备,如终端、打印机等。•可连接多个子通道,同时控制多台设备。•以数据块为单位成批传送数据,每次传送一批数据,但一次只能控制一台设备进行I/O操作。•具有传送速度高的特点,因而被用来连接磁盘机等高速外部设备。可连接多多台设备。•当完成一台设备的I/O操作后再选择另一台设备。•以块为单位传送数据,它具有传送速率高和能分时操作不同的设备等优点,是字节多路通道和选择通道的综合。•数组多路通道主要用来连接中速块设备,如磁带机等。9.I/O控制方式§程序I/O方式:无中断机构,处理机对I/O设备的控制采取直接控制。§中断驱动I/O控制方式:即当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器于是按照该命令的要求去控制指定I/O设备。此时,CPU与I/O设备并行操作。§直接存储器访问(DMA)I/O控制方式:(1)数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;(2)所传送的数据是从设备直接送入内存的,或者相反;(3)仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。§I/O通道控制方式I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。10.缓冲的引入§(1)缓和CPU与I/O设备间速度不匹配的矛盾。§(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。§(3)提高CPU和I/O设备之间的并行性。11.缓冲池的组成对于既可用于输入又可用于输出的公用缓冲池,其中至少应含有以下三种类型的缓冲区:①空(闲)缓冲区;②装满输入数据的缓冲区;③装满输出数据的缓冲区。12.缓冲区的工作方式§缓冲区可以工作在四种工作方式下收容输入提取输入收容输出提取输出hinsoutsinhout收容输入提取输出用户程序提取输入收容输出缓冲池13.I/O软件应达到下面的几个目标§具体而言,I/O软件应达到下面的几个目标:1)与具体设备无关2)统一命名:系统中对各类设备采取预先设计的、统一的逻辑名称进行命名,所有软件都以逻辑名称访问设备。3)对错误的处理:对于错误的处理,应该尽可能在接近硬件的层面处理,在低层软件能够解决的错误就不让高层软件感知,只有低层软件解决不了的错误才通知高层软件解决。4)缓冲技术5)设备的分配和释放6)I/O控制方式14.I/O软件各层次及其功能§各层次及其功能如下所述:(1)用户层软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O操作有关的库函数,对设备进行操作。(2)设备独立性软件:负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。(3)设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。(4)中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后返回到被中断进程。图5-16I/O系统的层次及功能用户层软件设备独立性软件设备驱动程序中断处理程序硬件I/O应答产生I/O请求、格式化I/O、Spooling映射、保护、分块、缓冲、分配设置设备寄存器,检查寄存器状态执行I/O操作15.独占设备的分配程序§1)分配设备首先根据I/O请求中的物理设备名,查找系统设备表(SDT),从中找出该设备的DCT,再根据DCT中的设备状态字段,可知该设备是否正忙。若忙,便将请求I/O进程的PCB挂在设备队列上;否则,便按照一定的算法来计算本次设备分配的安全性。如果不会导致系统进入不安全状态,便将设备分配给请求进程;否则,仍将其PCB插入设备等待队列。§2)分配控制器在系统把设备分配给请求I/O的进程后,再到其DCT中找出与该设备连接的控制器的COCT,从COCT的状态字段中可知该控制器是否忙碌。若忙,便将请求I/O进程的PCB挂在该控制器的等待队列上;否则,便将该控制器分配给进程。§3)分配通道在该COCT中又可找到与该控制器连接的通道的CHCT,再根据CHCT内的状态信息,可知该通道是否忙碌。若忙,便将请求I/O的进程挂在该通道的等待队列上;否则,将该通道分配给进程。只有在设备、控制器和通道三者都分配成功时,这次的设备分配才算成功。然后,便可启动该I/O设备进行数据传送。16.SPOOLing技术§在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOOLing(SimultaneausPeriphernalOperatingOnLine),或称为假脱机操作。§打印机是经常要用到的输出设备,属于独占设备。§以UNIX管理I/O设备为例,打印机可以看成是一个特殊文件,任意一个进程打开打印机的特殊文件很容易做到,只需按照规定格式使用open系统调用即可;但是假若一个进程在打开打印机特殊文件以后的几个小时内无所事事会出现什么情况呢?17.共享打印机——Spooling技术应用§利用SPOOLing技术,可将独占设备的打印机改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便了用户。共享打印机技术已被广泛地用于多用户系统和局域网络中。§当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:①由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;②输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。§如果还有进程要求打印输出,系统仍可接受该请求,也同样为该进程做上述两件事。§如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输出井传送到内存缓冲区,再由打印机进行打印。打印完后,输出进程再查看请求打印队列中是否还有等待打印的请求表。若有,又取出队列中的第一张表,并根据其中的要求进行打印,如此下去,直至请求打印队列为空,输出进程才将自己阻塞起来。仅当下次再有打印请求时,输出进程才被唤醒。18.SPOOLing系统的特点§(1)提高了I/O的速度。这里,对数据所进行的I/O操作,已从对低速I/O设备进行的I/O操作,演变为对输入井或输出井中数据的存取,如同脱机输入输出一样,提高了I/O速度,缓和了CPU与低速I/O设备之间速度不匹配的矛盾。§(2)将独占设备改造为共享设备。因为在SPOOLing系统中,实际上并没为任何进程分配设备,而只是在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。§(3)实现了虚拟设备功能。宏观上,虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,他们都会认为自己是独占了一个设备。当然,该设备只是逻辑上的设备。SPOOLing系统实现了将独占设备变换为若干台对应的逻辑设备的功能。19.磁盘访问时间§寻道(时间):磁头移动定位到指定磁道§旋转延迟(时间):等待指定扇区从磁头下旋转经过§数据传输(时间):数据在磁盘与内存之间的实际传输§可见,适当地集中数据(不要太零散)传输,将有利于提高传输效率。19.磁盘调度§1.先来先服务(FCFS,FirstComeFirstServed)§2.最短寻道时间优先(SSTF,ShortestSeekTimeFirst)§3.扫描(SCAN)算法§4.循环扫描(CSCAN)算法§5.NStepSCAN和FSCAN调度算法1.先来先服务(FCFS,FirstComeFirstServed)§这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。§例如:有9个进程先后提出磁盘I/O请求时,从100磁道开始,进程号(请求者)按他们发出请求的先后次序如下:55,58,39,18,90,160,150,38,184图5-25FCFS调度算法(从100号磁道开始)被访问的下一个磁道号移动距离(磁道数)5545583391918219072160701501038112184146平均寻道长度:55.3§图5-25示出了有9个进程先后提出磁盘I/O请求时,按FCFS算法进行调度的情况。这里将进程号(请求者)按他们发出请求的先后次序排队。这样,平均寻道距离为55.3条磁道,§与后面即将讲到的几种调度算法相比,其平均寻道距离较大,故FCFS算法仅适用于请求磁盘I/O的进程数目较少的场合。先来先服务§此算法的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求长期得不到满足的情况。§此算法的缺点是但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。2.最短寻道时间优先(SSTF,ShortestSeekTimeFirst)§该算法选择这样的进程:其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。§例如:有9个进程先后提出磁盘I/O请求时,从100磁道开始,进程号(请求者)按他们发