【操作系统】4.5文件管理(磁盘)
其他
2021-04-06 12:42:24
阅读次数: 0
1. 磁盘结构
磁盘、磁道、扇区
- 磁盘的表面由一些磁性物质组成,可以利用这些磁性物质来记录二进制数据
- 磁盘的盘面被划分成一个个磁道,一个圈就是一个磁道
- 一个磁道又被划分成一个个扇区,每个扇区就是一个磁盘块,各个扇区存放的数据量相同
- 内测磁道上的扇区面积比较小,所以数据密度是最大的
在磁盘中读/写数据
- 需要把“磁头”移动到想要读/写的扇区所在的磁道上
- 磁盘会转起来,让目标扇区从下面划过,才能完成对扇区的读/写操作
盘面、柱面

- 可以用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”
- 之前说的存放在外存中的块号,就可以转换(柱面号,盘面号,扇区号)的地址形式
- 可以根据该地址读取一个块
- 根据柱面号移动磁臂,让磁头指向指定柱面——找到目标所在的磁道
- 激活指定盘面对应的磁头
- 磁盘旋转过程中,指定的扇区会从磁头下划过,这样就完成读/写一个块
磁盘分类
- 磁头是否可以移动
- 固定磁头(每个盘面一个磁头)
- 移动头磁盘(每个盘面只有一个磁头)
- 根据盘片是否可更换
- 固定盘磁盘
- 可换盘磁盘
2. 磁盘调度
1. 一次磁盘读/写需要的时间
1. 寻找(道)时间TS
- 在读/写数据前,将磁头移动到指定磁盘所花的时间
- 启动磁头臂是需要时间的——假设耗时为s
- 移动磁头也是需要时间的——假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道
- 则寻道时间 TS= s+m*n
2. 延迟时间TR
- 通过旋转磁盘,使磁头定位到目标扇区所需要的时间
- 设磁盘转速为 r (转/秒、转/分),典型的转速为5400转/分、7200转/分
- 则平均所需要的延迟时间TR=(1/2)*(1/ r )=1/ 2r
3. 传输时间Tt
- 从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为 r ,此次读/写的字节数为 b ,每个磁道上的字节数为N
- 则读完一个磁道所需要的时间为1/ r
- 所以要读 b 的数据所要的时间:传输时间Tt=(1/ r )*(b / N)=(b / rN)
总结
- 所以平均存取时间Ta = TS + 1/ 2r +(b / rN)
- 延迟时间与传输时间都与磁盘的转速直接相关,这些都是由硬件所决定的,而操作系统并不能通过软件的方法,实现缩短这些时间
- 所以操作系统能做到的只能是缩短寻道时间
2. 磁盘调度算法
1. 先来先服务(FCFS)
- 根据进程请求访问磁盘的先后顺序进行调度

- 优点:公平,如果请求访问的磁道比较集中的话,算法性能还算可以
- 缺点:如果有大量的进程竞争使用磁道,请求访问的磁道会很分散,则FCFS算法的性能会很差,寻道时间会很长
2. 最短寻找时间优先(SSTF)
- 优先处理的磁道是与当前磁头最近的磁道。
- 可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短(贪心算法)

- 优点:性能较好,平均寻道时间短
- 缺点:可能产生饥饿现象:如果系统中有源源不断的访问18和38磁道的请求到来,则150、160、184就会一直等不到处理(小区域来回移动)
3. 扫描算法(SCAN)
- 为了防止上面的饥饿现象,可以规定:只有磁头移动到最外侧磁道时才能向内移动,移动到最内侧磁道时才能向外移动(又被称为电梯算法)

- 优点:性能较好,平均寻道时间短,不会产生饥饿现象
- 缺点:
- 只有到达最边上的磁道才能改变磁头移动方向,如上例中,访问完184号磁道就不需要再往右了(200白干)
- 对于每个磁道的响应频率不同,越靠近边缘响应频率越高
4. LOOK调度算法(题目默认)
- SCAN算法的改进——解决白干现象,观察前方是否还有需要访问的磁道,若没有了则掉头
- 上例中从184号磁道就掉头
5. 循环扫描算法(C-SCAN)
- SCAN算法的改进——解决响应频率不均的问题,规定只有磁头朝特定方向移动时才会处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求(扫地)

- 优点:相比起SCAN算法,各个磁道的响应频率平均
- 缺点:200白干现象,返回的时候也不需要返回到 0号,返回到最靠左的 18 即可
6. C-LOOK算法(题目默认)
- C-SCAN 和 LOOK的结合

转载自blog.csdn.net/Qmilumilu/article/details/114577471