笔记内容及图片整理自XJTUSE “操作系统” 课程ppt,仅供学习交流使用,谢谢。
大容量存储结构概述
磁盘
磁盘为现代计算机系统提供大量外存。每个盘片为平的圆状(类似CD),普通盘片直径为4.5~9.0厘米。盘片的两面都涂着磁质材料,通过在盘片上进行磁性记录可以保存信息。
读写磁头在盘片表面上方飞行,磁头附着在磁臂上,磁臂将所有磁头作为整体而一起移动。盘片表面逻辑地分成一些圆形磁道,再细分为扇区,同一磁臂位置的磁道集合形成了柱面。事实上,每个磁盘驱动器有数千个同心柱面,每个磁道包括数百个扇区,因此磁盘驱动器的存储容量按GB来计算。
固态磁盘
固态磁盘SSD是非易失性存储,具有与传统硬盘相同的特性,但固态磁盘比硬盘更加可靠(没有移动部件),速度也更快(没有寻道时间/旋转延迟)。当然与传统硬盘相比,SSD的每兆字节更昂贵、容量更大、寿命更短,因此用途有限,常用于存储文件系统元数据以提高性能或者性能方面期望更小、更快、更节能的笔记本电脑。
磁带
磁带可以相对永久地保存大量数据,但是与内存和磁盘相比,磁带的访问时间也更长。另外随机访问速度上磁带比磁盘慢千余倍,因此磁带常用于备份不常使用的信息或者作为系统间信息传输的媒介。磁带大致有两种存储器:栈式存储器(保存一些磁带的库)和队式存储器(保存数以千计磁带的库)。通常,磁带上存有磁盘驻留文件,以便降低存储成本,计算机可以为了当前的使用把磁盘驻留文件传输回到磁盘上。
磁盘结构
磁盘设备是以一种逻辑块的一维大数组的形式编址的,逻辑块是传输的最小单位,逻辑块的一维数组映射到磁盘上一些相连的扇区。0扇区是最外边柱面的第一个磁道的第一个扇区。数据首先映射到一个磁道,其余数据映射到同一柱面的其他磁道,然后按照从外向内的顺序映射到其余的柱面。
磁盘组由若干磁盘组成,绕枢轴高速旋转,磁盘转速7200转/分。盘块物理地址由柱面号、磁头号、扇区号三部分组成。令块号B、柱面数L、盘面数M、扇区数N。
柱面号——各盘面所有读写磁头同时移动,并定位在同样的垂直位置磁道上,这些磁道形成一个柱面,由外向内依次编号:0,1,2,……,L;柱面号i=int(B, M ×N)。
磁头号——磁盘有效盘面从上到下依次编号:0,1,2,……,H;磁头号j=int(mod(B, M ×N), N)。
扇区号——将盘面分割成大小相等的扇区:0,1,2,……,n;扇区号k=mod(mod (B, M ×N), N)。
磁盘I/O速度的高低,将直接影响文件系统的性能,提高磁盘I/O速度的主要途径有:
1)选择性能好的磁盘
2)设置磁盘高速缓冲区
3)采用好的磁盘调度算法
磁盘访问时间Ta
寻道时间Ts是把磁头从当前位置移动到指定磁道上所经历的时间,它与磁盘转速、移动的磁道数有关。
令磁盘启动时间s、磁头移动1条磁道所花费时间m,共有n条磁道,则Ts = m × n + s。对于—般磁盘,m=0.2;对于高速磁盘,m≤0.1;磁盘启动时间s约为2ms。—般情况下, 寻道时间将随着寻道距离的增大而增大。
旋转延迟时间Tr是把指定扇区移动到磁头下面所经历的时间,它与磁盘转速有关。
令磁盘转速为r,则Tr = 1 / 2 * r。
若磁盘旋转速度为5400 r/min,则每转时间为11.1ms,平均旋转延迟时间Tr为5.55ms。
传输时间Tt是指把数据从磁盘读出或向磁盘写入数据所经历的时间。
令所读写的字节数为b,磁盘旋转速度为r,一条磁道上的字节数为N,则Tt = b /(r * N)。
寻道时间和旋转延迟时间通常占据磁盘访问时间的大头,基本都与所读写数据的多少无关。目前随着磁盘传输速率不断提高,数据传输时间所占的比例更低。可见适当地集中数据传输将有利于提高传输效率,则Ta = Ts + 1 /(2 * r)+ b /(r * N)。
磁盘高速缓存
磁盘高速缓存利用内存中的存储空间暂存从磁盘中读出的一系列盘块中的数据,即高速缓存是一组在逻辑上属于磁盘,而在物理上驻留在内存中的盘块。它有两种实现形式:
1)在内存中开辟一个单独的大小固定的存储空间,不受应用程序的影响
2)把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O共享。
磁盘高速缓存使用的置换算法常为LRU,即将高速缓存中所有盘块数据拉成一条LRU链,将会严重影响到数据一致性的和很久都不会再使用的盘块放入LRU链的头部,使它们能够优先写回磁盘;对于那些可能在不久又会访问的数据,应放在LRU链的尾部,以便以后再使用时可以直接在高速缓存中找到。
磁盘调度
操作系统的职责之一是高效使用硬件。对于磁盘设备,满足这个要求意味着具有很短的访问时间和较宽的磁盘带宽,且寻道时间约等于寻道距离。通过管理磁盘I/O请求的处理次序,可以改善访问时间和磁盘带宽。每当需要进程执行磁盘I/O操作时,进程就向操作系统发出一个系统调用,这个请求需要以下信息:
1)该I/O操作是输入还是输出
2)传输的磁盘地址是什么
3)传输的内存地址是什么
4)传输的扇区数目是什么
若所需要的磁盘设备和控制器空闲,则立即处理请求;若忙碌则任何新的服务请求都会添加磁盘设备的待处理请求队列。对于具有多个进程的一个多道程序系统,磁盘队列可能有多个待处理的请求。因此当一个请求完成时,操作系统可以自行选择待处理的请求服务。
FCFS调度-先来先服务
FCFS调度是磁盘调度的最简单形式,这种算法优先执行先到达的请求,公平但通常速度慢。
SSTF调度-最短寻道时间优先
SSTF调度是SJF调度的一种形式,它选择从当前磁头位置所需寻道时间最短的请求,性能提升但有可能引起某些较远请求的饥饿。
SCAN调度-扫描
SCAN调度也称为电梯算法,磁头从磁盘一端开始向另一端移动,沿途响应访问请求,直到抵达磁盘的另一端,此时磁头反向移动并继续响应服务请求。
C-SCAN调度-循环扫描
C-SCAN调度是SCAN调度的变种,目的是提供更加均匀的等待时间,它把所有柱面看成一个循环的序列,最后一个柱面接续第一个柱面。磁头从磁盘的一端向另一端移动,沿途响应请求。当它到了另一端后立即回到磁盘开始处,返回途中不响应任何请求。
LOOK调度-改进扫描
LOOK调度是SCAN调度的一种形式,磁臂在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的一端。其他规则与SCAN调度相似。
C-LOOK调度-改进循环扫描
C-LOOK调度是C-SCAN调度的一种形式,磁臂在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的一端。其他规则与C-SCAN调度相似。
NSCAN调度-分步扫描
NSCAN调度将磁盘请求队列分成若干个长度为N的子队列,磁盘调度按照FCFS依次处理这些子队列,而处理一个子队列内部时又按照SCAN算法。当处理某一子队列时,若又出现新的I/O请求,则将请求进程放入其他子队列。
当N取值很大时,算法性能接近于SCAN算法;当N=1时,算法成为FCFS算法。总体上NSCAN调度具有能使I/O请求的等待时间不至于过长,避免饿死现象的优点。
FSCAN调度-简化分布扫描
FSCAN调度只将磁盘请求队列分成两个子队列,其中一个子队列由当前所有请求磁盘I/O的进程组成,按SCAN算法调度;扫描期间新出现的请求进程放入另一个等待处理的子队列。
磁盘管理
磁盘格式化
物理格式化,也称为低级格式化把磁盘划分成扇区,以便磁盘设备能够读写。为了使用磁盘保存文件,操作系统还需要在磁盘上保存它自身的数据结构,这分为两步:
1)将磁盘分为由一组或多组柱面组成的分区
2)逻辑格式化,也称为创建文件系统,即将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲和已分配的空间和一个初始为空的目录。
启动块初始化系统需要先引导程序存储在ROM中,再引导程序装载程序。
引导块
计算机需要一个初始程序来运行打开电源操作或重启操作,这个初始程序被称为自举程序。它初始化系统的所有部分,从CPU寄存器到设备控制器和内存,接着启动操作系统。因此自举程序找到磁盘上的操作系统内核,加载到内存并转到起始地址以便开始执行操作系统。自举程序通常存储在ROM中,因为ROM不需要初始化而且位于固定位置,便于处理器在通电或复位后开始执行且不会受到计算机病毒的影响。它初始化系统的所有方面,然后通过从MBR(主引导记录,引导代码存在磁盘的第一个扇区)读取引导代码来启动操作系统。
坏块
磁盘具有移动部件且容错差,导致容易出现故障,甚至一个或多个扇区坏掉,需要处理。
对于简单磁盘,如IDE磁盘,需要手动处理这些坏块。发现坏块后系统会在FAT条目中写入特殊值,告诉分配例程不要使用该块。
对于高端磁盘,如SCSI磁盘,具有用于处理坏块的扇区备用等方法。控制器维护磁盘上的坏块列表,该列表在工厂的物理格式化(留出操作系统不可见的备用扇区)过程中初始化,并在磁盘的生命周期内更新。控制器还能告诉控制器用备用扇区之一在逻辑上替换坏扇区。
交换空间管理
交换是在磁盘和内存之间移动进程,交换空间指虚拟内存使用磁盘空间作为对主存的扩展。交换空间可以在常规的文件系统中实现,或者更通常的情况是放在一个单独的磁盘分区里。交换空间管理是操作系统的一个底层任务,追求的是访问速度,而不是存储效率。
交换空间的使用
不同操作系统使用交换空间的方式不同,这取决于操作系统采用的内存管理算法。采用整体进程交换的操作系统,用交换空间存放整个进程的映像;采用请求分页的操作系统,用交换空间存放被换出的页。一个系统所需的交换空间大小取决于:
1)物理内存容量
2)需后备的虚拟内存容量
3)虚拟内存的使用方式
例如Solaris系统交换空间的容量为虚存超出物理内存的部分,传统Linux系统交换空间的容量为物理内存的2倍,现代Linux系统则去除了此限制并普遍采用更小的交换空间。
交换空间位置
原始分区方法:若交换空间位于普通文件系统上,则交换空间作为一个文件存在于文件系统中,由文件系统进行管理,包括创建、命名、分配空间等操作;
文件系统方法:若交换空间是一个单独的磁盘分区,则交换空间存在于一个单独的未格式化的分区中,这里没有文件系统或目录结构,由交换空间管理程序独立完成分配和回收。
有些操作系统较为灵活,可以采用原始分区方法和文件系统方法进行交换。例如Linux系统策略和实现是分开的,系统管理员可以决定使用哪种类型,它需要权衡文件系统分配和管理的便利饥饿原始分区交换的性能。
磁盘可靠性
磁盘使用技术中,有几种实现都包括了使用多个磁盘协同工作方式,因此可靠性尤为重要。磁盘条使用一组磁盘作为一个存储单元,RAID系统依靠存储冗余数据改善了存储系统的性能和可靠性,镜像或影像为每个磁盘保存了备份,块交叉奇偶方式大大地减少了冗余。磁盘可靠性问题的最终解决是引入冗余,即使磁盘故障,数据也不会彻底丢失。
RAID系统内容包含在计算机组成原理中。
三级存储设备
三级存储的定义特征是低成本,它通常由可移动介质构成,典型的例子是软盘和光盘。
软盘——在又薄又软的盘面上面涂上磁介质,装在一个用于保护的塑料套中。大多数软盘的容量是1MB,类似的技术也用于容量大于1GB的可移动磁盘。事实上,可移动磁盘的速度几乎与硬盘一样快,但由于可移动磁盘暴露在外,其损坏的风险更大。
光盘——在一个涂有磁介质的刚性盘面上记录数据,激光的热量用来放大一个大面积脆弱的磁区域来记录数据,而激光的光线用来读取数据。光电磁头距离盘面的距离比磁头远,并且磁介质上覆盖有塑料或玻璃的保护层以抗磁头撞击。通常,光盘不使用磁介质,它使用激光改造过的特殊材料。
性能
三级存储设备的性能主要由速度、可靠性、成本三方面决定。
速度——三级存储速度的两个方面是带宽和延迟。带宽用每秒的字节数来衡量,持续带宽指大量传输过程中的平均数据率;有效带宽指平均整个I/O时间,包括寻道定位以及盘碟选择。访问延迟是定位数据需要的时间。磁盘访问时间指移动磁臂来选择柱面,并且等待旋转延迟;访问磁带需要把所选的块倒到磁带头的位置(一般来说,对盘碟的随机访问比对磁盘的随机访问要慢一千倍)。三级存储成本低,这是许多便宜的盘碟使用少量昂贵驱动器的结果。
可靠性——固定磁盘驱动器比可移动磁盘或磁带驱动器更加可靠,光介质比磁介质的磁盘或磁带更加可靠。对于固定的硬盘,磁头撞击通常会破坏数据,然而磁带或光盘驱动器的错误通常对数据盘碟是无害的。
成本——主存比磁盘存储的成本要高很多。如果每个驱动器只用一条磁带,那么硬盘存储的每兆字节成本与磁带不相上下。因此最便宜的磁带驱动器和最便宜的磁盘驱动器的存储容量几乎一样,只有当盘碟数量远大于驱动器数量的时候,三级存储才能节约成本。