【OS】死亡Disk

磁盘结构.

  • 磁盘Magnetic Disk,为现代计算机系统提供了大容量的外存;
  • 磁盘由多个扁平圆盘的磁盘片组成,每个磁盘片的双面都涂着磁制材料,通过在磁盘片上进行磁记录可以保存信息。

磁盘物理结构.

  • 【描述磁盘地址的参数】柱面Cylinder、磁道Track和扇区Sector. 逻辑块Logic Block是最小的传输单位,对应于扇区。
    在这里插入图片描述

磁盘访问时间.

  • 【数据传输时间 T t T_t Tt】总的传输字节设为Total,磁盘转速为 r r r(通常来说,单位是转/分钟),一转(也就是每个磁道)的字节数为 b b b,那么 T t = T o t a l / r b T_t=Total/rb Tt=Total/rb.
  • 【平均旋转延迟时间 T r T_r Tr】磁盘使得所需要读取的扇区位于磁头下方,旋转一圈所需要的时间为 60 / r 60/r 60/r,平均情况下的延迟时间 T r = 30 / r T_r=30/r Tr=30/r,是旋转半圈的时间。
  • 【寻道时间 T s T_s Ts】移动磁臂到预期读取的柱面(同样也是磁道)所需的时间,假定移动一个柱面所需的时间为 t t t,需要移动 n n n个柱面,那么 T s = n t . T_s=nt. Ts=nt.

实例.

  • 【例题】设某磁盘平均寻道时间为10ms,转速为10000r/m,每个磁道有320个扇区,每个扇区512字节,求读取一个包含2560个扇区、大小为1.3MB的文件所需的时间?
  • 【假定文件顺序存储】仅需要一次寻道,耗费10ms,因为数据都是连续的,向后访问即可。旋转延迟时间为 30 / 10000 = 3 m s 30/10000=3ms 30/10000=3ms,2560个扇区包含了8个磁道,读取并传输每个磁道中320个扇区的时间为 T o t a l / r b = 1 / r = 6 m s Total/rb=1/r=6ms Total/rb=1/r=6ms,所以访问单个磁道需要 3 + 6 = 9 m s 3+6=9ms 3+6=9ms,所以总时间为 10 + 8 ∗ 9 = 82 m s . 10+8*9=82ms. 10+89=82ms.
  • 【假定文件随机存储】也就是数据不是连续放置的,那么每个扇区所需的访问时间为寻道时间、旋转延迟时间以及扇区数据传输时间的和,寻道时间为10ms、旋转延迟时间为3ms、单个扇区的字节数为整个磁道的 1 / 320 1/320 1/320,所以其传输时间为 1 / 320 r = 0.01875 m s 1/320r=0.01875ms 1/320r=0.01875ms,所以访问单个扇区的时间总量为 10 + 3 + 0.01875 = 13.01875 m s 10+3+0.01875=13.01875ms 10+3+0.01875=13.01875ms,总数据量有2560个扇区,所以最终时间为 2560 ∗ 13.01875 = 33.328 s 2560*13.01875=33.328s 256013.01875=33.328s,注意最后的单位已经是 s s s 了。

磁盘调度算法.

  • 当多个磁盘访问请求在等待时,采用一定的策略,对这些请求服务按照一定顺序进行响应。目标是为了最小化磁盘的寻道时间。

先来先服务算法FCFS.

  • 老面孔了,进程调度算法也有这样的思想。并且很讽刺,效率都不高。
  • 选择等待队列中最先到达的访问请求,作为下一次的访问对象

最短寻道时间算法SSTF.

  • 选择等待队列中离当前磁道最近的访问请求,作为下一次的访问对象。可以看作是SJF算法的扩展,但也有一点不同。SJF算法是存在很大困难的,因为我们不知道下次CPU执行的长度是多少。但SSTF不会有这样的困难,寻道时间的长度很容易就能计算出。

扫描算法SCAN(电梯算法).

  • 磁臂从磁盘的一端向另一端移动,同时当磁头移过每个柱面时,处理位于该柱面上的服务请求;当达到另一端时,磁头改变移动方向,继续处理。

循环扫描C-SCAN.

  • C代表Circular,将磁头从磁盘一端移到磁盘的另一端,随着移动
    不断地处理请求,移动到另一端时马上返回到磁盘开始,返回时不处理请求。

LOOK/C-LOOK调度算法.

  • 将SCAN和C-SCAN算法中的磁头之一动到该方向上的最远的请求为止就马上掉头,就分别产生了LOOK和C-LOOK算法。

NStepSCAN算法.

  • N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子序列。而每处理一个队列时又是按SCAN算法,对一个队列处理完毕后,再处理其他队列。当正在处理某子序列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。当N值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能;当N=1时,N步SCAN算法便蜕化为FCFS算法。

FSACN算法.

  • 将磁盘请求队列分为2个子队列,其中一个为当前所有请求构成的队列,另一个为扫描期间新到达的请求构成的队列,并按N步扫描处理。

磁盘容错技术.

SFT-1.

  • 第一级容错技术,通过增加冗余的磁盘驱动器、磁盘控制器等方法来提高磁盘系统可靠性的一种技术。
  • 【双份目录 & 双份文件分配表】在不同磁盘上或在磁盘的不同区域中建立目录表和FAT.
  • 【热修复重定向 & 写后读校验】:防止数据写入有缺陷的磁盘空间。
  • 【热修复重定向】将很小一部分磁盘容量用作热修复重定向区以存放发现磁盘有缺陷时的待写数据;
  • 【写后读校验】将写入磁盘的数据立即读入内存另一缓冲区,并与原数据比较是否一致。

SFT-2.

  • 【磁盘镜像】用同一磁盘控制器来控制2个完全相同的驱动器,每次对主磁盘写入数据后,采用写后读校验方式,写入备份盘。
  • 【磁盘双工】将2台磁盘驱动器分别连到2个磁盘控制器、通道上,并镜像成对。

SFT-3.

  • 【RAID技术】1987年提出的廉价磁盘冗余阵列(Redundant Array of Inexpensive Disk,RAID)是利用一台磁盘阵列控制器来统一管理和控制一组磁盘驱动器,组成一个大型磁盘系统,大幅度增加了磁盘容量,极大提高了磁盘I/O速度和整个磁盘系统的可靠性。
  • 新发现的硬核-浮梁卖茶人.

小题狂错.

猜你喜欢

转载自blog.csdn.net/weixin_44246009/article/details/108580206
os
今日推荐