磁盘的结构
磁盘、磁道、扇区
磁盘划分n圈磁道,每条磁道划分为多个扇区
磁盘读写
磁头移动到需要读写的扇区所在的磁道来完成读写
磁盘转起来让目标扇区在磁头下面划过
盘面和柱面
分类
按磁头分类:磁头可伸缩移动、不可伸缩移动(同一盘面上有多个磁头)
按盘片分类:盘片不可换的固定磁盘和盘片可换的可换盘磁盘
磁盘调度算法
磁盘读写耗时
寻找时间/寻道时间
读写数据时,将磁头移动到指定磁道所花的时间:启动磁头臂、移动磁头
T = 启动磁头臂时间 + 越过一个磁道耗时 * 跨越磁道数
寻找时间与磁盘调度算法相关
延迟时间
通过旋转磁盘,将磁头定位到目标扇区所需时间,设磁盘转速为r,平均所需的延迟时间为 1/2 * 1/r,即1/2转除以转速
传输时间
从磁盘读写数据耗时,设转速r,读写字节数b,每个磁道上的字节数n,T = 1/r * b/n
与转速线性相关,即与硬件相关,操作系统无法优化
FCFS
SSTF
SCAN
LOOK
S-SCAN
C-LOOK
总结
FCFS先来先服务带有公平属性,但在访问的磁道分散时会疲于寻道,降低性能
SSTF则是优先处理离磁头近的磁道,保证每次寻道时间短,但可能产生饥饿,且整体时间未必最优
SCAN则是每次扫描到磁道边界才返回,平均寻道时间短,不饥饿,但移动强制碰到边界才能改变方向,磁道响应频率不平均
LOOK则是解决了SCAN的扫描方向问题,移动方向上没有别的请求就改变磁头移动方向
S-SCAN则解决SCAN对各个磁道的响应频率不平均,在碰到边界才返回的基础上,增加了返回时不处理任何请求,直至返回起始端
C-LOOK则是S-SCAN基础上无需碰到边界才返回
磁盘减少延迟
若要读取的扇区连续分布,会造成时间浪费
因为磁头读取数据后,需要时间处理数据,而此时磁盘继续转动,只有等下一次转到磁头下才能继续读取,这增加了延迟时间
交替编号
逻辑上相邻的扇区在物理上有一定间隔,使得延迟时间减少
错位命名
磁盘地址结构的设计
按照(柱面号、盘面号、扇区号)方便连续读取
磁盘管理
磁盘初始化
物理格式化—>磁盘分区—>逻辑格式化
引导块
计算机开机时需要通过执行初始化程序(自举程序)进行一系列初始化的工作
磁盘的启动块(引导块/启动分区)中存放着自举程序,位置固定
拥有启动分区的磁盘称为启动磁盘和系统磁盘
ROM中只存放很小的自举装入程序,开机时先运行此程序,通过此程序可以找到引导块,并将完整的自举程序读入内存,完成初始化
坏块
无法正常使用的扇区就是坏块,系统无法修复,因此需要标记出来
对于简单磁盘,可以在逻辑格式化时对整个硬盘进行坏块检查,在FAT表中标明坏扇区
对于复杂硬盘,磁盘内部有个磁盘控制器来维护一个坏块链表,磁盘出厂前进行物理格式化时就将坏块链进行初始化,并保留一些备用扇区用于替换坏块