======第五章设备管理======(4)

简介: 5.5.4 SPOOLing 技术什么是 SPOOLing

======第五章设备管理======(3)https://developer.aliyun.com/article/1415859

5.5.4 SPOOLing 技术

  1. 什么是 SPOOLing

为了缓和 CPU 的高速性与 I/O 设备低速性间的矛盾而引入了脱机输入、脱机输出技术。 该技术是利用专门的外围控制机,将低速 I/O 设备上的数据传送到高速磁盘上;或者相反。 事实上,当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输 入时的外围控制机功能,把低速 I/O 设备上的数据传送到高速磁盘上;再用另一道程序来模 拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主 机的直接控制下,实现脱机输入、输出功能。此时的外围操作与 CPU 对数据的处理同时进 行,我们把这种在联机情况下实现的同时外围操作称为 SPOOLing(Simultaneaus Periphernal Operating On Line),或称为假脱机操作。

SPOOLing系统的组成

 (1) 输入井和输出井。这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时 的磁盘设备,用于暂存 I/O 设备输入的数据;输出井是模拟脱机输出时的磁盘,用于暂存用 户程序的输出数据。

 (2) 输入缓冲区和输出缓冲区。为了缓和 CPU 和磁盘之间速度不匹配的矛盾,在内存 中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的 数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送给输 出设备。

 (3) 输入进程 SP i 和输出进程 SPo 。这里利用两个进程来模拟脱机 I/O 时的外围控制机。 其中,进程 SP i 模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区 再送到输入井,当 CPU 需要输入数据时,直接从输入井读入内存;进程 SP o 模拟脱机输出 时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将 输出井中的数据经过输出缓冲区送到输出设备上。 图 5-22 示出了 SPOOLing 系统的组成。

20210714193447825.png

共享打印机

 打印机是经常要用到的输出设备,属于独占设备。利用 SPOOLing 技术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便了用户。共享打印机技 术已被广泛地用于多用户系统和局域网络中。当用户进程请求打印输出时,SPOOLing 系统 同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:① 由 输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;② 输出进 程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该 表挂到请求打印队列上。如果还有进程要求打印输出,系统仍可接受该请求,也同样为该 进程做上述两件事。

 如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中 的要求将要打印的数据,从输出井传送到内存缓冲区,再由打印机进行打印。打印完后, 输出进程再查看请求打印队列中是否还有等待打印的请求表。若有,又取出队列中的第一 张表,并根据其中的要求进行打印,如此下去,直至请求打印队列为空,输出进程才将自 己阻塞起来。仅当下次再有打印请求时,输出进程才被唤醒。


SPOOLing 系统的特点

 (1) 提高了 I/O 的速度。这里,对数据所进行的 I/O 操作,已从对低速 I/O 设备进行的 I/O 操作,演变为对输入井或输出井中数据的存取,如同脱机输入输出一样,提高了 I/O 速 度,缓和了 CPU 与低速 I/O 设备之间速度不匹配的矛盾。

 (2) 将独占设备改造为共享设备。因为在 SPOOLing 系统中,实际上并没为任何进程分 配设备,而只是在输入井或输出井中为进程分配一个存储区和建立一张 I/O 请求表。这样, 便把独占设备改造为共享设备。

 (3) 实现了虚拟设备功能。宏观上,虽然是多个进程在同时使用一台独占设备,而对于 每一个进程而言,他们都会认为自己是独占了一个设备。当然,该设备只是逻辑上的设备。 SPOOLing 系统实现了将独占设备变换为若干台对应的逻辑设备的功能。

5.6 磁盘存储器的管理

 磁盘存储器不仅容量大,存取速度快,而且可以实现随机存取,是当前存放大量程序 和数据的理想设备,故在现代计算机系统中,都配置了磁盘存储器,并以它为主来存放文 件。这样,对文件的操作,都将涉及到对磁盘的访问。磁盘 I/O 速度的高低和磁盘系统的可 靠性,都将直接影响到系统性能。因此,设法改善磁盘系统的性能,已成为现代操作系统 的重要任务之一。

5.6.1 磁盘性能简述

  1. 数据的组织和格式

磁盘设备可包括一或多个物理盘片,每个磁盘片分一个或两个存储面(surface)(见图5-23(a)),每个磁盘面被组织成若干个同心环,这种环称为磁道(track),各磁道之间留有必 要的间隙。为使处理简单起见,在每条磁道上可存储相同数目的二进制位。这样,磁盘密 度即每英寸中所存储的位数,显然是内层磁道的密度较外层磁道的密度高。每条磁道又被 逻辑上划分成若干个扇区(sectors),软盘大约为 8~32 个扇区,硬盘则可多达数百个,图 5-23(b)显示了一个磁道分成 8 个扇区。一个扇区称为一个盘块(或数据块),常常叫做磁盘扇 区。各扇区之间保留一定的间隙。

20210714195753107.png

一个物理记录存储在一个扇区上,磁盘上存储的物理记录块数目是由扇区数、磁道数 以及磁盘面数所决定的。例如,一个 10 GB 容量的磁盘,有 8 个双面可存储盘片,共 16 个 存储面(盘面),每面有 16 383 个磁道(也称柱面),63 个扇区。

 为了提高磁盘的存储容量,充分利用磁盘外面磁道的存储能力,现代磁盘不再把内外 磁道划分为相同数目的扇区,而是利用外层磁道容量较内层磁道大的特点,将盘面划分成 若干条环带,使得同一环带内的所有磁道具有相同的扇区数。显然,外层环带的磁道拥有 较内层环带的磁道更多的扇区。为了减少这种磁道和扇区在盘面分布的几何形式变化对驱 动程序的影响,大多数现代磁盘都隐藏了这些细节,向操作系统提供虚拟几何的磁盘规格, 而不是实际的物理几何规格。

 为了在磁盘上存储数据,必须先将磁盘低级格式化。图 5-24 示出了一种温盘(温切斯特 盘)中一条磁道格式化的情况。其中每条磁道含有 30 个固定大小的扇区,每个扇区容量 为 600 个字节,其中 512 个字节存放数据,其余的用于存放控制信息。每个扇区包括两个字段:

 (1) 标识符字段,其中一个字节的 SYNCH 具有特定的位图像,作为该字段的定界符, 利用磁道号、 磁头号及扇区号三者来标识一个扇区;CRC 字段用于段校验。

 (2) 数据字段,其中可存放 512 个字节的数据。

2021071419582240.png

磁盘格式化完成后,一般要对磁盘分区。在逻辑上,每个分区就是一个独立的逻辑磁 盘。每个分区的起始扇区和大小都记录在磁盘 0 扇区的主引导记录分区表所包含的分区表 中。在这个分区表中必须有一个分区被标记成活动的,以保证能够从硬盘引导系统。

 但是,在真正可以使用磁盘前,还需要对磁盘进行一次高级格式化,即设置一个引导块、 空闲存储管理、根目录和一个空文件系统,同时在分区表中标记该分区所使用的文件系统。


磁盘的类型

 1) 固定头磁盘

 这种磁盘在每条磁道上都有一读/写磁头,所有的磁头都被装在一刚性磁臂中。通过这 些磁头可访问所有各磁道,并进行并行读/写,有效地提高了磁盘的 I/O 速度。这种结构的 磁盘主要用于大容量磁盘上。

 2) 移动头磁盘

 每一个盘面仅配有一个磁头,也被装入磁臂中。为能访问该盘面上的所有磁道,该磁 头必须能移动以进行寻道。可见,移动磁头仅能以串行方式读/写,致使其 I/O 速度较慢; 但由于其结构简单,故仍广泛应用于中小型磁盘设备中。在微型机上配置的温盘和软盘都 采用移动磁头结构,故本节主要针对这类磁盘的 I/O 进行讨论。


磁盘访问时间

 磁盘设备在工作时以恒定速率旋转。为了读或写,磁头必须能移动到所要求的磁道上, 并等待所要求的扇区的开始位置旋转到磁头下,然后再开始读或写数据。故可把对磁盘的 访问时间分成以下三部分。


 1) 寻道时间 Ts

 这是指把磁臂(磁头)移动到指定磁道上所经历的时间。该时间是启动磁臂的时间 s 与磁 头移动 n 条磁道所花费的时间之和,即


     Ts =m×n+s

 其中,m 是一常数,与磁盘驱动器的速度有关。对于一般磁盘,m = 0.2;对于高速磁盘,m≤0.1,磁臂的启动时间约为 2 ms。这样,对于一般的温盘,其寻道时间将随寻道距离的 增加而增大,大体上是 5~30 ms。

 2) 旋转延迟时间 Tr

 这是指定扇区移动到磁头下面所经历的时间。不同的磁盘类型中,旋转速度至少相差 一个数量级,如软盘为 300 r/min,硬盘一般为 7200~15 000 r/min,甚至更高。对于磁盘旋 转延迟时间而言,如硬盘,旋转速度为 15 000 r/min,每转需时 4 ms,平均旋转延迟时间 Tr 为 2 ms;而软盘,其旋转速度为 300 r/min 或 600 r/min,这样,平均 T r 为 50~100 ms。

 3) 传输时间 Tt

 这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。T t 的大小与每次所读/写的 字节数 b 和旋转速度有关:

20210714201203198.png

其中,r 为磁盘每秒钟的转数;N 为一条磁道上的字节数,当一次读/写的字节数相当于半条 磁道上的字节数时,T t 与 T r 相同。因此,可将访问时间 T a 表示为


由上式可以看出,在访问时间中,寻道时间和旋转延迟时间基本上都与所读/写数据的多少无关,而且它通常占据了访问时间中的大头。例如,我们假定寻道时间和旋转延迟时 间平均为 20 ms,而磁盘的传输速率为 10 MB/s,如果要传输 10 KB 的数据,此时总的访问 时间为 21 ms,可见传输时间所占比例是非常小的。当传输 100 KB 数据时,其访问时间也 只是 30 ms,即当传输的数据量增大 10 倍时,访问时间只增加约 50%。目前磁盘的传输速率已达 80 MB/s 以上,数据传输时间所占的比例更低。可见,适当地集中数据(不要太零散) 传输,将有利于提高传输效率。

5.6.2 磁盘调度

  1. 先来先服务 FCFS

这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此 算法的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的 请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较 长。图 5-25 示出了有 9 个进程先后提出磁盘 I/O 请求时,按 FCFS 算法进行调度的情况。 这里将进程号(请求者)按他们发出请求的先后次序排队。这样,平均寻道距离为 55.3 条磁道, 与后面即将讲到的几种调度算法相比,其平均寻道距离较大,故 FCFS 算法仅适用于请求磁 盘 I/O 的进程数目较少的场合。

20210714201337753.png最短寻道事件优先 SSTF

 该算法选择这样的进程:其要求访问的磁道与当前磁头所在的磁道距离最近,以使每 次的寻道时间最短。但这种算法不能保证平均寻道时间最短。图 5-26 示出了按 SSTF 算法 进行调度时,各进程被调度的次序、每次磁头移动的距离,以及 9 次调度磁头平均移动的 距离。比较图 5-25 和图 5-26 可以看出,SSTF 算法的平均每次磁头移动距离明显低于 FCFS 的距离,因而 SSTF 较之 FCFS 有更好的寻道性能,故过去曾一度被广泛采用。

20210714201429708.png

扫描(SCAN)算法

 1) 进程“饥饿”现象 SSTF 算法虽然能获得较好的寻道性能,但却可能导致某个进程发生“饥饿”(Starvation)现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距 离较近,这种新进程的 I/O 请求必然优先满足。对 SSTF 算法略加修改后所形成的 SCAN 算 法,即可防止老进程出现“饥饿”现象。

 2) SCAN 算法

 该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN 算法所考虑的下一个访问对象,应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直至再无更外 的磁道需要访问时,才将磁臂换向为自外向里移动。这时,同样也是每次选择这样的进程 来调度,即要访问的磁道在当前位置内距离最近者,这样,磁头又逐步地从外向里移动, 直至再无更里面的磁道要访问,从而避免了出现“饥饿”现象。由于在这种算法中磁头移 动的规律颇似电梯的运行,因而又常称之为电梯调度算法。图 5-27 示出了按 SCAN 算法对 9 个进程进行调度及磁头移动的情况。

20210714201556577.png

循环扫描 (CSCAN)算法

 SCAN 算法既能获得较好的寻道性能,又能防止“饥饿”现象,故被广泛用于大、中、 小型机器和网络中的磁盘调度。但 SCAN 也存在这样的问题:当磁头刚从里向外移动而越 过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续 从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进 程的请求被大大地推迟。为了减少这种延迟,CSCAN 算法规定磁头单向移动,例如,只是 自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道, 亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。采用循环扫描方式后,上 述请求进程的请求延迟将从原来的 2T 减为 T + Smax ,其中,T 为由里向外或由外向里单向扫 描完要访问的磁道所需的寻道时间,而 S max 是将磁头从最外面被访问的磁道直接移到最里 面欲访问的磁道(或相反)的寻道时间。图 5-28 示出了 CSCAN 算法对 9 个进程调度的次序及 每次磁头移动的距离。

20210714201733654.png

NStepSCAN 和 FSCAN 调度算法

 1) NStepSCAN 算法

 在 SSTF、 SCAN 及 CSCAN 几种调度算法中,都可能会出现磁臂停留在某处不动的情 况,例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某 一磁道的 I/O 操作, 从而垄断了整个磁盘设备。 我们把这一现象称为“磁臂粘着” (Armstickiness)。在高密度磁盘上容易出现此情况。N 步 SCAN 算法是将磁盘请求队列分成 若干个长度为 N 的子队列,磁盘调度将按 FCFS 算法依次处理这些子队列。而每处理一个 队列时又是按 SCAN 算法,对一个队列处理完后,再处理其他队列。当正在处理某子队列 时,如果又出现新的磁盘 I/O 请求,便将新请求进程放入其他队列,这样就可避免出现粘着 现象。当 N 值取得很大时,会使 N 步扫描法的性能接近于 SCAN 算法的性能;当 N=1 时, N 步 SCAN 算法便蜕化为 FCFS 算法。

 2) FSCAN 算法

 FSCAN 算法实质上是 N 步 SCAN 算法的简化,即 FSCAN 只将磁盘请求队列分成两个 子队列。一个是由当前所有请求磁盘 I/O 的进程形成的队列,由磁盘调度按 SCAN 算法进 行处理。在扫描期间,将新出现的所有请求磁盘 I/O 的进程,放入另一个等待处理的请求队 列。这样,所有的新请求都将被推迟到下一次扫描时处理。

5.6.3 磁盘高速缓存 磁盘高速缓存的形式

 这里所说的磁盘高速缓存,并非通常意义下的内存和 CPU 之间所增设的一个小容量高 速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,这里的高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。高速缓 存在内存中可分成两种形式。第一种是在内存中开辟一个单独的存储空间来作为磁盘高速 缓存,其大小是固定的,不会受应用程序多少的影响;第二种是把所有未利用的内存空间 变为一个缓冲池,供请求分页系统和磁盘 I/O 时(作为磁盘高速缓存)共享。此时,高速缓存 的大小显然不再是固定的。当磁盘 I/O 的频繁程度较高时,该缓冲池可能包含更多的内存空 间;而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间。


数据交付方式

 数据交付(Data Delivery)是指将磁盘高速缓存中的数据传送给请求者进程。当有一进程 请求访问某个盘块中的数据时,由核心先去查看磁盘高速缓冲器,看其中是否存在进程所 需访问的盘块数据的拷贝。若有其拷贝,便直接从高速缓存中提取数据交付给请求者进程, 这样,就避免了访盘操作,从而使本次访问速度提高 4~6 个数量级;否则,应先从磁盘中 将所要访问的数据读入并交付给请求者进程,同时也将数据送高速缓存。当以后又需要访 问该盘块的数据时,便可直接从高速缓存中提取。


系统可以采取两种方式将数据交付给请求进程:


 (1) 数据交付。这是直接将高速缓存中的数据,传送到请求者进程的内存工作区中。

 (2) 指针交付。这是只将指向高速缓存中某区域的指针交付给请求者进程。


 后一种方式由于所传送的数据量少,因而节省了数据从磁盘高速缓存到进程的内存工 作区的时间。


置换算法

 如同请求调页(段)一样,在将磁盘中的盘块数据读入高速缓存时,同样会出现因高速缓 存中已装满盘块数据而需要将该数据先换出的问题。相应地,也必然存在着采用哪种置换 算法的问题。较常用的置换算法仍然是最近最久未使用算法 LRU、最近未使用算法 NRU 及 最少使用算法 LFU 等。


 由于请求调页中的联想存储器与高速缓存(磁盘 I/O 中)的工作情况不同,因而使得在置 换算法中所应考虑的问题也有所差异。因此,现在不少系统在设计其高速缓存的置换算法 时,除了考虑到最近最久未使用这一原则外,还考虑了以下几点:


 1) 访问频率

 通常,每执行一条指令时,便可能访问一次联想存储器,亦即联想存储器的访问频率, 基本上与指令执行的频率相当。而对高速缓存的访问频率,则与磁盘 I/O 的频率相当。因此, 对联想存储器的访问频率远远高于对高速缓存的访问频率。

 2) 可预见性

 在高速缓存中的各盘块数据,有哪些数据可能在较长时间内不会再被访问,又有哪些 数据可能很快就再被访问,会有相当一部分是可预知的。例如,对二次地址及目录块等, 在它被访问后,可能会很久都不再被访问。又如,正在写入数据的未满盘块,可能会很快 又被访问。

 3) 数据的一致性

 由于高速缓存是做在内存中的,而内存一般又是一种易失性的存储器,一旦系统发生 故障,存放在高速缓存中的数据将会丢失;而其中有些盘块(如索引结点盘块)中的数据已被修改,但尚未拷回磁盘,因此,当系统发生故障后,可能会造成数据的不一致性。 基于上述考虑,在有的系统中便将高速缓存中的所有盘块数据拉成一条 LRU 链。对于 那些会严重影响到数据一致性的盘块数据和很久都可能不再使用的盘块数据,都放在 LRU 链的头部,使它们能被优先写回磁盘,以减少发生数据不一致性的概率,或者可以尽早地 腾出高速缓存的空间。对于那些可能在不久之后便要再使用的盘块数据,应挂在 LRU 链的 尾部,以便在不久以后需要时,只要该数据块尚未从链中移至链首而被写回磁盘,便可直 接到高速缓存中(即 LRU 链中)去找到它们。


周期性地写回磁盘

 还有一种情况值得注意: 那就是根据 LRU 算法,那些经常要被访问的盘块数据,可能 会一直保留在高速缓存中,长期不会被写回磁盘。(注意,LRU 链意味着链中任一元素在被 访问之后,总是又被挂到链尾而不被写回磁盘;只是一直未被访问的元素,才有可能移到 链首,而被写回磁盘。)例如,一位学者一上班便开始撰写论文,并边写边修改,他正在写作的论文就一直保存在高速缓存的 LRU 链中。如果在快下班时,系统突然发生故障,这样, 存放在高速缓存中的已写论文将随之消失,致使他枉费了一天的劳动。

 为了解决这一问题,在 UNIX 系统中专门增设了一个修改(update)程序,使之在后台运 行,该程序周期性地调用一个系统调用 SYNC。该调用的主要功能是强制性地将所有在高速 缓存中已修改的盘块数据写回磁盘。一般是把两次调用 SYNC 的时间间隔定为 30 s。这样, 因系统故障所造成的工作损失不会超过30 s的劳动量。而在MS-DOS中所采用的方法是: 只 要高速缓存中的某盘块数据被修改,便立即将它写回磁盘,并将这种高速缓存称为“写穿 透、高速缓存”(write-through cache)。MS-DOS 所采用的写回方式,几乎不会造成数据的丢 失,但须频繁地启动磁盘。

5.6.4 提高磁盘 I/O速度的其他方法

  1. 提前读

用户(进程)对文件进行访问时,经常采用顺序访问方式,即顺序地访问文件各盘块的数 据。在这种情况下,在读当前块时可以预知下一次要读的盘块。因此,可以采取预先读方 式,即在读当前块的同时,还要求将下一个盘块(提前读的块)中的数据也读入缓冲区。这样, 当下一次要读该盘块中的数据时,由于该数据已被提前读入缓冲区,因而此时便可直接从 缓冲区中取得下一盘块的数据,而不需再去启动磁盘 I/O,从而大大减少了读数据的时间。 这也就等效于提高了磁盘 I/O 的速度。“提前读”功能已被广泛采用,如在 UNIX 系统、OS/2, 以及在 3 Plus 和 Netware 等的网络 OS 中,都已采用该功能。


延迟写

 延迟写是指在缓冲区 A 中的数据,本应立即写回磁盘,但考虑到该缓冲区中的数据在不 久之后可能还会再被本进程或其它进程访问(共享资源),因而并不立即将该缓冲区 A 中的数 据写入磁盘,而是将它挂在空闲缓冲区队列的末尾。随着空闲缓冲区的使用,缓冲区也缓缓 往前移动,直至移到空闲缓冲队列之首。当再有进程申请到该缓冲区时,才将该缓冲区中的数据写入磁盘,而把该缓冲区作为空闲缓冲区分配出去。当该缓冲区 A 仍在队列中时,任何 访问该数据的进程,都可直接读出其中的数据而不必去访问磁盘。这样,又可进一步减小等 效的磁盘 I/O 时间。同样,“延迟写”功能已在 UNIX 系统、OS/2 等 OS 中被广泛采用。


优化物理块的分布

 另一种提高磁盘 I/O 速度的重要措施是优化文件物理块的分布,使磁头的移动距离最 小。虽然链接分配和索引分配方式都允许将一个文件的物理块分散在磁盘的任意位置,但 如果将一个文件的多个物理块安排得过于分散,会增加磁头的移动距离。例如,将文件的 第一个盘块安排在最里的一条磁道上,而把第二个盘块安排在最外的一条磁道上,这样, 在读完第一个盘块后转去读第二个盘块时,磁头要从最里的磁道移到最外的磁道上。如果 我们将这两个数据块安排在属于同一条磁道的两个盘块上,显然会由于消除了磁头在磁道 间的移动,而大大提高对这两个盘块的访问速度。

 对文件盘块位置的优化,应在为文件分配盘块时进行。如果系统中的空白存储空间是 采用位示图方式表示的,则要将同属于一个文件的盘块安排在同一条磁道上或相邻的磁道 上是十分容易的事。这时,只要从位示图中找到一片相邻接的多个空闲盘块即可。但当系 统采用线性表(链)法来组织空闲存储空间时,要为一文件分配多个相邻接的盘块,就要困难 一些。此时,我们可以将在同一条磁道上的若干个盘块组成一簇,例如,一簇包括 4 个盘 块,在分配存储空间时,以簇为单位进行分配。这样就可以保证在访问这几个盘块时,不 必移动磁头或者仅移动一条磁道的距离,从而减少了磁头的平均移动距离。


虚拟盘

 所谓虚拟盘,是指利用内存空间去仿真磁盘,又称为 RAM 盘。该盘的设备驱动程序也 可以接受所有标准的磁盘操作,但这些操作的执行,不是在磁盘上而是在内存中。这些对 用户都是透明的。换言之,用户并不会发现这与真正的磁盘操作有什么不同,而仅仅是略 微快些而已。虚拟盘的主要问题是:它是易失性存储器,故一旦系统或电源发生故障,或 系统再启动时,原来保存在虚拟盘中的数据将会丢失。因此,虚拟盘通常用于存放临时文 件,如编译程序所产生的目标程序等。虚拟盘与磁盘高速缓存的主要区别在于: 虚拟盘中的 内容完全由用户控制,而高速磁盘缓存中的内容则是由 OS 控制的。例如,RAM 盘在开始 时是空的,仅当用户(程序)在 RAM 盘中创建了文件后,RAM 盘中才有内容。

5.6.5廉价磁盘冗余阵列

  1. 并行交叉存取

为了提高对磁盘的访问速度,已把在大、中型机中应用的交叉存取(Interleave)技术应用 到了磁盘存储系统中。在该系统中,有多台磁盘驱动器,系统将每一盘块中的数据分为若 干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上。在 以后,当要将一个盘块的数据传送到内存时,采取并行传输方式,将各个盘块中的子盘块数据同时向内存中传输,从而使传输时间大大减少。例如,在存放一个文件时,可将该文 件中的第一个数据子块放在第一个磁盘驱动器上;将文件的第二个数据子块放在第二个磁 盘上;……;将第 N 个数据子块,放在第 N 个驱动器上。以后在读取数据时,采取并行读 取方式,即同时从第 1~N 个数据子块读出数据,这样便把磁盘 I/O 的速度提高了 N-1 倍。 图 5-29 示出了磁盘并行交叉存取方式。

20210714202332815.png


RAID 的分级

 RAID 在刚被推出时,是分成 6 级的,即 RAID 0 级至 RAID 5 级,后来又增加了 RAID 6 级和 RAID 7 级。

 (1) RAID 0 级。本级仅提供了并行交叉存取。它虽能有效地提高磁盘 I/O 速度,但并 无冗余校验功能,致使磁盘系统的可靠性不好。只要阵列中有一个磁盘损坏,便会造成不 可弥补的数据丢失,故较少使用。

 (2) RAID 1 级。它具有磁盘镜像功能,例如,当磁盘阵列中具有 8 个盘时,可利用其 中 4 个作为数据盘,另外 4 个作为镜像盘,在每次访问磁盘时,可利用并行读、写特性, 将数据分块同时写入主盘和镜像盘。故其比传统的镜像盘速度快,但其磁盘容量的利用率 只有 50%,它是以牺牲磁盘容量为代价的。

 (3) RAID 3 级。这是具有并行传输功能的磁盘阵列。它利用一台奇偶校验盘来完成数 据的校验功能,比起磁盘镜像,它减少了所需要的冗余磁盘数。例如,当阵列中只有 7 个 盘时,可利用 6 个盘作数据盘,一个盘作校验盘。磁盘的利用率为 6/7。RAID 3 级经常用 于科学计算和图像处理。

 (4) RAID 5 级。这是一种具有独立传送功能的磁盘阵列。每个驱动器都各有自己独立 的数据通路,独立地进行读/写,且无专门的校验盘。用来进行纠错的校验信息,是以螺旋 (Spiral)方式散布在所有数据盘上。RAID 5 级常用于 I/O 较频繁的事务处理中。

 (5) RAID 6 级和 RAID 7 级。这是强化了的 RAID。在 RAID 6 级的阵列中,设置了一 个专用的、可快速访问的异步校验盘。该盘具有独立的数据访问通路,具有比 RAID 3 级及 RAID 5 级更好的性能,但其性能改进得很有限,且价格昂贵。RAID 7 级是对 RAID 6 级的 改进,在该阵列中的所有磁盘,都具有较高的传输速率和优异的性能,是目前最高档次的 磁盘阵列,但其价格也较高。


RAID 的优点

 RAID 自 1988 年问世后,便引起了人们的普遍关注,并很快地流行起来。这主要是因 为 RAID 具有下述一系列明显的优点:

 (1) 可靠性高。RAID 最大的特点就是它的高可靠性。除了 RAID 0 级外,其余各级都采 用了容错技术。当阵列中某一磁盘损坏时,并不会造成数据的丢失,因为它既可实现磁盘镜 像,又可实现磁盘双工,还可实现其它的冗余方式。所以此时可根据其它未损坏磁盘中的信息,来恢复已损坏的盘中的信息。它与单台磁盘机相比, 其可靠性高出了一个数量级。

 (2) 磁盘 I/O 速度高。由于磁盘阵列可采取并行交叉存取方式,故可将磁盘 I/O 速度提 高 N-1 倍(N 为磁盘数目)。或者说,磁盘阵列可将磁盘 I/O 速度提高数倍至数十倍。

 (3) 性能/价格比高。利用 RAID 技术来实现大容量高速存储器时,其体积与具有相同容 量和速度的大型磁盘系统相比,只是后者的 1/3,价格也只是后者的 1/3,且可靠性高。换 言之,它仅以牺牲 1/N 的容量为代价,换取了高可靠性;而不像磁盘镜像及磁盘双工那样, 须付出 50%容量的代价。


目录
相关文章
|
6月前
|
监控 前端开发 JavaScript
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
326 0
|
6月前
|
存储 数据安全/隐私保护 Windows
======第六章文件管理======(2)
6.5.2 直接文件和哈希文件 直接文件
90 0
|
6月前
|
开发框架 .NET 数据处理
======第五章设备管理======(2)
5.2.4 I/O 通道控制方式 I/O 通道控制方式的引入
82 0
|
6月前
|
算法 安全 Unix
======第五章设备管理======(3)
5.4 I/O 软件 5.4.1 I/O 软件的设计目标和原则   1) 与具体设备无关
120 0
|
6月前
|
存储 传感器 数据处理
======第五章设备管理======(1)
  计算机系统的一个重要组成部分是 I/O 系统。在该系统中包括有用于实现信息输入、输出和存储功能的设备和相应的设备控制器,在有的大、中型机中,还有 I/O 通道或 I/O 处理机。设备管理的对象主要是 I/O 设备,还可能要涉及到设备控制器和 I/O 通道。而设备管理的基本任务是完成用户提出的 I/O 请求,提高 I/O 速率以及提高 I/O 设备的利用率。设备管 理的主要功能有: 缓冲区管理、设备分配、设备处理、虚拟设备及实现设备独立性等。由于 I/O 设备不仅种类繁多,而且它们的特性和操作方式往往相差甚大,这就使得设备管理成为操作系统中最繁杂且与硬件最紧密相关的部分。
82 0
|
6月前
|
存储 Unix Linux
======第六章文件管理======(3)
6.3.4 索引分配 单级索引分配 链接分配方式虽然解决了连续分配方式所存在的问题,但又出现了下述另外两个问题:
101 0
|
6月前
|
存储 算法 Unix
======第六章文件管理======(4)
6.5 文件存储空间的管理 6.5.1 空闲表法和空闲链表法 空闲表法   
95 0
|
6月前
|
存储 人工智能 算法
======第六章文件管理======(1)
 在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存, 故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它 们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然, 这是用户所不能胜任、也不愿意承担的工作。于是,取而代之的便是在操作系统中又增加 了文件管理功能,即构成一个文件系统,负责管理在外存上的文件,并把对文件的存取、 共享和保护等手段提供给用户。这不仅方便了用户,保证了文件的安全性,还可有效地提 高系统资源的利用率。 6.1 文件和文件
67 0
|
C语言
3D打印Marlin2.0固件源代码分析之如何使用LOG接口调试代码
3D打印Marlin2.0固件源代码分析之如何使用LOG接口调试代码
280 0
|
监控 数据库
【乌拉喵.教程】“多负载识别监控平台(上位机)”技术细节 之Unit4-Form4系统设置界面
【乌拉喵.教程】“多负载识别监控平台(上位机)”技术细节 之Unit4-Form4系统设置界面
116 0