4.2.1磁盘的结构
磁盘,磁道,扇区
磁盘的物理地址
可以用(柱面号,盘面号,扇区号)来表示
4.2.2 磁盘调度算法
一次读/写磁盘需要多少时间:
平均寻道时间(磁头移动到指定磁道所要花费的时间)+
延迟时间(转半圈的时间)+
传输时间(从磁盘读出数据所需要的时间)
平均等待时间和传输时间都不能发生变化,唯一可以发生变化的就是平均寻道时间,磁盘调度的几种算法正好能减少平均寻道时间:
先来先服务算法(FCFS)
类似于先进先出算法:
就是按照各个作业进入系统的自然次序来调度作业。
优点:实现简单,公平。
缺点:没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。
最短寻找时间优先(SSTF)
优先处理离当前磁道最近的磁道,类似于短作业优先算法(Shortest Job First)
而SSTF(Shorted Seek Time First)
优点:平均寻道时间短
缺点:易产生饥饿现象
扫描算法(SCAN)
优点:平均寻道时间短,不会产生饥饿现象
缺点:
1)只有达到最边上的磁道才改变磁道运动方向
2)对于各个位置磁道的响应频率不平均(例如刚刚访问完90号磁道,下一次访问就要等到150号,160,184都响应完,而如果184号磁道现在又有访问请求,就会返回来先访问184号磁道,对于90号磁道不公平)
LOOK调度算法
解决了SCAN算法的1)问题:
循环扫描算法(C-SCAN)
解决了SCAN算法的2)缺点
C-LOOK算法
解决了1)和2)两个问题:
4.2.3 减少磁盘延迟时间的方法
假设要连续读取橙色区域2,3,4号删扇区,磁头读取一个扇区后,需要一段时间来处理,磁片又在不停的旋转,使得转过了要处理的3号扇区,如下图:
为了避免这种情况出现:
交替编号的方法(盘内)
磁盘地址结构的设计(盘与盘之间)
(柱面号,盘面号,扇区号)的设计,使得延迟时间减少:
eg:假如设计为(盘面号,柱面号,扇区号),如果读入000,000,000到000,001,111的数据,就要先读000,000,000-000,000,111的数据,然后移动磁针到下一个磁道(物理移动)这样的开销就很大
而如果是先柱面号,再盘面号,就不需要再移动磁针,只要激活相邻盘面的磁针就可以
错位命名(盘与盘之间)
还是上面的例子,当磁头读取完0号盘面的7号扇区之后,再转换为1号盘面时,由于错位命名,就有充分的周转时间,减少了延迟时间
4.2.4 磁盘的管理
扇区初始化
1.进行低级格式化(物理格式化),将各个磁道划分为扇区
2.将磁盘分区,形成C,D,E盘,即逻辑格式化
引导块
开机时需要进行一系列的初始化工作,这些初始化工作是通过执行初始化程序进行的(也就是我们说的引导块)
计算机启动时需要运行一个初始化程序(自举程序),它初始化CPU、寄存器、设备控制器和内存等,接着启动OS。
自举程序通常在ROM中
拥有启动分区的磁盘被称为启动磁盘或系统磁盘。
坏块的管理
坏块就是坏了的,无法使用的扇区,属于硬件故障,操作系统无法修复