大容量存储器的结构
1、大容量存储器结构简介
大容量的存储结构主要包括磁盘和磁带,在现在的日常生活中,磁带已经不常见了,现在我们主要用的是磁盘。
2、磁盘结构
现代磁盘驱动器可以看做一个一维的逻辑块的数组,磁盘的最小逻辑单元不是我们传统意义上的字节,而是块,块的大小可以通过低级格式化来选择不同的逻辑块大小。
3、磁盘附属
计算机访问磁盘一般有两种方式,一种是通过I/O端口(也称为主机附属存储),小系统常采用这种方式,另外一种是通过分布式文件系统的远程主机,这称为网络附属存储。
3.1、主机附属存储
主机附属存储是通过本地I/O端口访问的存储,典型的台式计算机使用I/O总线结构来访问磁盘,这种方式在我们日常生活中使用的计算机中很常见。稍微有点计算机概念的人很容易理解。
3.2、网络附属存储
网络附属存储设备是数据网络中远程访问的专用存储系统,远程进程调用可通过IP网络的TCP或者UDP来进行。网络附属存储单元通常用带有RPC接口软件的RAID阵列来实现。该存储方式的缺点是存储I/O操作需要使用数据网络的带宽,因此增加了网络通信延迟。
3.3、存储区域网络
存储区域网络时服务器与存储单元之间的私有网络(采用存储协议而不是网络协议)
4、磁盘调度
操作系统的任务之一就是有效的使用硬件,对于磁盘驱动器来说,满足这一要求意味着要有较快的访问速度和较宽的磁带宽度,访问时间主要包括两部分:寻道时间和旋转延迟。
寻道时间是磁臂将磁头移动到包含目标扇区的柱面的时间。
旋转延迟是磁盘需要将目标产区转动到磁头下的时间。
磁盘带宽是所传递的总的字节数初一从服务请求开始到最后传递结束时的总时间。
4.1、FCFS调度
最简单的磁盘调度形式当然是先来先服务算法(FCFS)这种算法本身比较公平,但是它通常提供最快的服务。
4.2、SSTF调度
在将磁头移到远处处理其他请求之前,先处理靠近当前磁头位置的请求可能较为合理,这就是最短寻道时间优先算法(SSTF)。SSTF算法选择距当前磁头位置由最短寻到时间的请求来处理。由于寻道时间随磁头所经过的柱面数而增加,SSTF选择与当前磁头位置最近的待处理请求。
SSTF调度基本上是一种最短作业优先调度(SJF),与SJF调度一样,它可能会导致一些请求不到服务。
4.3、SCAN调度
对于SCAN算法,磁臂从一端向另一端移动,同时当磁头移动过每个柱面时,处理位于该柱面的服务请求,当到达另一端时,磁头改变移动方向,处理继续,磁头位置在磁盘上来回扫描,SCAN算法有时被称为电梯算法,因为磁盘的行为就像大楼里面的电梯,先处理所有向上的请求,然后再处理相反方向的请求。
4.4、C-SCAN调度
C-SCAN调度是SCAN调度的变种,主要提供一个更为均匀的等待时间,与SCAN一样,C-SCAN将磁头从磁盘一端移动到另一端,随着移动不断处理请求,不过,当磁盘移动到另一端时,它会马上返回磁盘开始,返回时不处理请求。
4.5、LOOK调度
如上所述,SCAN和C-SCAN使磁头在整个磁盘宽度内移动,但是,事实上这两个算法都不是这么实现的。通常,磁头只移动到一个方向上最远的请求为止,接着,它马上回头,而不是继续到磁盘的尽头,这种形式的SCAN和C-SCAN称为LOOK和C-LOOK调度。
5、磁盘管理
操作系统还负责磁盘管理方面的其他内容,主要包括磁盘初始化、从磁盘引导、坏块恢复。
5.1、磁盘格式化
一块新的磁盘是一个空白板:它只是一些含有磁性记录材料的盘子,在磁盘能存储数据之前,它必须分成扇区一边磁盘控制器能读和写,这个过程称为低级格式化。
低级格式化为磁盘的每个扇区采用特别的数据结构,每个扇区的数据结构通常由头、数据区域和尾部组成,头部和尾部包含了一些磁盘控制器所使用的信息,如扇区号码和纠错代码(ECC),如果只有少数几个数据损坏,控制器能利用ECC计算出哪些数据已改变并计算出他们的正确值,然后回复一个可恢复软错误。
为了使用磁盘村塾文件,操作系统还需要将自己的数据结构记录在磁盘上,这分为两步:第一步是将磁盘分为一个或多个柱面组成的分区,操作系统可将每个分区作为一个独立的磁盘。第二步是逻辑格式化,也就是创建文件系统,在这一步,操作系统将初始的文件系统数据结构存储在磁盘上,这些数据结构包括空闲和已分配的空间和一个为空的目录。
5.2、引导块
当我们的电脑开机时,我们的操作系统开始执行,也就是开始执行自举程序,自举程序应该能够找到磁盘上的操作系统内核,装到内存,并转到其实地址,从而开始操作系统的执行。
对绝大多数计算机,自举程序保存在ROM存储器中,当电脑开始时,硬件支持从该ROM中读取程序,并装入内存,这个完整的自举程序保存在磁盘的启动块上,启动块位于磁盘的固定位置,拥有启动分区的磁盘称为启动磁盘或者系统磁盘。
5.3、坏块
绝大多数磁盘从工厂出来时就有坏块,根据所使用的磁盘和控制器,对这些块有多种处理方式:
对于简单磁盘,可使用手工处理坏扇区
对于复杂磁盘,其控制器维护一个磁盘坏块链表,该链表在出厂前进行低级格式化时就已经初始化,并在磁盘使用过程中不断更新。
6、交换空间管理
交换空间的管理是操作系统的另一个底层任务,虚拟内存使用磁盘空间作为内存的扩充,由于磁盘访问比内存访问慢的多,所以使用交换空间会严重影响系统的性能,交换空间的设计和实现的主要目的是为虚拟内存提供最佳吞吐量。
6.1、交换空间的使用
不同的操作系统根据所实现的内存管理算法,可按不同方式来使用交换空间。
实现交换的系统可以将交换空间用于保存整个进程镜像,包括代码段和数据段,换页系统也可能只用交换空间用于保存换出内存的页。
6.2、交换空间位置
交换空间可有两个位置:交换空间在普通文件系统上加以创建,或者是在一个独立的磁盘分区上进行,如果交换空间是文件系统内的一个简单大文件,那么普通文件系统程序就可以用来创建它、命名它并为它分配空间。
另外一种方法是交换空间可以创建在独立的生磁盘上,这里不需要文件系统和目录结构,只需要一个独立的交换空间存储管理器以分配和释放块。
7、RAID结构
RAID称为磁盘荣誉阵列技术,通常用于提高性能和可靠性。
7.1、通过冗余改善可靠性
我们使用的磁盘一般都会有出错的可能性,我们要提高磁盘的可靠性,就必须找到一种方法来保证磁盘可靠性,即使磁盘出错,我们也能够恢复,一种解决方法是引入冗余,最为简单的冗余就是复制整个磁盘,这种方法称为镜像。
镜像磁盘出错的平均时间取决于两个因素,单个磁盘出错的平均时间,以及修补平均时间。
7.2、通过并行处理改善性能
对于多个磁盘,通过在多个磁盘上分散数据,可以改善传输率,最为简单的形式是,数据分散是在多个磁盘上分散每个字节的各个位,这种分散为位级分散。但是这种方式是不常见,最常见的是块级分散,磁盘系统并行访问有两个主要目的:第一、通过负荷平衡,增加了多个小访问的吞吐量。第二、降低大访问的响应时间。
8、稳定存储的实现
我们的理想要求是:存储在稳定存储上的数据永远不会丢失,为了实现这种存储,需要在多个具有独立出错模式的存储设备上复制所需信息,需要协调用于更新的写操作,以确保更新时发生的差错不会使所有副本处于损坏状态,而且当恢复数据时,能强制是的所有数据处于一致和正确状态。
为了实现上述操作,可按如下方式执行:
(1)将信息写到第一物理块上
(2)当第一次写成功完成时,再将同样信息写到第二物理块上。
(3)只有在第二次写成功完成时,才声明写操作成功完成。