操作系统(四 part2)
磁盘的结构
磁盘、磁道、扇区:磁盘盘面被划分为一个个磁道(一个圈一个磁道),磁道被划分为一个个扇区,各扇区存放的数据量相同
如何在磁盘中读写:磁头的移动
盘面、柱面的概念
可以用(柱面号,盘面号,扇区号)的三元组定位任意一个磁盘块
对应某一圈、某一层、某一段圆弧
磁盘的物理地址
磁盘的分类
磁盘调度算法
一次磁盘读写需要的时间
寻找时间(寻道时间):启动磁头臂、移动磁头结构需要时间
延迟时间
设磁盘转速为 r 转 / 每 秒 r\space转/每秒 r 转/每秒,则转一圈所需时间为 1 / r 1/r 1/r
平均延迟时间 T R = 1 / 2 r T_R = 1/2r TR=1/2r
传输时间
读写的字节数为 b b b,每磁道上的字节数为 N N N,则需要访问 b / N b / N b/N个扇区
传输时间 T t = b / r × N T_t = b/r\times N Tt=b/r×N
磁盘调度算法:参考进程调度
先来先服务
FCFS
:根据进程请求的先后顺序进行访问最短寻道时间优先
SSTF
:保证当前的寻道时间最短(访问距离当前位置最近的磁道。总时间最短。可能导致饥饿。(类似短进程优先)扫描算法
SCAN
:电梯算法,磁头移动到最外侧磁道后才能向内移动,移动到最内侧磁道才能向外移动(每次都需要移过所有的柱面),不会产生饥饿现象
缺点:必须移动到最边上的磁道才调转方向,造成不必要的开销,对各位置磁道的响应频率不平均
LOOK
调度算法:若移动方向上已经没有其他请求,立即改变移动方向(减少到边缘才转换方向的不必要开销)循环扫描算法
C-SCAN
:只有磁头向特定方向移动时才处理磁道请求,返回时直接移动到起始端(解决响应时间不均的问题)
C-LOOK
算法:不需要移动到最边缘、只向同一个方向进行扫描
减少磁盘延迟的方法
前情提要
寻道时间:启动磁头臂、移动磁头的时间
延迟时间:将目标扇区移动到磁头下需要的时间
传输时间:读写花费的时间
由于读入某块数据之后还需要进行一小段时间的数据处理,因此对于逻辑上和物理上都相邻扇区,访问的延迟时间较高
实现方法:
间隔编号:让逻辑上的相邻扇区物理上有一小段间隔,如0~3号实际编号为0、2、1、3
磁盘地址结构的设计:使用(柱面号,盘面号,扇区号)的三元组,在连续读写时不需要移动磁头臂,只需要激活不同盘面上的磁头即可(减少磁头移动消耗的时间)
错位命名:不同盘面相同扇区的编号相互错开