磁盘管理
磁盘盘面结构
读取磁盘数据的时间包括一下三个部分:
- 找磁道的时间
- 找块(扇区)的时间,即旋转延迟时间
- 传输时间
例题:某磁盘磁头从一个磁道移到另一个磁道需要10ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均移动距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和2ms,则读取一个100块的文件需要____ms时间。
解析:
找磁道时间:10 * 10 ms
旋转延迟时间:100 ms
传输时间:2 ms
100块文件所需时间:((10*10)+ 100 + 2)*100 = 20200 ms
磁盘调度
磁盘调度算法有如下几种
- 先来先服务 (FCFS)
- 最短寻道时间优先 (SSTF)
- 扫描算法(SCAN)
- 循环扫描算法(CSCAN)
例题:假如此时磁盘请求队列如下,55,58,39,18,90,160,150,38,184,初始磁道是 100。
先来先服务 (FCFS)
最短寻道时间优先 (SSTF)
缺点:可能产生饥饿现象。
扫描算法(SCAN)
磁头只有移动到请求最外侧磁道或最内侧磁道才可以反向移动,如果在磁头移动的方向上已经没有请求,就可以立即改变磁头移动,不必移动到最内/外侧的磁道。由于磁头移动的方式很像电梯,因此也叫电梯算法。
磁头共移动了(184 - 100)+ (184 -18) = 250个磁道。响应一个请求平均需要移动 250 / 9 = 27.5个磁道(平均寻找长度)。
循环扫描算法(CSCAN)
只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至最靠边缘的并且需要访问的磁道上而不处理任何请求。
磁头共移动了(184 -100)+ (184 - 18)+(90 - 18)=322个磁道。响应一个请求平均需要移动322 / 9 = 35.8个磁道(平均寻找长度)。
试题
某磁盘有100个磁道,磁头从一个磁道移至另一个磁道需要6ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和20ms,则读取一个100块的文件需要(25)ms。
(25)A.12060 B.12600 C.18000 D.186000 【答案】C 【解析】
(6x10+100+20)x100=18000
假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为15μs,由缓冲区送至用户区的时间是5μs,在用户区内系统对每块数据的处理时间为1μs,若用户需要将大小为10个磁盘块的Doc1文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(25)μs;采用双缓冲区需要花费的时间为(26)μs。
(25)A.150 B.151 C.156 D.201
(26)A.150 B.151 C.156 D.201 【答案】D C 【解析】
试题(25)的正确的答案为D。在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,缓冲区中的数据传送到用户工作区的时间为M,而系统处理(计算)的时间为C,如图(a)所示。
当第一块数据送入用户工作区后,缓冲区是空闲的就可以传送第二块数据。这样第一块数据的处理C1与第二块数据的输入T2是可以并行的,依次类推,如图(b)所示。系统对每一块数据的处理时间为:Max(C,T)+M。因为,当T>C时,处理时间为M+T;当T<C时,处理时间为M+C。本题每一块数据的处理时间为15+5=20,Docl文,牛的处理时间为20*10+1。试题(26)的正确的答案为C。双缓冲工作方式基本方法是在设备输入时,先将数据输入到缓冲区1,装满后便转向缓冲区2。此时系统可以从缓冲区1中提取数据传送到用户区,最后由系统对数据进行处理,如图©所示。
双缓冲可以实现对缓冲区中数据的输入T和提取M,与CPU的计算C,三者并行工作,如图(d)所示。从图中可以看出,双缓冲进一步加快了I/O的速度,提高了设备的利用率。在双缓冲时,系统处理一块数据的时间可以粗略地认为是Max(C,T)。如果C<T,可使块设备连续输入;如果C>T,则可使系统不必等待设备输入。本题每一块数据的处理时间为10,釆用双缓冲需要花费的时间为15*10+5+1=156。
参考资料
https://www.jianshu.com/p/3c2b79af130b