目录

学习建议:

基本内容:

一、设备管理概述:

二、设备管理的任务和功能:

1.建立统一方便且独立于设备的用户界面:

2.记录设备状态:

3.实施设备分配:

4.控制并实现I/O操作:

5.管理输入输出缓冲:

6.改造独享设备为虚拟的共享设备:

三、设备的绝对号与相对号:

四、独占设备的分配:

1.分配策略:

2.设备的指定方式:

3.独占设备的分配:

4.独占设备的分配流程:

五、磁盘的简介:

1.磁盘的硬件特性及信息的组织:

2.磁盘的分类:

3.物理记录定位:

4.磁盘的结构:

六、磁盘的驱动调度:

(一)移臂调度:

(二)旋转调度:

(三)信息的优化分布:

七、通道和通道程序:

(一)通道结构:

(二)通道程序:

八、外围设备的启动:

九、设备驱动程序:

1.整体式系统:

2. 层次式系统:

3.虚拟机系统:

4.客户/服务器系统:

十、I/O中断事件的处理:

(一)操作正常结束:

(二)操作异常结束:

十一、虚拟设备的概念:

十二、虚拟设备的实现:

(一)基本条件:

(二)实现原理:

(三)实现技术:

重点难点分析:

1.相对号与绝对号:

2.各种调度算法的评价

  先来先服务(FCFS):

  最短查找时间优先(SSTF):

  电梯调度算法(有的书也称扫描算法):

  单向扫描:

3.通道

4.SPOOL技术

  SPOOL系统具有以下特点:

概念辨析,概念简释:

1.独占设备

2.共享设备

3.虚拟设备

4.同时使用

5."统一"

6."独立于设备"

7.三种时间

本章小结:

同步练习:



学习建议:

文件管理实现文件存取前的准备工作,而文件的物理存取由设备管理实现,要求了解设备管理与文件管理的合作关系。学习本章中,掌握如下重点内容:

(1)设备管理功能;
(2)常用设备分配技术;
(3)使用缓冲技术的目的;
(4)掌握通道技术的原理;
(5)虚拟技术的原理和实现;

在学习过程中,需要掌握设备管理功能:监视设备状态 ,进行设备分配,完成I/O操作,缓冲管理与地址转换。掌握常用设备分配技术:独占分配,共享分配,虚拟分配。理解怎样实现独占设备的分配;磁盘的驱动调度;了解处理I/O请求的步骤。了解SPOOL系统的功能和实现思想,怎样使用SPOOL技术实现虚拟设备。

基本内容:

一、设备管理概述:

设备管理是操作系统的重要组成部分,它解决的问题主要有两个:
          第一、提高外部设备的利用串,尽量提高并行程度。
          第二、方便用户,使用户从繁琐的管理工作中解放出来。

          第一、由于在I /O系乏中,普遍地使用于中断、缓冲区、通道等技术,这些措施很好地解决了外设与主机在速度上匹配的问题,使主机与外设并行地工作,提高了它们的使用效率。
          第二、为使用户摆脱使用外设的困难,设备管理程序承担了有关外部设备的驱动、控制、分配等任务。操作系统向用户提供了使用各种外设的命令、语句和设备调用功能,用户只要掌握了它们的用法,就可以很方便地使用外设,不再自行编制涉及硬件方面的具体程序。

  各种外围设备的物理特性各不相同,因此,对它们的管理也有很大差别。从使用的角度来看,有一些设备(例如,输入机、磁带机和打印机等)往往只能让一个作业独占使用,称为"独占设备"。
  对独占设备通常采用静态分配方式,即在一个作业执行前,将作业要使用的这类设备分配给作业,在作业执行期间均归该作业占用,直到作业执行结束才归还。
  另一些设备(例如,磁盘)可以让几个作业同时使用,称为"共享设备"。
  对共享设备允许多个作业同时使用而不是让一个作业在整个执行期间独占。
  显然,独占设备的利用率较低,有的系统用共享设备来模拟独占设备的工作,把独占设备改造成可共享的,以提高设备的利用率,这种模拟的独占设备称为"虚拟设备"。

二、设备管理的任务和功能:

主机和I/O设备的信息交换方式有查询等待、中断、DMA和通道四种方式,它们连同众多的外部设备一起构成了设备管理的物质基础。但上述的I/O控制方式是面向CPU而不是面向用户的,它没有为用户提供使用外设的界面,也没有考虑各种外设的均衡使用问题。
  设备管理的任务:
  第一是为用户提供使用外设的方便统一的手段,控制外设按照用户的要求工作。
  第二个是按照一定的算法分配设备,以保证系统安全而有条不紊地工作。
  第三个是实现设备的均衡使用,尽量提高它们并行工作的程设备管理的功能。

  为了完成上述任务,设备管理应具备下述功能:

1.建立统一方便且独立于设备的用户界面:

外部设备种类繁多、功能各异,各有各的物理特性,不能让用户自己去编制复杂的输入输出程序(如控制打印机的打印针的动作以印出某个字符),而应由系统事先编制好,并为用户提供相应的使用手段,即用户界面。
  但如果对不同的设备设置不同的用户接口,仍会给用户带来很大的不便,因此,现代的操作系统都力求建立统一方便且独立于设备的用户界面。

2.记录设备状态:

  能够动态地监视并记录所有设备(包括通道和控制器)的工作状态,如已分配、正等待或发生故障等。

3.实施设备分配:

按照一定策略对设备实施调度和分配。设备管理系统中的设备分配程序负责此项工作。

4.控制并实现I/O操作:

  本系统中的设备处理程序负责此项工作。设备处理程序包括设备驱动程序和设备中断处理程序。首先,它要根据用户的I/O要求构成相应的I/O程序;其次,启动相应设备进行数据传输。

5.管理输入输出缓冲:

主要完成输入输出缓冲区的分配、回收等工作。

6.改造独享设备为虚拟的共享设备:

独享设备利用率较低,可通过SPOOLing技术,将它们改造成虚拟的共享设备,从而提高设备的利用率。

三、设备的绝对号与相对号:

在多道程序设计系统中,一般情况下用户不直接使用设备的绝对号。用户可以向系统说明所要使用的设备类型,至于实际使用哪一台,由系统根据该类设备的分配情况来决定。
  有时用户可能要求同时使用几台同类设备,为了避免使用时的混乱,用户可以把自己要求使用的若干台同类设备给出编号,由用户在程序中定义的设备编号称设备的"相对号"。
  计算机系统中配置有各种不同类型的外围设备,每一类外围设备又可以有多台。为了对这些设备进行管理,计算机系统为每一台设备确定一个编号,以便区分和识别,这个确定的编号称为设备"绝对号"。
  于是,用户总是用"设备类、相对号"来提出使用设备的要求。系统为用户分配了具体设备后,建立"绝对号"与"设备类、相对号"的对应关系。这样,系统根据用户程序执行时给出的使用要求就能知道实际应启动哪台设备。

四、独占设备的分配:

1.分配策略:

独占设备是指磁带机、输入机和打印机等设备。如果用户作业的初始信息(源程序、数据等)是通过输入机进入系统的,那么,当作业执行时首先要启动输入机读入源程序,然后对读入的源程序进行编译,编译系统在对源程序进行编译的过程中,输入机暂时空闲。
  当编译结束,目标程序运行时又要启动输入机读入数据进行加工处理。可见,一个作业执行时会随时地请求启动输入机。因此,不适宜在一个作业暂时不用输入机时,人为地让另一个作业去使用输入机,否则将造成信息混乱。
  同样地,一个作业执行时可能把不断产生的结果作为文件信息随时记录到磁带上或从打印机打印输出。如果让几个作业交替地去使用磁带机和打印机,则得到的结果将是杂乱无章的。
  所以,对磁带机、输入机以及打印机等只适合独占使用的设备总是采用"静态分配"策略。一个作业所需使用的独占设备能得到满足时,该作业才能被装入到主存储器执行,当作业执行结束撤离时,才收回分配给它的这类设备,收回的设备可以再分配给其他需要使用该类设备的作业。

2.设备的指定方式:

作业申请独占设备时,应指定需要什么设备的绝对号,另一种是指定设备类、相对号。指定的方式可以有两种:
  如果用绝对号来指定设备,系统应该把与绝对号对应的那台设备分配给作业。如果指定的这台设备已经被其他作业占用或者有故障时,则作业的申请要求就得不到满足。于是,该作业就暂时不能装入主存储器。
  通常,申请设备时不是具体指定要哪台设备,而是提出要申请哪类设备多少台,且在用户程序中用"设备类、相对号"提出使用设备的要求。
  (1)系统只要从指定的哪一类设备中找出"好的且尚未分配的"设备来进行分配。
  (2)万一分配给用户的设备在使用中出了故障,系统可以从同类设备中找另一台"好的且尚未分配的"设备来替换。
  这种方式使设备分配的适应性好、灵活性强。

  采用"设备类、相对号"的方式使用设备时,用户编制程序时不必指定特定的设备,在程序中使用由"设备类、相对号"定义的逻辑设备。程序执行时系统根据用户指定的逻辑设备转换成与其对应的具体物理设备,并启动该物理设备工作。于是,用户编制程序时使用的设备与实际使用哪台设备无关,我们把这种特性称为"设备的独立性"。

3.独占设备的分配:

操作系统设置"设备分配表",用来记录计算机系统所配置的独占设备类型、台数以及分配情况等。设备分配表可由"设备类表"和"设备表"两部分组成。

"设备类表"记录系统中的各类设备,每类设备占一个登记栏,指出该类设备拥有的总台数,当前还有几台没有分配,及该类设备在设备表中的起始地址。
  每一台设备在"设备表"中占一个登记项,同类的若干台设备连续地登记在设备表中。每一台设备都有一个绝对号,并设置该台设备是"好与坏"、"已分配与未分配"的标志。当设备分配给某作业后则需指出占用设备的作业名,以及用户定义的相对号。

当作业执行结束撤离时应归还所占的设备,系统根据作业名查设备表,找出作业占用设备的登记栏,把标志修改成"末分配",清除作业名。同时把收回的设备台数加到设备类表中的"现存台数"中,这样就收回了作业使用设备的权力。

4.独占设备的分配流程:

分配流程是针对单通路情形的,即每个设备仅与一个控制器相连,每个控制器仅与一个通道相连,简言之,任何一台设备和通道之间,只有唯一的一条通路。
  如果是多通路系统,此时,由于一台设备可能与多个控制器相连,一个控制器可能与多个通道相连。
  所以,在流程的(2)和(3)中,应遍查与设备相连的所有控制器,当找到一个空闲控制器之后,同样,再遍查与此控制器相连的所有通道,从中找出一个空闲的。

五、磁盘的简介:

1.磁盘的硬件特性及信息的组织:

磁盘:铝合金制成的金属圆盘,表面两侧涂以磁性材料。
  磁道:磁盘上一系列记录信息的同心圆=>分割成许多相等的弧段--扇区/物理记录,编号:0,1,……n           扇区所处的磁道位置不同,物理长度不同,但所记录的信息量是相等的(内部密度高些,读写时改变磁头的驱动电流)。
  IDE(Integrated Drive Electronics)驱动器:外圈扇区数比内圈多,增加磁盘容量。

2.磁盘的分类:

固定头磁盘 盘面上的每一条磁道都有一个读写头
移动头磁盘 每个盘面只有一个读写磁头,可沿半径方向移动。每次磁盘操作先通过 "寻找操作 "对准所要访问的磁道

  磁盘组:由若干磁盘组成,绕枢轴高速旋转,可达3600转/分。
  n个盘片,2n-2个盘面可用:有效盘片数n-1。
  一个盘面用作 "同步伺服面 ":用于存储信息的有效盘面数2n-3 。

3.物理记录定位:

柱面号 各盘面所有的读写头同时移动,并定位在同样的垂直位置的磁盘上,这些磁道形成了一个柱面。由外向内是:0,1,2,……,L。
磁头号 磁盘迭的全部有效盘面(除去最外层的二面)从上到下依次编号:0,1,2,……,H。磁头号与盘面号是相对应的。
扇区号

将各盘面分割成若干大小相等的扇区,编号:0,1,2,3,……,n

4.磁盘的结构:

磁盘机是一种高速、大容量、旋转型的存储设备,它能把信息记录在盘片上,也能把盘片上的信息读出。
  每个盘片有正反两面,若干张盘片可以组成一个盘组。一个盘组中的盘片都被固定在一个轴上,沿着一个方向高速旋转。每个盘面有一个读写磁头,所有的读写磁头被固定在惟一的移动臂上同时移动,把所有的读写磁头按从上到下的次序从开始进行编号,称为"磁头号"。
  每个盘面有许多磁道,从开始按由外向里的次序顺序编号,不同盘面上具有相同编号的磁道在同一个柱面上,把盘面上的磁道号称为"柱面号"。
  移动臂可以带动读写磁头访问所有的磁道,当移动臂移动到某一位置时,所有的读写磁头都在同一柱面上,每次只有其中的一个磁头可以进行读或写的操作。
  在磁盘初始化时把每个盘面划分成相等数量的扇区,按磁盘旋转的反向从。开始给各扇区编号,称为"扇区号"。每个扇区的各磁道上均可存放相等数量的字符,我们称它为"块",块是信息读写的最小单位。
  要确定一个块所在的位置必须给出三个参数:柱面号、磁头号、扇区号。
  启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定的扇区旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。

为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上,而是按柱面存放。同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以,各磁盘块的编号按柱面顺序(从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)
  可见记录的优化分布有利于减少延迟时间,从而缩短了输入输出操作的时间。所以,对于一些能预知处理要求的信息采用优化分布可以提高系统的效率。

七、通道和通道程序:

(一)通道结构:

现代计算机系统采用自成独立系统的通道结构,主存储器与外围设备之间传送信息的输入输出操作由通道完成。
  只要中央处理器(CPU)启动了通道,通道就能按指定的要求独立地完成输入输出操作,然后中央处理器就可做与输入输出操作无关的其他工作,从而使计算机系统获得了中央处理器与外围设备之间并行工作的能力。由于通道能独立完成输入输出操作,所以,通道也可称为"输入输出处理机"。
  具有通道装置的计算机系统,中央处理器、主存储器、通道、设备控制器和设备之间的连接如下图1所示。
  通常,一个中央处理器可以连接多个通道,一个通道可以连接多个设备控制器,一个设备控制器可以连接同类型的多台设备。有的系统还可以把一台设备连接到几个设备控制器上,一个设备控制器连接到几个通道上,实现多路交叉连接。
  当有输入输出请求时,中央处理器先执行"启动I/O"指令,启动指定通道上的指定设备。当启动成功,通道按规定的要求通过设备控制器控制外围设备进行操作。
  这时,中央处理器就可执行其他任务并与通道并行工作,直到输入输出操作完成,由通道发出操作结束的"输入、输出中断"时中央处理器才暂停当前的工作,转去处理输入输出中断事件。

图1

(二)通道程序:

 中央处理器启动通道工作时,应把要求通道"做什么和怎样去做"告诉通道。于是,操作系统必须按用户的要求和设备的特性来规定通道的工作。

为了使操作系统能用同样的手段来使用这些种类繁多、特性各异的外围设备,计算机硬件提供"通道命令",操作系统用一组通道命令来规定通道执行一次输入输出操作应做的工作,这一组通道命令就组成丁一个"通道程序"。
  通道被启动后,就依次执行预定的通道程序中的一条条通道命令,从而实现对外围设备的操作控制。

1.通道命令(channel command word缩写为CCW)
  每一条通道命令规定了设备的一种操作,不同的计算机系统其通道命令的格式可能不同,但一般都由命令码、数据主存地址、传送字节个数及标志码等部分组成。
  例如,IBM系统中的通道命令用双机器字表示,每条通道命令用8个字节表示,其格式如下:

2.通道程序的编制
  要启动外围设备按指定的要求工作,那么,首先要把这项指定的要求用通道程序表示出来。对于不同的外围设备其通道命令码是不同的,不能搞错。
  对不同的计算机系统,通道命令格式和通道命令码也可能不同。所以,在编制通道程序时应根据系统提供的通道命令格式和通道命令码来进行。

3.通道地址字(channel address word缩写为CAW)
  编制好的通道程序是存放在主存储器的,为了使通道能取到通道命令去执行,必须把存放通道程序的主存起始地址告诉通道。在具有通道的计算机系统中,在主存中设置一个固定单元,用来存放当前启动外围设备时要求通道执行的通道程序首地址。这个用来存放通道程序首地址的主存固定单元称?quot;通道地址字"(CAW)。
  通道被启动后从CAW指示的主存单元中可取到要执行的第一条通道命令,并把存放通道程序的地址记录下来,以后就可顺序地从主存储器中取到该通道程序中的所有通道命令,逐条解释执行。

4.通道状态字(channel status word缩写为CSW)
  当通道被启动成功后,要控制指定的设备完成通道命令规定的操作,通道在执行通道程序时把通道和设备执行操作的情况随时记录下来,汇集在一个"通道状态字"中,IBM系统中的通道状态字也采用双机器字表示。

八、外围设备的启动:

一般说,操作系统启动和控制外围设备完成输入输出操作的过程大致可以分成三个阶段:

图6-4-2是一次成功的输入输出操作过程示意。

由于"启动I/O"指令是特权指令,用户不能直接使用,所以,用户程序中是通过"放管指令"调用文件操作提出"请求启动外设"的要求。当中央处理器执行访管指令时产生一个"自愿中断事件",中断装置"交换PSW"后操作系统的中断处理程序占用处理器。
  首先,保护被中断进程i的现场,然后分析访管指令中的参数,把执行转交给文件系统和设备管理,根据用户的要求组织通道程序(CCW),把通道程序首地址存入CAW,执行"启动I/O"指令。
  当指定的通道和设备都空闲时,通道形成启动成功的条件码,并按通道命令的要求控制设备进行操作。中央处理器分析条件码,得知通道已经启动成功。
  于是,让请求启动外设的进程i等待设备传输信息,由进程调度程序选择一个当前可运行的进程j占用处理器。现在中央处理器为进程j服务,通道为进程i服务,两者并行工作。
  通道执行通道程序,把执行情况记录在通道状态字中。直到通道产生"I/O中断"事件,进程i的运行被中断,由操作系统的"I/O中断处理程序"占用处理器,从中断寄存器获得产生I/O中断的通道号和设备绝对号,从存放CSW的主存固定单元中获得引起中断的原因,然后进行处理。对I/O中断进行处理后,进程调度选择可运行的进程,按照调度算法的不同,被选中的进程可能是i或j或其他进程。

从这里我们看到具有通道结构的计算机系统,从启动外围设备到完成输入输出操作,都没有考虑不同类型的物理设备的特性,都用了统一的方法在进行处理。
  这种不考虑具体特性 (实际上设备特性巳隐含在通道程序中)的处理方法称"设备处理的一致性",采用设备处理一致性技术使得输入输出操作的处理既简单又不易出错。

九、设备驱动程序:

与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型,例如,即使系统支持若干不同商标的终端,只要其差别不大,就可以设计一个终端驱动程序。
  但是,若系统支持的终端性能差别很大,如不灵活的硬拷贝终端与带有小鼠标的智能位映象图形终端,则必须设计不同的终端驱动程序。

每一个设备控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数。设备驱动程序负责存放这些命令,并监督它们正确执行。因此,磁盘驱动程序是操作系统中唯一知道磁盘控制器设置有多少寄存器以及这些寄存器作用的。
  只有它才了解磁盘拥有的扇区数、磁道数、柱面数、磁头数、臂的移动、磁盘交叉访问系数、马达驱动器,磁头稳定时间和其它所有保证磁盘正常工作的机制。
  一般,设备驱动程序的任务是接收来自与设备无关的上层软件的抽象请求,并执行这个请求。一个典型的请求是"读第几块"。
  如果请求到来时,驱动程序的进程空闲,它立即开始执行这个请求;若驱动程序的进程正在执行一个请求,这时它将新到来的请求排到一个等待处理的I/O请求队列中,待正执行的请求完成后,再依次从I/O请求队列中取出一个个I/O请求,逐个处理。
  在设备驱动程序的进程泄放一条或多条命令后,系统有两种处理方式,多数情况下,执行设备驱动程序的进程必须等待命令完成。这样,在命令开始执行后,它阻塞自己,直到中断处理时将它解除阻塞为止。而在其它情况下,命令执行不必延迟就很快完成。

例如,某些终端(包括IBM-PC)的滚屏操作,只要求把几个字节写到控制器的寄存器中即可,整个操作只在几微秒就能完成。因此,执行设备驱动程序的进程不必等待。
  上述两种处理方式,在操作完成后,都必须检查数据传输是否有错。若有错,则它返回一些错误状态信息给调用者。若无错,设备驱动程序还负责将数据传送到设备无关的软件层。若还有未完成的请求在排队,则再选择一个启动执行。若没有未完成的请求时,则该驱动程序进程等待下一个请求的到来。

1.整体式系统:

  整体式系统是最常用的组织的方式,但常被人们形容为"一锅粥",其结构实际就是"无结构"。整个操作系统是一堆过程的集合,每个过程都可以调用任意其他过程。使用这种技术时系统中的每一个过程都有一个定义完好的接口,即它的人口参数和返回值,而且相互间的调用不受约束。
  在整体式系统中,为了构造最终的目标操作系统程序,开发人员首先将一些独立的过程进行编译,然后用链接程序将其他链接在一起成为一个单独的目标程序。从信息隐藏的观点看,它没有任何程度的隐藏--每一个过程都对其他过程可见。(与此相对的是将系统分成若干个模块,信息被隐藏在这些模块内部,在外部只允许从预定好的调用。)
  多数CPU有两种状态:

核心态 供操作系统使用,该状态下可以执行机器的所有指令;
用户态 借用户程序用,该状态下I/O操作和某些其他操作不能执行。

  操作系统随后检查一张系统调用的参数以确定应执行哪条系统调用,它确定了将调用的服务过程。当系统调用结束后,控制又返回给用户程序(第4步),于是继续执行系统调用后面的语句。
  这种组织方式提出了操作系统的一种基本结构:

(1)一个用来调用被请求服务例程的主要程序。
  (2)一套执行系统调用的服务例程。
  (3)一套支持服务例程的实用过程。

在这种模型中,每一条系统调用都由一个服务例程完成;一组实用过程用来完成若干服务例程都需要用到的功能,如从用户程序获取数据等。

2. 层次式系统:

  整体式系统进一步通用化就成为层次式系统,即上层软件基于下层软件之上。按此模型构造的第一个操作系统是E.W.D和他和学生在荷兰的技术学院开发的THE系统(1968年)。THE系统是为荷兰制造的X8计算机(内存为32K个27比特的字)配备的一个简单的批处理系统。
  该系统分为六层,如下图所示。第零层进行处理分配,当发生中断或时钟到达期限时由该层软件进行切换。在第零层之上有若干个顺序进程运行,编写这些进程时就不再考虑多个进程在单一处理器上运行的细节。换句话说,第零层提供了CPU基本的多道程序功能。

层次

功能

5

操作员

4

用户程序

3

输入/输出管理

2

操作员-进程通信

1

内存和磁盘管理

0

处理器分配和多道程序

                  图 THE操作系统的结构

  第一层进行内存管理,它为进程分配内存空间,当内存用完时则会在用作对换的512K字的磁盘上分配空间。在第一层之上,进程不用再考虑它是在内存还是在磁盘上,因为第一层软件保证在需要访问某一页面时,它必定在内存中。
  第二层软件处理进程与操作员控制台之间的通信。在第二层之上,则可认为每个进程都有它自己的操作员控制台。
  第三层软件管理I/O设备和相关的信息流缓冲。在第三层之上,每个进程都与适当抽象了的设备打交道而不必考虑物理设备的细节。
  第四层是用户程序层,用户程序在此不考虑进程、内存、控制台和I/O设备等环节。系统操作员进程位于第五层。

3.虚拟机系统:

一个分时系统应该提供以下特性:(1)多道程序,(2)一个具有比裸机更方便,界面扩展的计算机。VM/370的主旨在于将此二者彻底地隔离开来。
  该系统的核心称作虚拟机监控程序,它在裸机上运行并具备多道程序功能。它向上层提供了若干台虚拟机。
  与其他操作系统不同的是:这些虚拟机不是那种具有文件等良好特征的扩展计算机,而仅仅是裸机硬件的精确复制。它包含有:核心态/用户态,I/O功能,中断,以及真实硬件具有的全部内容。
  因为每台虚拟机都与裸机完全一样,所以每台虚拟机可以运行裸机能够运行的任何操作系统。不同的虚拟机可以运行不同的操作系统而且往往如此。
  某些虚拟机运行OS/360的后续版本作批处理或事务处理,而同时另一些运行一个单用户交互系统供分时用户使用,该系统称作CMS(Conversational Monitor System,会话监控系统)。

4.客户/服务器系统:

现代操作系统的一个趋势是将这种把代码移到更高层次的思想进一步发展,从操作系统中去掉尽可能多的东西,而只留一个最小的核心。通常的方法是将大多数操作系统功能由用户进程来实现。为了获取某项服务,比如读文件中的一块,用户进程(现称客户进程,client process)将此请求发送给一个服务器进程(server process),服务器进程随后完成此操作并将回答信息送回。
  该系统中核心的全部工作是处理客户与服务器间的通信。操作系统被分割成许多部分,每一部分只处理一方面的功能,如文件服务.进程服务.终端服务或存储器服务。这样每一部分变得更小,更易于管理。
  而且,由于所有服务器以用户进程的形式运行,而不是运行在核心态,所以它们不直接访问硬件。
  这样处理的结果是:假如在文件服务器中发生错误,文件服务器可能崩溃,但不会导致整个系统的崩溃。

客户一服务器模型的另一个优点是它适用于分布式系统(参阅图1-3-6),如果一个客户通过消息传递与服务器通信,客户无需知道这条消息是在本机就地处理还是通过网络送给远地机器上的服务器。
  在这两种情况下,客户机的处理都是一样的:发送一个请求,收回合。某些操作系统功能(如向物理I/O设备寄存器写入命令字)靠用户空间的程序是很难完成的。

解决这个问题的方法有两种:

一种是设立一个运行于核心态的专用服务器进程,它具有访问硬件的绝对权力,但仍旧通过平常的消息机制与其他进程通信。
  另一种方法是在核心中建立一套最小的机制(mechanism),而将策略(policy)留给用户空间中的服务器进程。

例如核心可能将向某特定地址发送一条消息理解为:取该消息的内容并将其装入某台磁盘的I/O设备寄存器来启动读盘操作。
  此例中,核心甚至不对消息的内容进行合法性检查,而只是将它们机械地拷贝进磁盘设备寄存器(显然,这里需要使用某种方案以限制此类消息只能发给授权的进程)。机制与策略分离是一个重要的概念,它在操作系统的许多方面都经常出现。

十、I/O中断事件的处理:

 I/O中断事件是由于通道程序的执行或其他的外界原因引起的,现介绍两类I/O中断事件及其处理。

(一)操作正常结束:

当通道状态字(CSW)中仅有通道结束、控制器结束和设备结束时,表示已完成了通道程序所规定的所有操作,通道就形成输入输出操作正常结束中断事件。
  中断装置响应中断后,对独占设备来说,操作系统根据通道号和设备绝对号查设备分配表就可知道是哪个作业进程执行中请求启动设备的。
  现在操作正常结束意味着该进程已经得到指定设备传送来的信息或把信息传送给指定设备了,应使该进程的状态从"等待设备传输信息"变成"就绪"。
  对共享设备来说,当一个进程A请求该设备执行输入输出操作时,若该设备空闲,则操作系统可立即为其启动该设备;若该设备正在为另一进程B服务,那么只能让进程A处于"等待访问设备"的状态。
  当该设备完成了进程B请求的一次输入输出操作后,产生了操作正常结束的I/O中断事件,操作系统处理时不仅使进程B的状态变成"就绪",而且应让进程A也成为"就绪"状态,使进程A有机会去使用该设备。

(二)操作异常结束:

当通道发现有设备故障或设备特殊情况时就形成操作异常结束的I/O中断事件

1.设备故障:

当执行输入输出操作时,如果发现有硬件的故障,例如,接口错、控制错、通道程序错 (如通道命令没及时链接上)以及数据错(如校验码不符合)等情况,表示通道或设备出现了不正常。操作系统对这类事件的处理原则是先组织通道程序复执。
  例如,当读数据时发现有校验错,操作系统将重新启动通道,执行原来的通道命令进行重读。经复执后故障可能排除,若故障排除则通道就可继续执行通道程序;若经多次复执故障仍未排除,则操作系统只能输出一些信息,请维护人员人工排除故障。

2.设备特殊:

各种设备在工作时都可能发现一些特殊情况。例如,打印机发现纸用完,往磁带上写信息时磁带机发现到了末点,在读磁带文件时发现读到了带标等等。
  对出现的设计特殊事件,操作系统将分别处理,对打印机就要暂停打印输出,通知操作员装纸,然后再继续打印输出;对遇到磁带末点的情况,若文件还未写完则应做上"换卷"标记,且通知操作员换一个磁带卷,把文件的后继信息记录在另一卷上;对读磁带文件遇到带标的情况,表示用户需要的该文件信息已全部读出,操作系统通知用户并由用户自己进行文件结束的处理。

十一、虚拟设备的概念:

操作系统利用共享设备来模拟独占设备的工作,当系统只有一台输入设备和一台输出设备的情况下,可允许两个以上的作业并行执行,并且每个作业都感觉到获得了供自己独占使用的输入设备和输出设备。我们说,操作系统采用的这种技术为用户提供?quot;虚拟设备"。
  我们已经知道像输入机、打印机等独占使用的设备采用静态分配方式,既不能充分利用设备,又不利于提高系统效率,表现为:

(1)占有输入机和打印机的作业,只有一部分时间在使用它们处于空闲状态。在设备空闲时不允许其他作业去使用它们,因此,在其余时间里这些设备不能有效地利用这些设备。
  (2)当系统只配有一台输入机和一台打印机时,就不能接受两个以上要求使用输入机和打印机的作业同时执行,不利于多道并行工作。
  (3)这些独占设备大都是低速设备,在作业执行中往往由于等待这些设备的信息传输而延长了作业的执行时间。

所以,现代操作系统中都提供虚拟设备来解决这些问题。用可共享的磁盘来模拟输入机和打印机的工作,使每个作业都感到各自拥有独占使用的设备且它们的传输速度与磁盘的传输速度一样快。这种用一类物理设备模拟另一类物理设备的技术,使各作业在执行期间只使用虚拟的独占设备而不直接使用物理的独占设备。
  因此,每个作业也不必独占输入机和打印机。这种技术使独占使用的设备变成了可共享的设备,显然,设备的利用率和系统效率都能得到提高。

十二、虚拟设备的实现:

(一)基本条件:

实现虚拟设备必须要有一定的硬件和软件条件为基础。
  对硬件来说,必须配置大容量的磁盘,要有中断装置和通道,具有中央处理器与通道并行工作的能力。对操作系统来说,应采用多道程序设计技术。

(二)实现原理:

把一批作业的全部信息通过输入设备预先传送到磁盘上。在多道程序设计的系统中,可从磁盘上选择若干个作业同时装入主存储器,并让它们同时执行。
  由于作业的信息已全部在磁盘上,故作业执行时不必启动输入机读信息,而可以从共享的磁盘上读取各自的信息。把作业产生的结果也暂时存放在磁盘上而不直接启动打印机输出。直到一个作业得到全部结果而执行结束时,才把该作业的结果从打印机输出。
  可见,在作业执行过程中不需要使用输入机和打印机。打印机的情况下,可让多个作业同时执行。

(三)实现技术:

1.输入井和输出井系统只配置一台输入机
  为了实现虚拟设备必须在磁盘上划出称为"井"的专用存储空间,用以存放作业的初始信息和作业的执行结果。为了便于管理把"井"又分成两部分: "输入井"和"输出井"。"输入井"中存放作业的初始信息,"输出井"中存放作业的执行结果。
2.斯普林(SPOOL)系统
  操作系统中实现虚拟设备的功能模块是在计算机控制下通过联机的外围设备同时操作 (simultaneous peripheral operation online缩写为SPOOL)来实现其功能的,所以,也把它称为斯普林(SPOOL)系统。

  斯普林系统由三部分程序组成:

(1)预输入程序。
  我们经常把-批作业组织在一起形成作业流,预输入程序的任务是把作业流中的每个作业的初始信息传送到"输入井"保存以备作业执行时使用。

(2)井管理程序。
  作业执行过程中要求启动输入机(或打印机)读文件信息(或输出结果)时,操作系统根据作业的请求调出"井管理程序"工作,转换成从"输入井"读信息(或把结果写入"输出井")。
  对系统来说,从"井"中存取信息可以缩短信息的传输时间,从而加快作业的执行。
  对用户来说,只要保证信息的正确存取就行,至于信息是从"井"中存取还是从独占设备上存取无关紧要。
  由于磁盘是可共享的,因此从"井"中存取信息可以同时满足多个用户的读写要求,从而使每个用户都感到有供自己独立使用的输入机(或打印机)且速度与磁盘一样快。
  "井管理程序"还可分成"井管理读程序"和"井管理写程序"两个功能。
  当作业请求从输入机上读文件信息时,就把任务转交给"井管理读程序",从"输入井"读出信息供用户使用。当作业请求从打印机上输出结果时,就把任务转交给"井管理写程序",把产生的结果保存到"输出井"中。

(3)缓输出程序。
  缓输出程序负责查看"输出井"中是否有待输出的结果信息,若有,则启动打印机把作业的结果文件打印输出。
斯普林系统的结构如图所示。

3.功能实现:

当用户提交了一批作业后,操作员键入"预输出命令"启动输入程序工作。
  预输入程序查看作业表中是否有空登记项,若有空登记项则再检查"输入井"中是否有空闲空间,如果有空闲空间则可接纳新的作业进入"输入井"。
  然后,启动输入机读出并分析作业的标识信息,寻找"输入井"中的空间存放这些信息,把它们组织成链接文件的形式登记到预输入表中,直到该作业信息全部输入,把作业状态修改成"收容状态",将预输入表的位置填入作业表。
  当作业流中还有后继作业时,预输入程序继续工作,只要能接纳新作业,就按上述过程把作业信息存入"输入井",直到"输入井"的空间已占满或作业表中无空登记项时就暂不能再接纳新作业。当不能接纳新作业或当前作业流中信息已全部进入"输入井",则预输入程序工作结束,当需要时可再次启动预输入程序工作。
  当主存储器可以装入作业时,就从"输入井"中选择处于"收容状态"的作业执行,被选中的作业其状态应改为"执行状态"。作业执行过程中要求启动输入机读文件时,系统并不实际地启动输入机,而是调出"井管理读程序"工作,根据作业名先找到该作业的预输入表,再根据文件名可从预输入表中得到文件存放的起始位置,沿着链接指针可依次读出存放在"输入井"中的文件信息。
  在这里,"井管理读程序"模拟从输入机读文件的工作。由于输入机把读出的信息传送给作业后就不再保留已读出的信息,所以,"井管理读程序"从"输入井"读出文件信息后也不必保留该信息。
  于是,当文件信息传送给作业后,应把文件启动打印机输出结果时,系统也不实际地启动打印机,而是调出"井管理写程序"工作。首先根据作业名找到缓输出表,同时查找"输出井"中的空闲空间,把结果信息组织成链接文件存入"输出井",并在缓输出表中登记。作业执行结束后,把作业状态修改成"完成状态"。
  当处理器空闲时缓输出程序可以占用处理器,缓输出程序查看作业表,找出处于完成状态的作业,再查看相应的缓输出表得到结果文件的存放位置,读出文件信息并把它们转换成符合打印要求的格式,然后启动打印机将其打印输出。
  文件信息被打印输出后,文件占用"输出井"的存储空间应归还。一个作业的结果文件均被输出后,应将其在作业表中除名,相应的登记项成为空登记项,可以用来登记新进入"输入井"的作业。
  借助于硬件的中断装置和通道技术使得中央处理器与各种外围设备以及各外围设备之间均可并行工作。操作系统采用多道程序设计技术,合理分配处理器,实现联机的外围设备同时操作。作业执行时从磁盘上读写信息来代替从输入机和打印机的读写操作,不仅使多个作业可以同时执行,而且加快了作业的执行速度,提高了单位时间内处理作业的能力。
  在作业执行的同时还可利用输入机继续预输入作业信息和利用打印机输出结果。于是,整个系统可以是第一批作业的执行结果在打印输出,第二批作业正在处理,第三批作业信息正在预输入到磁盘的"输入井"中。这种联机同时操作极大地提高了独占设备的利用率,也使计算机系统的各种资源被充分利用。

4.缓冲技术:

CPU与各种外部设备的速度上的差异很大,设备与设备之间的速度的差异也很大。系统有时会产生大量的数据需要I/O,有时又会很长时间没有I/O。造成I/O负荷的不均匀。要解决这两个方面的问题就要引入缓冲的概念。
  缓冲是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。缓冲技术是用来匹配CPU与设备之间速度差异和负荷的不均匀。

  常用的缓冲技术有三种:

4.1双缓冲
  系统设置两个缓冲区,BUF1和BUF2,各进程使用这两个缓冲区。这种缓冲技术是最简单的,用于低频度活动号I/O。
  工作过程:首先输入将数据送入BUF1,然后,申请BUF2,在向BUF2输入数据的同时,输出进程可从BUF1中取数据。同理,向BUF1输入与从BUF2中取数据可以并行。

4.2环形缓冲
  在系统中设置若干缓冲区,并把这些缓冲区链接起来,这样若干个缓冲区就形成了一个环,故称环形缓冲区。
  环形缓冲技术使用
  设置一个输入指针in、一个输出指针out、开始指针strat。系统初始时,strat=in=out。输入时,要判断in是否与out相等,若相等,则要等待。否则,将信息送入in指向的缓冲区,填满后,将缓冲区中的指向下一个缓冲区的指针next置in,如此类推。输出时,首先判断out=in,若相等,则等待(意味着系统中没有数据可取)。否则,取出缓冲区中的信息,将缓冲区中的next置out;

4.3缓冲池
  系统设置多个缓冲区,形成一个缓冲池。这个池中的缓冲区为系统中所有的进程共享使用。例如,UNIX系统中,在块设备管理中设置了一个15个缓冲区组成的缓冲池。

重点难点分析:

1.相对号与绝对号:

  所谓相对号所对应的是逻辑设备,实际是物理设备属性的抽象(对应于"绝对号")。它不限于某个具体的物理设备,如一台名字为LST的具有打印机属性的逻辑设备,它可能是0#打印机或1#打印机,也可能是针式打印机或喷墨打印机或激光打印机,甚至可能是磁盘的某些空间(即虚拟打印机)。逻辑设备究竟和哪一台物理设备相对应,这要看当时设备的忙闲好坏情况。
  使用相对号的优点是:
  (1)当系统中某些物理设备发生意外情况不能工作或配置有变更时,用户程序无需修改,也不用重新编译,只需由设备管理程序修改相对号与物理号的对应关系即可。
  (2)能适应多道程序环境的需要。系统可根据当时设备的忙闲情况,合理调整物理设备,克服忙闲不均现象。如果让用户直接指定某台物理设备,系统就失去了调配的余地。
  (3)方便了用户,使用相对号,用户可完全不必知道系统中安装的究竟是何种型号的设备,以及有几台设备等。

2.各种调度算法的评价

  先来先服务(FCFS):

  原则:各进程对磁盘请求的等待队列按提出请求的时间进行排序,并按此次序给予服务。
  评价:
  访问请求均匀分布整个盘面,而不具有某种集中倾向时,导致随机访问模式--无法对访问优化!
  访问请求较多时,降低设备服务的吞吐量,提高响应时间;
  响应时间变化幅度较小!

  最短查找时间优先(SSTF):

  原则:选择请求队列中柱面号最接近于当前磁头所在柱面的访问请求作为下一个服务对象,即先执行查找时间最小的那个请求,而不管是否在磁臂的前进方向上还是相反。
  优点:较好的吞吐量(比FCFS),较低的平均响应时间。
  缺点:响应时间变化幅度很大,因为对用户请求的响应机会不均等:对中间磁道的访问请求得到最好的服务,对内,外两侧磁道的服务随偏离中心磁道的距离而越远越差;
  响应时间变化幅度很大:服务请求很多时可能造成对内,外边缘磁道的请求将会无限期地被迟延。

  电梯调度算法(有的书也称扫描算法):

  原则:选择请求队列中按磁臂前进方向最接近于磁头当前所在柱面的访问要求作为下一 个服务对象。由内向外,由外向内,反复地扫描访问请求,依次给予服务。若沿此方向不再有访问请求时,不必继续扫描,而是改变移动方向--使磁臂的移动频率和距离最小。
  优点:吞吐量比较大,平均响应时间较小。
  缺点:两侧磁道访问频率仍低于中间磁道--响应时间变化幅度

  单向扫描:

  原则:磁臂总是从0号柱面至最大号柱面顺序扫描,到头后直接返回0号柱面再重复进行看作最大号磁道的隔壁;当磁臂由外向内移动过程中,只服务于在磁臂本次移动开始前到达的访问请求,而不理会在磁臂单向移动过程中到达的新的访问请求--留给下一次。每次扫描直到对最内柱面上的访问请求满足后,磁臂即直接向外移动,使磁头停留在所有新的访问请求最外面的柱面上。然后再对本次移动前到达的访问请求依次给予服务。
  评价:由于只能一次服务,比电梯调度稍差一些。

3.通道

  通道控制方式比DMA方式有更强的并行性和独立性,它通过I/O通道代替CPU对外设进行控制和管理。
所谓I/O通道不是一般的数据通路,而是一种专门用于执行输入输出操作的处理机,它有自己的指令系统(通道指令系统)。通道通过执行由通道指令编写的通道程序控制外设的I/O操作。若CPU要执行I/O指令,则它要启动通道,然后返回继续执行原程序。通道被启动后,便会自动去内存取出通道程序,执行该程序控制I/O设备进行数据传输工作,直到数据传输完毕,再向CPU发出中断请求,CPU进行通道结束处理工作。

4.SPOOL技术

  SPOOL技术也称假脱机技术,是把独享设备改造成能同时为多个用户所共享的一种设备管理技术。其基本思想是,用大容量高速度的共享设备(如磁盘)来模拟那些独占地低速的设备,从而把独享设备变成逻辑上共享设备,亦即虚拟共享设备。
  SPOOL系统的组成如图6-5-1所示。整个系统由硬件和软件两部分组成。硬件部分是指磁盘中开辟出的SPOOL缓冲区,分为输入井和输出井。软件部分主要是SPOOL输入程序SR和输出程序SW。当某进程要求由独享设备输入数据时,由SR把输入数据从物理设备送入输入井,当进程需要使用时,再由I/O进程从输入井读入内存。当进程要输出数据时,则由I/O进程把数据先写入输出井,然后由SW依次送物理设备输出。

  SPOOL系统具有以下特点:

  (1)进程并未真正获得所要求的设备,实际分得的是输入井或输出井中的一块存储区。
  (2)缓和了CPU与I/O设备在速度上的不匹配性。
  (3)SPOOL系统对用户是透明的,用户仍使用逻辑设备名使用设备。

概念辨析,概念简释:

1.独占设备

  即不能共享的设备,一段时间只能由一个作业独占。所有字符型输入输出设备原则上都应是独占设备。

2.共享设备

可由若干作业同时共享的设备,如磁盘机等。共享分配技术保证多个进程可以同时方便地直接存取一台共享设备。共享提高了设备的利用率。块设备都是共享设备。

3.虚拟设备

  利用某种技术把独享设备改造成多台同类型独享设备或共享设备。虚拟分配技术就是利用独享设备去模拟共享设备,从而使独占设备成为可共享的、快速I/O的设备。

4.同时使用

  指多个作业可以交替地启动共享设备,当一个作业正在使用设备时其他作业暂不能使用,即每一时刻仍只有一个作业占用,但当一个作业暂时不用时其他作业就可使用。

5."统一"

  指对各种不同的设备应采用相同的用户界面,对某一种具体设备的使用,只是界面中的参数不同而已。

6."独立于设备"

含义有两个:
  (1)对立于设备类型,如用于访问硬盘的用户界面,应能适应各种不同类型的硬盘;
  (2)对立于同类设备中的具体台号,如系统中有多台打印机,当某进程申请输出打印时,无论分配给它哪一台,打印工作都能顺利进行。

7.三种时间

  寻找时间--磁头在移动臂带动下移动到指定柱面所花的时间。
  延迟时间--指定扇区旋转到磁头下所需的时间。
  传送时间--由磁头进行读写完成信息传送的时间。

本章小结:

文件管理提供按名存取,能把用户文件保存在存储介质上,或从存储介质上取出文件信息传送给用户。要实现这一功能必须把存储介质装到相应的外围设备上并且启动外围工作,所以,从设备管理的角度应考虑设备的分配和启动,以配合文件管理实现信息传送。
从使用的角度可把外围设备分成独占使用设备和可共享的设备两大类。对独占使用的设备一般采用静态分配策略,根据用户指定的设备类和台数进行分配。对可共享的磁盘不进行预先分配,而是根据确定的驱动调度算法来决定当前可以使用磁盘者。

  启动外围设备完成输入输出操作的过程可分三个阶段:组织通道程序并把通道程序首地址存入通道地址宇(CAW)中;用"启动I/O"指令启动通道工作,通道执行通道程序并把执行情况记录在通道状态字(CSW)中;完成输入输出操作后形成I/O中断,由操作系统作出相应的处理。

  为了提高独占设备的使用效率,创造多道并行工作的环境,增加单位时间内的算题量,充分利用系统的资源,操作系统借助硬件提供的中央处理器与外围设备之间的并行工作能力,采用多道程序设计技术,实现斯普林(SPOOI-)系统,通过预输入、"井管理"和缓输出为用户提供虚拟设备。

  文件系统为用户提供了按名存取文件的功能,用户把信息组织成逻辑文件,依照文件系统的规定提出存取要求,文件系统能按用户要求实现逻辑文件与物理文件之向的映射。但是,要完成文件信息的存取还必须启动相应的外围设备。操作系统中对外围设备的启动和控制工作由设备管理部分完成,所以,设备管理与文件系统是密切相关的,它们共同协作为用户提供方便。

同步练习:

1.独占分配技术是把独占设备固定地分配给(  ),并直到完成I/O并释放该设备为止。
 A.一个进程
 B.一个程序
 C.多个进程
 D.多个程序

参考答案:A

2.虚拟分配技术往往是利用共享设备去模拟(  )。
 A.SPOOLing
 B.独占设备
 C.软盘
 D.磁带机

参考答案:B

3.驱动调度算法中(  )和(  )算法可能会随时改变移动臂的运动方向。
 A.电梯调度 
 B.先来先服务  
 C.扫描   
 D.单向扫描  
 E.最短寻找时间优先

参考答案:B E

4.有关设备管理概念的下列叙述中,(  )和(  )是不正确的。
 A.通道是处理输入、输出的软件  
 B.所有外围设备的启动工作都由系统统一来做
 C.来自通道的I/O中断事件由设备管理负责处理  
 D.编制好的通道程序是存放在主存贮器中的
 E.由用户给出的设备编号是设备的绝对号

参考答案:A E

计算机操作系统学习(六)设备管理相关推荐

  1. 计算机系统概述学后感,计算机操作系统学习心得体会总结(2)

    计算机操作系统学习心得体会篇四 课程设计是每一个大学生在大学生涯中都不可或缺的,它使我们在实践中了巩固了所学的知识.在实践中锻炼自己的动手能力;实习又是对每一位大学生所学专业知识的一种拓展手段,它让我 ...

  2. 操作系统实验六--设备管理

    文章目录 操作系统实验六--设备管理 一.实验目的 二.实验内容 三.设计原理及相关算法 四.结果分析 五.源代码 操作系统实验六–设备管理 一.实验目的 1.通过实验,进一步了解设备独立性的概念: ...

  3. 操作系统实验六 设备管理

    实验六 设备管理 一.实验目的 1. 理解设备管理的概念和任务. 2. 掌握独占设备的分配.回收等主要算法的原理并编程实现. 二.实验内容与基本要求 1. 在Windows系统中,编写程序实现对独占设 ...

  4. 计算机操作系统学习(五)文件管理

    目录 学习建议: 基本内容: 一.文件系统的概念: 二.文件的概念: 三.文件的分类: 1.按文件用途分类 2.按文件属性分类 3.根据文件的使用情况 4.根据文件在外存上的组织形式 5.根据文件内的 ...

  5. 计算机操作系统学习(七)作业管理

    目录 学习建议: 基本内容: 一.作业的概念: 二.作业控制方式: (一)批处理方式: (二)交互方式: 三.批处理作业: 四.批处理作业的调度: (一)作业调度: (二)作业调度算法: (三)作业调 ...

  6. 计算机操作系统 学习笔记(第四版 汤小丹)(上)

    第一章-操作系统概述 操作系统基本概念 操作系统(Operation System),简称OS,是管理计算机『硬件』与『软件』资源的计算机程序.它负责计算机的全部软.硬资源的分配.调度工作,控制和协调 ...

  7. 计算机操作系统——学习笔记(下)

    文章目录 第六章 文件管理 文件系统模型 文件逻辑结构的类型 外存分配方式 目录管理 文件存储空间的管理 文件共享与文件保护 数据一致性 第七章 操作系统接口 第八章 网络操作系统 计算机网络概述 网 ...

  8. web.config文件访问物理路径_计算机操作系统学习笔记(五):文件管理

    五.设备管理 -- 文件管理 文件和进程是 OS 引入的两个重要概念. 5.1 文件的概念 5.1.1 文件概述 概念 文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的序列 文件(docum ...

  9. 怎样查找共享文件_计算机操作系统学习笔记(五):文件管理

    五.设备管理 -- 文件管理 文件和进程是 OS 引入的两个重要概念. 5.1 文件的概念 5.1.1 文件概述 概念 文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的序列 文件(docum ...

最新文章

  1. python自学步骤-学习Python最正确的步骤(0基础必备)
  2. linux命令we,Linux学习篇之基础命令
  3. 安装Python3的工具包报Microsoft Visual C++ 14.0 is required的错误
  4. sunday java_Sunday算法:最快的字符串匹配算法
  5. deepin nginx连接php,利用docker运行nginx加上本机的php-fpm。访问html文件正常,但是访问php文件就报错404...
  6. (九)深入浅出TCPIP之网络同步异步
  7. element table 怎么知道点击的是第几行_el-data-table, 让CRUD更简单??
  8. 万物皆可Graph | 当推荐系统遇上图神经网络(三)
  9. 图的深度优先遍历和宽度优先遍历C语言,图的遍历BFS广度优先搜索
  10. AppStore下载Xcode的文件
  11. Java中this、super的用法(2)
  12. php主页备案号底部中间,如何将网站备案号放到网站底部
  13. Windows 命令使用之 ping 命令
  14. 解决微信浏览器不能自动播放视频
  15. net stop sharedaccess命令 2009-1-15 11:10
  16. win10计算机管理员的权限才能删除,Win10文件夹删除不了需要管理员权限怎么办?Win10文件夹删除不了需要管理员权限的解决方法...
  17. mysql rpl_MySQL半同步复制rpl_semi_sync_master_timeout测试
  18. 给定经纬度定位某个城市
  19. 如何在Web of Science上免费下载文献
  20. ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)

热门文章

  1. php中=%3e -%3e的区别,华为nova3e与nova2s买哪个好?华为nova2s和nova3e区别对比详细评测...
  2. python爬取大学生就业分析专科和本科的信息https://edu.jobui.com/major/(上)JSON的存储
  3. 漫威超级争霸战怎么用电脑玩 漫威超级争霸战模拟器教程
  4. Final Cut Pro 初识/常用快捷键
  5. SAMSUNG S3C2440的简易BootLoader ㈢
  6. 新一代容器技术———Podman
  7. 用Python分割文件夹
  8. python爬取微博评论超100页_python爬取新浪微博评论-Go语言中文社区
  9. 网络安全架构部署:Fail Closed,Fail Open,Fail safe,Fail over是什么意思?
  10. 09组团队项目-Alpha冲刺-4/6