磁盘访问时间
(1) 寻道时间:与寻道距离成正比【会与磁盘调度结合,求出磁道数】
(2) 旋转延迟时间
(3) 传输时间
影响磁盘访问时间的主要参数是寻道时间。
磁盘调度
1、先来先服务(FCFS) 磁盘I/O执行顺序为磁盘I/O请求的先后顺序。 该算法的特点是公平性;在磁盘I/O负载较轻且每次读写多个连续扇区时,性能较好。
2、最短寻道时间优先SSTF(Short Seek Time First) 考虑磁盘I/O请求队列中各请求的磁头定位位置,选择从当前磁头位置出发,移动最少的磁盘I/O请求。该算法的目标是使每次磁头移动时间最少。 访问磁道与当前磁头所在位置最近,但不能保证平均寻道时间最短,但比FIFO算法有更好的性能。进程有可能“饿死”。
3、扫描(SCAN)算法: 电梯调度算法。选择在磁头前进方向上从当前位置移动最少的磁盘I/O请求执行,没有前进方向上的请求时才改变方向。该算法是对SSTF算法的改进,磁盘I/O较好,且没有进程会饿死。
4、循环扫描算法CSCAN(Circular SCAN): 在一个方向上使用扫描算法,当到达最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道,即将最小磁道号紧接着最大磁道号构成循环。该算法可改进扫描算法对中间磁道的偏好。 实验表明,该算法在中负载或重负载时,磁盘I/O性能比扫描算法好。
例题1
假设计算机系统采用CSCAN调度策略.
1. 设某单面磁盘转速为每分钟6000转,每个磁道有100个扇区,相邻磁道间的平均移动时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动,磁道号请求队列为50、90、30、120,对请求队列中的每个磁道需读取1个随机分布的扇区,则读完4个扇区总共需要多少时间?
2. 如果磁盘替换为随机访问的Flash存储器,是否有比CSCAN更高效的磁盘调度策略?说明理由。
答:读取数据的时间=磁头定位时间+平均旋转等待时间+读出一个扇区数据的时间。
平均旋转等待时间=60s/(6000×2)=5ms 读取一个扇区数据的时间=60s/(6000×100)=0.1ms
CSCAN算法,访问磁道的顺序为100 120 30 50 90 读取4个扇区数据总的磁头定位时间=1ms ×(20+90+60)=170ms
读取4个扇区的数据的总时间=170ms+(5+0.1)×4=190.4ms
例题2
假设每条磁道被分为8个扇区,每个扇区存放一个记录,处理程序顺序处理这8个记录L1,L2,…,L8。每次请求从磁盘上读一个记录,然后对读出的记录花1ms的时间进行处理,以后再读下一个记录进行处理。磁盘旋转一周花费16ms。若将这8个记录在一条磁道上进行优化分布,则全部处理完这8个记录至少需要
A.31ms B.32ms C.33ms D.34ms
答:C 转两圈之后L8正好读完,再加一毫秒对L8的处理正好33秒