那由盘面、柱面、扇区又引出了磁盘的物理地址结构,那最后我们会介绍磁盘的几种分类。
在这个磁盘的中间会有一个马达,而这个马达转动的时候就可以带动整个磁盘的转动。
那这是磁道和扇区相关的概念。
那接下来我们来看一下怎么从磁盘当中读取数据呢?
所以大家需要注意的是,如果要对一个扇区进行读或者写操作的话,那么需要通过磁头臂来带动磁头,让磁头放到那个扇区对应的磁道上。
所以这是磁盘的物理地址的结构——(柱面号,盘面号,扇区号)。
可以通过这个磁臂来回地伸缩来带动磁头,从而就可以定位到指定的磁道。
那这是按照磁头是否可以移动来进行划分的两种分类——活动头磁盘和固定头磁盘。
另外,如果从这些盘片到底是否可以更换又可以把磁盘划分为可换盘磁盘还有固定盘磁盘。
理解磁道、扇区、柱面、盘面这些最基本的概念。那由盘面、柱面、扇区这些概念我们可以知道磁盘的物理地址结构可以分为这样的三元组,可以用(柱面号、盘面号、扇区号)来定位整个磁盘当中的某一个特定的扇区。那这个物理地址的结构也是很常考查的。而磁头的移动需要耗费一定的时间。总之要读取某一个扇区或者某一个磁道上的数据的时候,那我们需要移动磁头。那在这个小节的最后我们介绍了磁盘的分类,那这个大家能够有个印象就可以了。比较可能进行考查的是固定磁头磁盘当中每一个磁道都会对应一个磁头,而移动头磁盘当中每一个盘面只会有一个磁头。这一点有可能在选择题当中进行考查。
在这个小节中我们会学习一个很重要很高频的考点——磁盘调度算法。
那磁盘调度算法的不同会影响寻找时间的长短,所以选择一个合适的磁盘调度算法对于磁盘的整体性能来说是会有很大影响的。
磁头是由磁头臂带动的,所以在移动磁头之前是需要先启动磁头臂,这个需要花费一定的时间。
那这是读写操作要进行的第一个步骤,就是寻道,寻找对应的磁道。
第二个读写操作需要花费的时间,叫延迟时间。
那么转动磁盘所消耗的这个时间就是咱们这儿所谓的延迟时间。那从这个地方我们可以看到,磁盘的转速越高,那它的延迟时间会越小,也就是说磁盘的读写速度越快。
那这是读写操作过程中需要花费的第二个部分的时间——延迟时间。
第三个部分的时间叫传输时间。
传输时间指的哪部分。那通过寻道时间还有延迟时间这两个部分之后,我们的磁头此时已经放在了想要读取的那个扇区的开头的位置。
那接下来要读取这些扇区的数据,就需要继续转动磁盘。那转动磁盘所需要的这些时间就是所谓的传输时间。
因此一次磁盘的读或者写操作,总共需要的时间就应该是寻道时间+延迟时间+传输时间。
那从延迟时间和传输时间的这个计算公式大家也可以发现,转速越快延迟时间越短,传输时间也越短。操作系统不可能用软件的方式来加快这个磁盘的转速,所以延迟时间和传输时间是操作系统无法优化的两个部分的时间。
那操作系统唯一可以影响的时间就是寻道时间。根据不同的磁盘调度算法,这个寻道时间会有很大的差异。那我们接下来会开始学习各种我们需要掌握的磁盘调度算法。
所以先来先服务算法的优点是很公平,先来的就先得到服务。并且如果请求访问的那些磁道是比较集中的话,那么这个算法的性能还算可以。不过这个算法的缺点也很明显,如果有大量的进程竟争地使用这个硬盘,并且请求访问的这个磁道很分散的话,那么先来先服务算法的性能就会很差,它在性能上其实是近似于随机调度算法。那相应的,如果要访问那些磁道很分散的话,那么先来先服务算法的寻道时间就会很长,平均寻找长度也会很长。
相比于之前的先来先服务算法来说,这个平均寻找长度、平均的寻道时间就会变得少了很多了。所以最短寻找时间优先算法的性能是比较好的,平均寻道时间也比较短。但是这种算法的缺点是有可能会产生“饥饿”现象。那这样的话就导致了这边的这些请求长期得不到服务的现象,也就是发生了“饥饿”。
只要在这个小区域内有源源不断的请求到来,那么它会一直在这个小区域内,而没办法跳出这个区域为其他区域的这些请求进行服务。
因此为了解决这个问题人们又提出了扫描算法。可见,这种算法的平均寻找时间要比先来先服务算法要好很多,虽然说这个平均寻找长度、平均寻道时间要比最短寻找时间优先算法要更次一些,但是这种算法的规则带来的好处就是它不会产生“饥饿”现象。所以在刚才咱们分析的这个场景当中,对于90号磁道的访问频率要更低一些,而对于184号磁道的访问频率要更高一些。
那这是扫描算法可以再改进的第二个地方。那我们首先看一下第一个缺点应该怎么改进。那在之前的扫描算法的当中,这个平均寻找长度是30多个,所以采用LOOK调度算法这种策略的话,那么平均的寻找长度、平均寻道时间就进一步地得到了缩短。
那接下来我们再来看一下扫描算法的第二个缺点应该怎么解决。所以C-SCAN算法或者说循环扫描算法它比起SCAN算法来说对各个位置的这种磁道的响应频率就变得很平均了。不过和SCAN算法类似,这种算法有一个很明显的缺点,
那为了解决C-SCAN算法的这些缺点,人们又提出了C-LOOK算法。那C-LOOK算法和LOOK算法其实是很类似的,也是采用了同样的思想。所以比起C-SCAN算法来说,C-LOOK算法使寻道时间还有平均寻找长度进一步地缩短了。
寻道时间由启动磁臂的时间和移动磁头所花的时间组成。那我们之后介绍的这些磁盘调度算法主要影响的是移动磁头所花的时间。需要能够自己推出来那个延迟时间和传输时间的这个计算公式。最短寻找时间优先算法有可能导致饥饿,并且这种算法它只能保证眼前最优,但无法保证总体最优。也就是说每一次的寻道肯定是当前来看最短的,不过总体来看总的寻道时间、总的寻道长度未必是最短的。那之后我们又介绍了SCAN算法,还有SCAN算法的改良性算法——LOOK调度算法和C-SCAN算法,还有C-SCAN算法的改良性算法C-LOOK算法。不过大家在做题的时候,如果题目当中没有特别地说明,那么题目中所指的SCAN算法其实就是LOOK算法,题目所指的C-SCAN算法其实就是C-LOOK算法,也就是说这个磁头并不一定需要移动到最外侧的那个磁道上,只要磁头的移动方向上没有别的请求了,那么就可以让磁头立即改变方向。
减少磁盘延迟时间的方法。
探讨一个磁盘地址结构的问题。
启动磁头臂和移动磁头其实是一种物理上的移动,它需要花费的时间是比较高的。那这是盘面号在柱面号之前的这种情况。
书里推荐的这种物理地址结构,也就是柱面号放在盘面号之前会发生什么情况呢?
因此我们接下来想要读取这个范围内的这些扇区的话,我们只需要激活1号盘面对应的这个磁头就可以了,并不需要像之前所介绍的那样再启动磁头臂然后来回地移动磁头。
介绍第二种减少磁盘延迟时间的方法,叫做错位命名。