目录
学习建议:
基本内容:
一、设备管理概述:
二、设备管理的任务和功能:
1.建立统一方便且独立于设备的用户界面:
2.记录设备状态:
3.实施设备分配:
4.控制并实现I/O操作:
5.管理输入输出缓冲:
6.改造独享设备为虚拟的共享设备:
三、设备的绝对号与相对号:
四、独占设备的分配:
1.分配策略:
2.设备的指定方式:
3.独占设备的分配:
4.独占设备的分配流程:
五、磁盘的简介:
1.磁盘的硬件特性及信息的组织:
2.磁盘的分类:
3.物理记录定位:
4.磁盘的结构:
六、磁盘的驱动调度:
(一)移臂调度:
(二)旋转调度:
(三)信息的优化分布:
文件管理实现文件存取前的准备工作,而文件的物理存取由设备管理实现,要求了解设备管理与文件管理的合作关系。学习本章中,掌握如下重点内容:
(1)设备管理功能;
(2)常用设备分配技术;
(3)使用缓冲技术的目的;
(4)掌握通道技术的原理;
(5)虚拟技术的原理和实现;
在学习过程中,需要掌握设备管理功能:监视设备状态 ,进行设备分配,完成I/O操作,缓冲管理与地址转换。掌握常用设备分配技术:独占分配,共享分配,虚拟分配。理解怎样实现独占设备的分配;磁盘的驱动调度;了解处理I/O请求的步骤。了解SPOOL系统的功能和实现思想,怎样使用SPOOL技术实现虚拟设备。
设备管理是操作系统的重要组成部分,它解决的问题主要有两个:
第一、提高外部设备的利用串,尽量提高并行程度。
第二、方便用户,使用户从繁琐的管理工作中解放出来。
第一、由于在I /O系乏中,普遍地使用于中断、缓冲区、通道等技术,这些措施很好地解决了外设与主机在速度上匹配的问题,使主机与外设并行地工作,提高了它们的使用效率。
第二、为使用户摆脱使用外设的困难,设备管理程序承担了有关外部设备的驱动、控制、分配等任务。操作系统向用户提供了使用各种外设的命令、语句和设备调用功能,用户只要掌握了它们的用法,就可以很方便地使用外设,不再自行编制涉及硬件方面的具体程序。
各种外围设备的物理特性各不相同,因此,对它们的管理也有很大差别。从使用的角度来看,有一些设备(例如,输入机、磁带机和打印机等)往往只能让一个作业独占使用,称为"独占设备"。
对独占设备通常采用静态分配方式,即在一个作业执行前,将作业要使用的这类设备分配给作业,在作业执行期间均归该作业占用,直到作业执行结束才归还。
另一些设备(例如,磁盘)可以让几个作业同时使用,称为"共享设备"。
对共享设备允许多个作业同时使用而不是让一个作业在整个执行期间独占。
显然,独占设备的利用率较低,有的系统用共享设备来模拟独占设备的工作,把独占设备改造成可共享的,以提高设备的利用率,这种模拟的独占设备称为"虚拟设备"。
主机和I/O设备的信息交换方式有查询等待、中断、DMA和通道四种方式,它们连同众多的外部设备一起构成了设备管理的物质基础。但上述的I/O控制方式是面向CPU而不是面向用户的,它没有为用户提供使用外设的界面,也没有考虑各种外设的均衡使用问题。
设备管理的任务:
第一是为用户提供使用外设的方便统一的手段,控制外设按照用户的要求工作。
第二个是按照一定的算法分配设备,以保证系统安全而有条不紊地工作。
第三个是实现设备的均衡使用,尽量提高它们并行工作的程设备管理的功能。
为了完成上述任务,设备管理应具备下述功能:
外部设备种类繁多、功能各异,各有各的物理特性,不能让用户自己去编制复杂的输入输出程序(如控制打印机的打印针的动作以印出某个字符),而应由系统事先编制好,并为用户提供相应的使用手段,即用户界面。
但如果对不同的设备设置不同的用户接口,仍会给用户带来很大的不便,因此,现代的操作系统都力求建立统一方便且独立于设备的用户界面。
能够动态地监视并记录所有设备(包括通道和控制器)的工作状态,如已分配、正等待或发生故障等。
按照一定策略对设备实施调度和分配。设备管理系统中的设备分配程序负责此项工作。
本系统中的设备处理程序负责此项工作。设备处理程序包括设备驱动程序和设备中断处理程序。首先,它要根据用户的I/O要求构成相应的I/O程序;其次,启动相应设备进行数据传输。
主要完成输入输出缓冲区的分配、回收等工作。
独享设备利用率较低,可通过SPOOLing技术,将它们改造成虚拟的共享设备,从而提高设备的利用率。
在多道程序设计系统中,一般情况下用户不直接使用设备的绝对号。用户可以向系统说明所要使用的设备类型,至于实际使用哪一台,由系统根据该类设备的分配情况来决定。
有时用户可能要求同时使用几台同类设备,为了避免使用时的混乱,用户可以把自己要求使用的若干台同类设备给出编号,由用户在程序中定义的设备编号称设备的"相对号"。
计算机系统中配置有各种不同类型的外围设备,每一类外围设备又可以有多台。为了对这些设备进行管理,计算机系统为每一台设备确定一个编号,以便区分和识别,这个确定的编号称为设备"绝对号"。
于是,用户总是用"设备类、相对号"来提出使用设备的要求。系统为用户分配了具体设备后,建立"绝对号"与"设备类、相对号"的对应关系。这样,系统根据用户程序执行时给出的使用要求就能知道实际应启动哪台设备。
独占设备是指磁带机、输入机和打印机等设备。如果用户作业的初始信息(源程序、数据等)是通过输入机进入系统的,那么,当作业执行时首先要启动输入机读入源程序,然后对读入的源程序进行编译,编译系统在对源程序进行编译的过程中,输入机暂时空闲。
当编译结束,目标程序运行时又要启动输入机读入数据进行加工处理。可见,一个作业执行时会随时地请求启动输入机。因此,不适宜在一个作业暂时不用输入机时,人为地让另一个作业去使用输入机,否则将造成信息混乱。
同样地,一个作业执行时可能把不断产生的结果作为文件信息随时记录到磁带上或从打印机打印输出。如果让几个作业交替地去使用磁带机和打印机,则得到的结果将是杂乱无章的。
所以,对磁带机、输入机以及打印机等只适合独占使用的设备总是采用"静态分配"策略。一个作业所需使用的独占设备能得到满足时,该作业才能被装入到主存储器执行,当作业执行结束撤离时,才收回分配给它的这类设备,收回的设备可以再分配给其他需要使用该类设备的作业。
作业申请独占设备时,应指定需要什么设备的绝对号,另一种是指定设备类、相对号。指定的方式可以有两种:
如果用绝对号来指定设备,系统应该把与绝对号对应的那台设备分配给作业。如果指定的这台设备已经被其他作业占用或者有故障时,则作业的申请要求就得不到满足。于是,该作业就暂时不能装入主存储器。
通常,申请设备时不是具体指定要哪台设备,而是提出要申请哪类设备多少台,且在用户程序中用"设备类、相对号"提出使用设备的要求。
(1)系统只要从指定的哪一类设备中找出"好的且尚未分配的"设备来进行分配。
(2)万一分配给用户的设备在使用中出了故障,系统可以从同类设备中找另一台"好的且尚未分配的"设备来替换。
这种方式使设备分配的适应性好、灵活性强。
采用"设备类、相对号"的方式使用设备时,用户编制程序时不必指定特定的设备,在程序中使用由"设备类、相对号"定义的逻辑设备。程序执行时系统根据用户指定的逻辑设备转换成与其对应的具体物理设备,并启动该物理设备工作。于是,用户编制程序时使用的设备与实际使用哪台设备无关,我们把这种特性称为"设备的独立性"。
操作系统设置"设备分配表",用来记录计算机系统所配置的独占设备类型、台数以及分配情况等。设备分配表可由"设备类表"和"设备表"两部分组成。
"设备类表"记录系统中的各类设备,每类设备占一个登记栏,指出该类设备拥有的总台数,当前还有几台没有分配,及该类设备在设备表中的起始地址。
每一台设备在"设备表"中占一个登记项,同类的若干台设备连续地登记在设备表中。每一台设备都有一个绝对号,并设置该台设备是"好与坏"、"已分配与未分配"的标志。当设备分配给某作业后则需指出占用设备的作业名,以及用户定义的相对号。
当作业执行结束撤离时应归还所占的设备,系统根据作业名查设备表,找出作业占用设备的登记栏,把标志修改成"末分配",清除作业名。同时把收回的设备台数加到设备类表中的"现存台数"中,这样就收回了作业使用设备的权力。
分配流程是针对单通路情形的,即每个设备仅与一个控制器相连,每个控制器仅与一个通道相连,简言之,任何一台设备和通道之间,只有唯一的一条通路。
如果是多通路系统,此时,由于一台设备可能与多个控制器相连,一个控制器可能与多个通道相连。
所以,在流程的(2)和(3)中,应遍查与设备相连的所有控制器,当找到一个空闲控制器之后,同样,再遍查与此控制器相连的所有通道,从中找出一个空闲的。
磁盘:铝合金制成的金属圆盘,表面两侧涂以磁性材料。
磁道:磁盘上一系列记录信息的同心圆=>分割成许多相等的弧段--扇区/物理记录,编号:0,1,……n 扇区所处的磁道位置不同,物理长度不同,但所记录的信息量是相等的(内部密度高些,读写时改变磁头的驱动电流)。
IDE(Integrated Drive Electronics)驱动器:外圈扇区数比内圈多,增加磁盘容量。
固定头磁盘 | 盘面上的每一条磁道都有一个读写头 |
移动头磁盘 | 每个盘面只有一个读写磁头,可沿半径方向移动。每次磁盘操作先通过 "寻找操作 "对准所要访问的磁道 |
磁盘组:由若干磁盘组成,绕枢轴高速旋转,可达3600转/分。
n个盘片,2n-2个盘面可用:有效盘片数n-1。
一个盘面用作 "同步伺服面 ":用于存储信息的有效盘面数2n-3 。
柱面号 | 各盘面所有的读写头同时移动,并定位在同样的垂直位置的磁盘上,这些磁道形成了一个柱面。由外向内是:0,1,2,……,L。 |
磁头号 | 磁盘迭的全部有效盘面(除去最外层的二面)从上到下依次编号:0,1,2,……,H。磁头号与盘面号是相对应的。 |
扇区号 | 将各盘面分割成若干大小相等的扇区,编号:0,1,2,3,……,n |
磁盘机是一种高速、大容量、旋转型的存储设备,它能把信息记录在盘片上,也能把盘片上的信息读出。
每个盘片有正反两面,若干张盘片可以组成一个盘组。一个盘组中的盘片都被固定在一个轴上,沿着一个方向高速旋转。每个盘面有一个读写磁头,所有的读写磁头被固定在惟一的移动臂上同时移动,把所有的读写磁头按从上到下的次序从开始进行编号,称为"磁头号"。
每个盘面有许多磁道,从开始按由外向里的次序顺序编号,不同盘面上具有相同编号的磁道在同一个柱面上,把盘面上的磁道号称为"柱面号"。
移动臂可以带动读写磁头访问所有的磁道,当移动臂移动到某一位置时,所有的读写磁头都在同一柱面上,每次只有其中的一个磁头可以进行读或写的操作。
在磁盘初始化时把每个盘面划分成相等数量的扇区,按磁盘旋转的反向从。开始给各扇区编号,称为"扇区号"。每个扇区的各磁道上均可存放相等数量的字符,我们称它为"块",块是信息读写的最小单位。
要确定一个块所在的位置必须给出三个参数:柱面号、磁头号、扇区号。
启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定的扇区旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。
为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上,而是按柱面存放。同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以,各磁盘块的编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。
假定用t表示每个柱面上的磁道数,用s表示每个盘面上的扇区数,则第i柱面,j磁头,k扇区所对应的块号b可有如下公式确定:
b=k+s×(j+i×c)
同样地,根据块号也可确定该块在磁盘上的位置。在上述的假定下,每个柱面上有s×t个磁盘块,为了计算第P块在磁盘上的位置,可以令D=s×t,设M=[ P/D],N=P mod D。于是,第P块在磁盘上的位置为
柱面号=M
扇区号=N mod S
在微型计算机中,对软盘片来说,每个柱面只包含两个磁道。文件信息也是按柱面顺磁道顺序和扇区顺序依次存放。
磁盘是一种可共享的设备,在多道程序设计的系统中,同时会有若干个访问者请求磁盘执行输入输出操作。
系统往往采用一定的调度策略来决定各等待访问者的执行次序,这项工作称磁盘的"驱动调度",采用的调度策略称"驱动凋度算法"。对磁盘来说,驱动调度有"移臂调度"和"旋转调度"两部分组成。
根据访问者指定的柱面位置来决定执行次序的调度称"移臂调度",移臂调度的目的是尽可能地减少输入输出操作中的寻找时间。
常用的移臂调度算法有先来先服务算法、最短寻找时间优先算法、电梯调度算法和单向扫描算法。
先来先服务算法 | 不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。 |
最短寻找时间优先算法 | "最短寻找时间优先"调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行,而不管访问者到来的先后次序。 |
电梯调度算法和单向扫描算法。 | "电梯调度"算法总是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱面的访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。 |
"单向扫描"调度算法 | 不管等待访问者的先后次序,总是从0号柱面开始向里扫描, 按照各访问者所要访问的柱面位置的次序去选择访问者。 |
1.先来先服务(FCFS):
原则:各进程对磁盘请求的等待队列按提出请求的时间进行排序,并按此次序给予服务。
评价:
访问请求均匀分布整个盘面,而不具有某种集中倾向时,导致随机访问模式--无法对访问优化!
访问请求较多时,降低设备服务的吞吐量,提高响应时间;
响应时间变化幅度较小!
例如,如果现在读写磁头正在53号柱面上执行输入输出操作,而等待访问者依次要访问的柱面为98,183,37,122, 14,124,65,67。那么,当53号柱面上的操作结束后,移动臂将按请求的先后次序先移到 98号柱面,最后到达67号柱面,如图6-3-3所示。
从图中可以看到采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂将来回地移动,读写磁头总共移动了640个柱面的距离。
先来先服务算法花费的寻找时间较长,于是,执行输入输出操作的总时间也很长。
2.最短查找时间优先(SSTF):
原则:选择请求队列中柱面号最接近于当前磁头所在柱面的访问请求作为下一个服务对象,即先执行查找时间最小的那个请求,而不管是否在磁臂的前进方向上还是相反。
优点:较好的吞吐量(比FCFS),较低的平均响应时间。
缺点:响应时间变化幅度很大,因为对用户请求的响应机会不均等:对中间磁道的访问请求得到最好的服务,对内,外两侧磁道的服务随偏离中心磁道的距离而越远越差;
响应时间变化幅度很大:服务请求很多时可能造成对内,外边缘磁道的请求将会无限期地被迟延。
我们还是用同一个例子来讨论,现在当53号柱面的操作结束后,应该先处理65号柱面的请求,然后到达67号柱面执行操作。随后应处理37号柱面的请求(它与67号柱面相距30个柱面)而不是98号柱面的请求(它与67号柱面相距 31个柱面),后继操作的次序应该是14,98,122,124,183。如图6-3-4所示。
从图中可以看到采用最短寻找时间优先算法决定等待访问者执行输入输出操作的次序时,读写磁头总共移动了236个柱面的距离。
与先来先服务算法比较,大幅度地减少了寻找时间。因而缩短了为各请求访问者服务的平均时间,也就提高了系统效率。
3.电梯调度算法(有的书也称扫描算法):
原则:选择请求队列中按磁臂前进方向最接近于磁头当前所在柱面的访问要求作为下一 个服务对象。由内向外,由外向内,反复地扫描访问请求,依次给予服务。若沿此方向不再有访问请求时,不必继续扫描,而是改变移动方向--使磁臂的移动频率和距离最小。
优点:吞吐量比较大,平均响应时间较小。
缺点:两侧磁道访问频率仍低于中间磁道--响应时间变化幅度
这好比乘电梯,如果电梯已向上运动到4层时,依次有3位乘客A,B,C,他们的要求是: A在2层等待去10层;B在5层等待去底层;C在8层等待上15层。电梯管理员不是按照乘客来到的先后次序服务,而是考虑电梯的效率。在这种情况下,沿电梯运动方向总是先把乘客C带到15层,然后把乘客B带到底层,最后再把乘客A送到10层。
我们仍用同一例子来讨论采用"电梯调度"算法的情况,由于该算法是与移动臂的方向有关,所以,应分两种情况来讨论。
(1)移动臂是向外移的:
当前正在53号柱面执行操作的读写磁头是由移动臂由里向外 (向0号柱面方向)带到53号柱面的位置,因此,当访问53号柱面的操作结束后,沿臂移动方向最近的柱面是37号柱面。
所以,应先为37号柱面的访问者服务,然后是为14号柱面的访问者服务。之后,由于外移方向已无等待访问者,故改变臂的移动方向,由外向里依次为各访问者服务。可见,在这种情况下为等待访问者服务的次序是37,14,65,67,98,122,124,183。
(2)移动臂是向里移的
当前正在53号柱面执行操作的读写磁头是由移动臂由外向里 (向柱面号增大方向)带到53号柱面的位置,因此,当访问53号柱面的操作结束后,沿臂移动方向最近的柱面是65号柱面。
所以,应先为65号柱面的访问者服务,然后按臂里移方向依次为67,98,122,124,183柱面的访问者服务。当183号柱面的操作结束后,里移方向已无等待访问者,故改变臂的移动方向,由里向外依次为37,14柱面的访问者服务。
当移动臂原来是由里向外移动时,读写磁头共移动了208个柱面的距离;当移动臂原来是由外向里移动时,读写磁头共移动了299个柱面的距离。
"电梯调度"与"最短寻找时间优先"都是要尽量减少移动臂移动时所花的时间,所不同的是"最短寻找时间优先"不考虑臂的移动方向,总是选择离当前读写磁头最近的那个柱面的访问者,这种选择可能导致移动臂来回改变移动方向;"电梯调度"是沿着臂的移动方向去选择离当前读写磁头最近的那个柱面的访问者,仅当沿臂移动方向无等待访问者时才改变臂的移动方向。
由于移动臂改变方向是机械动作,速度相对较慢。相比之下,电梯调度算法是一种简单、实用且高效的调度算法。但是,在实现时除了要记住读写磁头的当前位置外,还必须记住移动臂的移动方向。
4.单向扫描调度算法:
原则:磁臂总是从0号柱面至最大号柱面顺序扫描,到头后直接返回0号柱面再重复进行看作最大号磁道的隔壁;当磁臂由外向内移动过程中,只服务于在磁臂本次移动开始前到达的访问请求,而不理会在磁臂单向移动过程中到达的新的访问请求--留给下一次。每次扫描直到对最内柱面上的访问请求满足后,磁臂即直接向外移动,使磁头停留在所有新的访问请求最外面的柱面上。然后再对本次移动前到达的访问请求依次给予服务。
评价:由于只能一次服务,比电梯调度稍差一些。
移动臂到达最后一个柱面后,立即 带动读写磁头快速返回到。号柱面,返回时不为任何的等待访问者服务,返回后可再次进行 扫描。对相同的例子采用单向扫描调度算法的执行次序
由于该例中已假定读写磁头的当前位置在53号柱面,所以,图6-3-6中指示了从53号柱面继续向里扫描,依次为65,67,98,122,124,183各柱面的访问者服务。此时移动臂继续向里移动,直到最内的柱面(图中为199号柱面)后,再返回到。号柱面,重新扫描时依次为14,37柱面的访问者服务。除了移动臂由里向外返回时所用的时间外,读写磁头还需移动183个柱面的距离。
除了"先来先服务"种调度算法外,其余三种调度算法都是根据欲访问的柱面位置来进行调度的。在调度过程中可能有新的请求访问者加入,这些新的请求访问者加入时,如果读写磁头已经超过了它们所要访问的柱面位置,则只能在以后的调度中被选择执行。
当移动臂定位后,有多个访问者等待访问该柱面时,应怎样决定这些等待访问者的执行次序?从减少输入输出操作总时间为目标考虑,显然应该优先选择延迟时间最短的访问者去执行。
根据延迟时间来决定执行次序的调度称为"旋转调度"。
进行旋转调度时应分析下列情况:
(1)若干等待访问者请求访问同一磁道上的不同扇区。
(2)若干等待访问者请求访问不同磁道上的不同编号的扇区。
(3)若干等待访问者请求访问不同磁道上具有相同编号的扇区
对于前两种情况,旋转调度总是让首先到达读写磁头位置下的扇区先进行传送操作。对于第三种情况,这些扇区同时到达读写磁头位置下,旋转调度可任意选择一个读写磁头进行传送操作。例如,有4个访问5号柱面的请求访问者。
对它们进行旋转调度后,它们的执行次序可能是①,②,④,③,或①,③,④,②。由于②和③两个请求都是访问5号扇区,因为每一时刻只允许一个读写磁头进行操作,故当5号扇区旋转到磁头位置下时,只有其中的一个请求可执行传送操作,另一个请求必须等磁盘再一次把5号扇区旋转到读写磁头位置下时才能得到服务。因此,对于④访问8号扇区的请求在其前执行。
可见,当一次移臂调度把移动臂定位到某一柱面后,还可能要进行多次旋转调度。图6-3-7是以电梯调度算法为例的磁盘驱动调度工作流程。
记录在磁道上的排列方式也会影响输入输出操作的时间。例如,某系统对磁盘初始化时把每个盘面分成8个扇区,今有8个逻辑记录被存放在同一个磁道上供处理程序使用,处理 程序要求顺序处理这8个记录,每次请求从磁盘上读一个记录,然后对读出的记录要花5毫秒的时间进行处理,以后再读下一个记录进行处理,直至8个记录都处理结束。
假定磁盘转速为20毫秒/周,现把这8个逻辑记录依次存放在磁道上。
显然,读一个记录要花2.5毫秒的时间。当花了2.5毫秒的时间读出第1个记录并花5毫秒时间进行处理后,读写磁头已经在第4个记录的位置,为了顺序处理第2个记录,必须等待磁盘把第2个记录旋转到读写磁头位置下面,即要有15毫秒的延迟时间。
于是,处理这8个记录所要花费的时间为:
8×(2.5+5)+7×15=165(ms)
如果我们把这8个逻辑记录在磁道上的位置重新安排一下,图6-3-8(b)是这8个逻辑记录的最优分布。当读出一个记录并处理后,读写磁头正好位于顺序的下一个记录位置,可立即读出该记录,不必花费等待延迟时间。于是,按图6-3-8(b)的安排,处理这8个记录所要花费的时间为
8×(2.5+5)=60(ms)
可见记录的优化分布有利于减少延迟时间,从而缩短了输入输出操作的时间。所以,对于一些能预知处理要求的信息采用优化分布可以提高系统的效率。
上一篇:波司登的高端化后遗症