【磁盘存储器】
磁盘存储器是计算机系统中最重要的存储设备,其中存放了大量的文件
对文件的读写操作都涉及到对磁盘的访问,磁盘 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):磁盘控制器维护磁盘坏块链表,其在出厂前的低级格式化时已经初始化,同时在使用过程中不断更新
此外,低级格式化时,会将一些块保留备用,这些块对操作系统透明,磁盘控制器可以使用备用块来逻辑代替坏块,这种方法称为扇区备用