Alex_McAvoy

想要成为渔夫的猎手

磁盘存储器的性能与调度

【磁盘存储器】

磁盘存储器是计算机系统中最重要的存储设备,其中存放了大量的文件

对文件的读写操作都涉及到对磁盘的访问,磁盘 I/O 速度高低和磁盘系统可靠性,直接影响到系统的性能

磁盘设备包含一到多个物理盘片,每个盘片分一或两个存储面,每个盘面上有若干磁道,每条磁道由从逻辑上划分了若干扇区(盘块)

为方便处理,每条磁道存储容量相同,由于磁盘密度规定为单位英寸上存储的位数,因此内层磁道的密度较外层磁道的密度要高

对于固定磁头磁盘来说,每磁道具有一磁头;对于移动磁头来说,每磁盘具有一磁头

【磁盘访问时间】

磁盘设备在工作时以恒定速率旋转,为了读写,磁头必须能移动到所指定的磁道上,并等待所指定扇区的开始位置旋转到磁头下,然后再开始读写数据

因此,可将对磁盘的访问时间分为以下三部分:

1.寻道时间

寻道时间是将磁头移动到指定磁道上所经历的时间,该事件是启动磁臂的时间 s 与磁头移动 n 条磁道时间的总和

其中,$m$ 是一常数,与磁盘驱动器的速度有关,对于一般磁盘,$m=0.2$,对于高速磁盘,$m \leq 0.1$

2.旋转延迟时间

旋转延迟时间是指定扇区移动到磁头下所经历的时间

不同的磁盘类型旋转速度不同,软盘为 $300r/min$,硬盘为 $7200r/min - 15000r/min$,对于旋转延迟时间而言,硬盘的 $T_{\tau}≈2ms$,软盘的 $T_{\tau}≈50ms$

3.传输时间

传输时间是从磁盘读写数据所经历的时间,其大小于每次读写的字节数 b 和旋转速度有关

其中,$r$ 为磁盘每秒的转数,$N$ 为一条磁道上的字节数

当一次读写的字节数相当于半条磁道上的字节数时,$T_{\tau} = T_t$

综上,访问时间为:

【磁盘调度算法】

为减少对文件的访问时间,应采取一种最佳的磁盘调度算法,以使得各进程对磁盘的平均访问时间最小

先来先服务

先来先服务(First Come First Service,FCFS)算法,是最简单的调度算法,其根据进程请求访问磁盘的先后次序进行调度

该算法公平、简单,每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况,但此算法未对寻到进行优化,使得平均寻到时间可能较长

最短寻道时间优先

最短寻道时间优先(Shortest Seek Time First,SSTF)算法,每次选择访问磁道与当前磁头所在磁道最近的进程,这样使得每次寻道时间最短,但无法保证平均寻道时间最短

该算法对中间磁道有利,但可能会使得低优先级进程长期处于饥饿状态

扫描算法

扫描(Scan)算法是在 SSTF 算法的基础上修改得来的,其可以防止低优先级进程出现饥饿现象

该算法规定磁头移动方向,每次要访问的对象应在磁道之外,又是距离最近的,这样从里向外地访问,直到无更外的磁道需要访问时,才将磁臂自外向里移动

循环扫描算法

循环扫描(Cycle Scan,C-SCAN)算法,是在 SCAN 算法的基础上修改得来的

对于 SCAN 算法来说,其具有较好的寻道功能,且可以防止饥饿现象,但当磁头刚从里向外移动越过了某磁道时,恰有一进程要访问该磁道,此时进程必须等待,待磁头继续从从里向外扫描完后再返回来,才能处理该进程的要求,使得该进程的请求被大大地推迟

为减少上述的延迟,C-SCAN 规定磁头单向移动,即当从里向外访问再无更外的磁道时,返回最里的磁道,再次从里向外访问

LOOK 算法与 C-LOOK 算法

采用 SCAN 算法和 C-SCAN 算法时,磁头总是严格的从盘面的一端到另一端

在 SCAN 算法和 C-SCAN 算法的基础上,规定磁头移动只需要到达最远端的一个请求即可返回,由此有了 LOOK 算法与 C-LOOK 算法

【磁盘的管理】

磁盘初始化

一个新的磁盘只是一个含有磁性记录材料的空白盘,在其存储数据前,需要将其分成扇区,以便磁盘控制器能进行读写操作,这个过程被称为低级格式化,即物理分区

之后,为了令磁盘能够存储文件,操作系统还需要将自己的数据结构记录在磁盘上,第一步将磁盘分为由多个柱面组成的分区(C 盘、D 盘等),第二步对物理分区进行逻辑格式化,即创建文件系统

逻辑格式化会令操作系统会将初始的文件系统数据结构存在磁盘上,这些数据结构包括空闲空间、已分配空间、初始为空的目录

引导块

计算机启动时,需要运行一个被称为自举程序的初始化程序,其会初始化 CPU、寄存器、设备控制器、内存等硬件,接着启动操作系统

为此,该程序应能够找到磁盘上的操作系统内核,并将其装入内存,同时转移到起始大弟子,从而开始操作系统的运行

自举程序通常保存在 ROM 中,为避免改变自举代码需要改变 ROM 的问题,因此只在 ROM 中保留很小的自举装入程序,将完整功能的自举程序保存在磁盘的启动块

拥有启动分区的磁盘就被称为启动磁盘

坏块

由于磁盘有移动部件且容错能力错,因此容易导致一个或多个扇区损坏,部分磁盘甚至出厂时就存在坏扇区

根据所使用的磁盘和控制器,对这些坏块有多种处理方式:

  • 简单磁盘(如电子集成驱动器 IDE):可手工处理,执行逻辑格式化时扫描磁盘检查坏扇区,在 FAT 表上标明,程序不会使用这些坏块
  • 复杂磁盘(如小型计算机系统接口 SCSI):磁盘控制器维护磁盘坏块链表,其在出厂前的低级格式化时已经初始化,同时在使用过程中不断更新

此外,低级格式化时,会将一些块保留备用,这些块对操作系统透明,磁盘控制器可以使用备用块来逻辑代替坏块,这种方法称为扇区备用

感谢您对我的支持,让我继续努力分享有用的技术与知识点!