- 磁盘性能简述
首先与格式有关
- 数据的组织和格式
- 盘片、面、磁道、扇区
- 为方便处理,每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘块。磁盘”格式化”的过程就是按规定的格式规划盘块。
如温盘格式:
-
- 每道30个扇区,每扇600个字节。512字节用于存放数据,其余存放控制信息。
- 标识符字段:标识一个扇区的信息记录; 1+2+1+1+3 bytes
- 数据字段:每个扇区存放数据的空间。
数据前后还有若干特定功能字节。 1+512+2 bytes
与速度有关
- 磁盘类型
- 固定磁头(每道一磁头)
- 移动磁头(每盘一磁头)
- 访问时间的计算
- 寻道时间(到磁道)
- 旋转延迟(到扇区)
- 传输时间
传输时间占总时间的比例最小,磁盘读写速度的提高要选择合适的调度算法,减少前两项用时,使所有作业的磁盘处理时间均衡。
2)磁盘调度方法
- 对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
- 目标:使平均寻道时间最少。
- 算法:
- FCFS
- 最短寻道时间优先SSTF
- 扫描算法SCAN(磁盘电梯调度算法)
- 循环扫描算法CSCAN
- N-Step-SCAN算法
- FSCAN算法
FCFS
- 多个进程的磁盘I/O请求构成一个随机分布的请求队列。
- 磁盘I/O执行顺序按磁盘请求的先后顺序。
最短寻道时间优先SSTF Shortest Seek Time First
- 选择从当前磁头位置出发移动最少的磁盘I/O请求
- 使每次磁头移动时间最少。
- 不一定是最短平均柱面定位时间,但比FIFO算法有更好的性能。
- 对中间的磁道有利,但可能会有进程处于饥饿状态(I/O请求总不被执行)。
设当前在100磁道上;
进程要求的访问顺序:55,58,39,18,90,160,150,38,184
扫描算法SCAN(磁盘电梯调度算法)
- SSTF会导致“饥饿”现象
- 总选择最近的磁道访问,远磁道请求的进程会长时间得不到执行。
- 改进:
- 考虑距离的同时,更优先考虑方向
- SCAN算法
- 规定磁头移动方向:自里向外,再自外向里移动。
- 后续的I/O磁道请求,哪个在规定方向上距离最近,就先执行哪个。
- 如当前为100,后续要求55,86,95,180,165,105
- 先由内向外:选最近的105执行,再判断剩余的,选165,180。
再由外向内:95,86,55
- 循环扫描CSCAN
- SCAN的错过问题:
- 容易错过与当前磁道距离近,但方向不一致的磁道。
- 修改:将SCAN规定的移动方向改为“单向移动”
- 由里向外后,再由里向外。
- N-Step-SCAN
- 前述最近寻道算法共同问题:
- “磁臂粘着”——磁头静止在一个磁道上,导致其它进程无法及时进行磁盘I/O。(因:高密度盘,进程的读写可能集中在某一磁道)
- 如现有一系列请求:
3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3
不管哪种算法,从3开始向下执行会是
3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….
- 改进:
- 将磁盘请求队列分成长为N 的子队列
- 按FCFS选择子队列。队列内又按SCAN算法。
3 3 5 2 |3 3 3 2| 3 3 2 3| 3 4 4 5| 2 3 ….2 3
-
- 处理子队列过程中产生的新I/O再依次排队列。
- N=1时,就是FCFS,N很大时就是SCAN。
- F-SCAN
- N-Step-SCAN的简化:
- 请求队列只分为两个子队列
- 当前一个队列,按SCAN算法执行;
- 扫描期间新生成的组成一个队列,等待被扫描。
- 假设一个活动头磁盘有200道,编号从0-199。当前磁头正在155道上服务,并且在此之前完成的是173道的访盘请求。
现有如下访盘请求序列(磁盘号):75,168,81,138,87,143,187,129,198,44。试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数)。
1.最短寻道时间优先(SSTF)磁盘调度算法。
2.扫描法(SCAN)磁盘调度算法(假设沿磁头移动方向不再有访问请求时, 磁头就沿相反方向移动。 44到0磁道的移动忽略不计)
答:1.SSTF磁头移动顺序:
155,143,138,129,168,187,198,87,81,75,44
三段(155~129,129~198,198~44)
移动总量=155-129+198-129+198-44=249
2.SCAN:
155,143,138,129,87,81,75,44,168,187,198
两段(155~44,44~198)
移动总量=155-44+198-44=265
- (8分)若干个等待访问磁盘者依次要访问的柱面为20,44,40,4,80,12,76,假设每移动一个柱面需要3毫秒时间,移动臂当前位于40号柱面,请按下列算法分别计算为完成上述各次访问总共花费的寻找时间。
(1)先来先服务算法
(2)最短寻找时间优先算法。
Fcfs: 40-20+44-20+44-4+80-4+80-12+76-12=292
Sstf: 40,44,20,12,4,76,80
44-10+44-4+80-4=150
练习
- 虚拟设备是指:
通过虚拟技术将一台独占设备改造成若干台逻辑设备,供若干个用户进程同时使用。
- 按信息交换单位分类,可将设备分为:
块设备和字符设备。
- 通道是:
一种负责I/O的处理机。
- 字节多路通道主要用作:
连接大量的低速I/O设备。
- 从资源分配的角度看,操作系统将外部设备分为:
独占型设备、共享型设备、虚拟设备。
- 根据信息交换方式的不同,可以将通道分为:
字节多路通道、数据选择通道、数据多路通道。
- 设备独占性是指:
应用程序独立于具体使用的物理设备。
- 缓冲技术中的缓冲池在:
主存中。
- 进行设备分配时所需要的数据表格主要有:
设备控制表、设备控制器控制表、通道控制表和系统设备表。
- 如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。若要调整中断事件的响应次序,可以利用:
中断屏蔽。
- 在操作系统中,一种用空间换取时间的资源转换技术是:
Spooling。
- 大多数低速设备都属于:
独享设备。
- 为了实现CPU与外设的并行工作,系统引入了:
中断和通道硬件机制。
- 在操作系统中,用户在使用I/O设备时,通常采用:
逻辑设备名。
- Spooling系统是由:
磁盘中的输入井和输出井、内存中的输入缓冲区和输出缓冲区以及输入进程和输出进程组成。
- 引起中断发生的事件称为:
中断源。
- 设备与内存之间的传输方式有:
程序直接控制方式、中断控制方式、通道控制方式和DMA控制方式,其中通道方式占用CPU时间最短。
- 设备分配中的安全性是指:
设备分配应保证不会引起进程死锁。
- Spooling技术是指:
在共享设备上模拟独占设备。由预输入程序将作业执行中需访问的数据预先读入到输入井中,缓输出程序则负责将输出井中的信息在输出设备上输出。
- 发生中断时,刚执行完的那条指令所在的单元号称为:
断点,断点的逻辑后继指令的单元号称为:恢复点。
- 如何将独占型输入设备改造成可共享使用的虚拟设备?
- 为什么要设置内存I/O缓冲区?通常有哪几类缓冲区?
- 什么是设备驱动程序?其功能是什么?
- 在设备管理中,何为设备独立性?如何实现设备独立性?
- 试给出常用的I/O调度算法。
- 为什么要引入Spooling系统?Spooling系统可带来哪些好处?
- DMA控制方式与通道控制方式有什么不同?
- 设备分配时为什么要考虑安全性和设备的无关性?
访问磁盘过程
- 对磁盘的访问总是由缺页引起的:
- CPU给出地址,需要访问某存储单元;
- 并行进行TLB查找和cache查找;
- TLB查找后申明没有找到;
- 停止并行查找,并通知操作系统处理;
- 操作系统检查页表,发现该页不在内存中,需要从硬盘调入。应该如何进行呢?
- 操作系统从主存中选择一页准备换出,为调入的页安排存放空间;
- 若被换出的页是“脏”页,需要将其写回磁盘存储;
- 操作系统申请I/O总线;
- 获得批准后,发送写命令给I/O 设备(磁盘)。 紧跟着传送需要写回的页的全部数据。
- I/O控制器发现发给自己的写命令 ,加入到握手协议,并接受数据。
- 根据数据要写入的地址,读/写头移动到正确的柱面,同时,将数据接收到缓冲区。
- 寻道结束后,等待相应的扇区旋转到磁头下面,将数据写入扇区中。
- 在写入数据间隙,计算校验码并写入扇区中。
- 下一步,操作系统继续申请总线(如果还保持总线控制权,则不必申请)。
- 得到授权后,向磁盘发出读命令。
- 然后,磁盘识别地址,并转换为相应的地址段。
- 寻道,将读/写头移动到指定位置。
- 从指定扇区中读去数据,并进行校验。
- 磁盘申请I/O总线。
- 得到授权后,将数据通过总线送到内存。