《操作系统》——文件管理(下)
二、磁盘组织与管理
- 在磁盘上进行一次读写操作需要哪几部分时间?其中那部分时间最长?
答:寻道时间+延迟时间+传输时间,寻道时间最长 - 存储一个文件时,当一个磁道存储不下时,剩下的部分是存在同一个盘面的不同磁道好,还是存在同一个柱面的不同盘面好?
答:同一个柱面的不同盘面好
(一)磁盘的结构
1、磁盘、磁道、扇区
2、如何在磁盘中读写数据
3、盘面、柱面的概念
三元组定位一个磁盘块
4、磁盘的物理地址
物理地址块号可以转化为三元组的表示形式
5、磁盘的分类
(二)磁盘调度算法
1、一次磁盘读写操作需要的时间
寻找时间——磁头移动到对应磁道
延迟时间——转到对应磁盘
传输时间——转动磁盘,读出/写入的时间
- 延迟时间和传输时间都与转速有关,是硬件指标,无法用算法优化,只能针对寻找时间进行优化
2、磁盘调度算法(追求更少的读写时间(寻道时间~移动磁道数))
内侧磁道号小,外侧磁道号大
指标:平均寻道长度
1)先来先服务FCFS
2)最短寻找时间优先SSTF
优先处理最近的,不能保证总体最优
3)扫描算法SCAN(电梯算法)
折返响应
不会产生饥饿
扫描算法两个缺点
1、只有到了最边上才能返回
2、每个磁道响应频率不平均
改进1:LOOK算法
边移动边观察
4)改进2:循环扫描算法C-SCAN
一直从左到右一个方向进行扫描,而不是折返扫描,实现了响应平均
同时改进12:C-LOOK算法
(三)减少磁盘延迟时间的方法
因为读入磁盘后的一小段处理时间,导致连续的扇区被错过,只能等下次经过的时候再读,增加了延迟时间
方法一 交替编号
方法二 合理设计磁盘地址结构
磁头移动会花费大量的时间,尽量避免时间,所以采用(柱面号,盘面号,扇区号),而不是(盘面号,柱面号,扇区号)
推荐方法:每次先把磁头移到0号柱面,0号盘面,转动两圈就可以读完整个盘面里的扇区,继续读下面的1号盘面,等读完0号磁柱下的所有盘面后,再移动磁头到下一个磁柱,减少磁头移动次数;
不推荐方法:先读0号盘面的所有磁柱,每一盘要移动很多次磁头
方法三 错位命名
读完一盘之后,也会有处理时间,如果每盘对应的盘区一致的话,会导致盘和盘之间有错过的盘区
(四)磁盘的管理
1、磁盘初始化
2、引导块
3、坏块的管理
文件分配表FAT上记录坏块