290 likes | 450 Views
大容量存储器的结构. 概念. 二级 存储器 三级 存储器 磁带 , 可移动磁盘设备 ( 软盘 , CD-ROM) 主要用于备份, 长期存储 , 大数据集 , 与其他系统进行文件交换 那什么是 “ 主 ” 存储器 ? RAM. CPU 寄存器. Cache. 内存. 磁盘. 可移动 媒体. 网络存储. 存储层次. 速度. 快慢. 磁盘结构. 磁盘结构. 按逻辑 块 的一维数组方式进行编址 特别的,每块 512 字节 逻辑块映射到磁盘 扇区
E N D
概念 • 二级存储器 • 三级存储器 • 磁带, 可移动磁盘设备 (软盘, CD-ROM) • 主要用于备份, 长期存储, 大数据集, 与其他系统进行文件交换 • 那什么是“主”存储器? • RAM
CPU 寄存器 Cache 内存 磁盘 可移动 媒体 网络存储 存储层次 速度 快慢
磁盘结构 • 按逻辑块的一维数组方式进行编址 • 特别的,每块512字节 • 逻辑块映射到磁盘 扇区 • 转换机制(块号 到 柱面/磁道/扇区) (block # to cylinder/track/sector)
磁盘结构 • 假设一个磁盘有200个柱面,每个柱面有10个磁道,每个盘面被划分成8个扇区,所有的编号都从“0”开始 • 每个柱面的块数=磁道*扇区数=10*8=80 • 块总数=柱面数*每柱面块数=200*10*8 • 逻辑块“1002”对应磁盘哪个柱面、磁道和扇区? • 柱面=1002/80=12,余数=1002%80=42 • 磁道=42/8=5 • 扇区=42%8=2
磁盘结构 • 转换是复杂的,因为 • 每个磁道的扇区数不是常数 –最外磁道的扇区数可能比最内磁道的多40%的 • 如果存在扇区,空闲扇区必须替代 • 磁盘技术改善 • 每个磁盘成千个柱面 • 每个磁道多余100个扇区 (磁盘的外部区域)
磁盘调度 • OS必须确保对磁盘的快速访问 • 访问磁盘数据涉及两个延迟 • 查找时间–把磁头移动到要求的柱面的时间 • 旋转延迟–扇区旋转到磁头下的时间 • 磁盘带宽 • 传输的总字节数, 除以第一次发出服务请求到最后传输完毕的时间间隔
磁盘调度 • 我们可以通过以合理的顺序调度磁盘的服务请求来改善访问时间和带宽 • 在多用户操作系统中, 可能有多个进程在竞争磁盘 • 请求被放入队列中 • 操作系统必须从队列中选择一个请求来服务
FCFS 调度算法 • 先来先服务First come, first served • 请求 –柱面 98, 183, 37, 122, 14, 124, 65, 67, 初始位置 53 cylinder 14 37 53 65 67 98 122 124 183 time
FCFS 调度算法 • 在前一个例子中,使用FCFS, 磁头移动过的柱面总数为640 • 640=(98-53)+(183-98)+(183-37)+(122-14)+(124-14)+(124-65)+(67-65) • 通过使用不同的算法,磁头的运动可以被充分减少 • 当磁头在 122号柱面时 (接下去的请求为 柱面14, 124, …), 先为124号柱面服务不是个更好主意吗?
FCFS 调度算法 • 算法特点 • 算法简单 • 平均寻道距离较大 • 响应时间较高 • 降低设备服务的吞吐量 • 但各进程得到服务的响应时间的变化幅度较小 • 适用于访问请求不是很多的情况
SSTF调度算法 • 最短查找时间优先 • 为最靠近磁头当前位置的请求服务 • 请求队列 - 98, 183, 37, 122, 14, 124, 65, 67, 初始位置53 14 37 53 65 67 98 122 124 183 time
SSTF调度算法 • 服务顺序为53, 65, 67 , 37, 14, 98, 122, 124, 183, • 结果磁头运动只要236个柱面 • 与 SJF CPU调度类似, 可能导致一些请求饿死 • 请求可能在任何时间到达,悬而未决的请求使队列可能变长 • FCFS的一个改进, 但不是最佳的
SSTF调度算法 • 算法特点 • 可以得到比较好的吞吐量 • 较低的平均响应时间 • 对用户的服务请求响应机会不是均等的 • 对中间磁道的访问请求将得到最好的服务,对内外两侧磁道的服务随偏离中心磁道的距离而越来越差 • 不适用于服务请求多的情况 • 有些请求的响应时间不可预见,可能无限延迟
SCAN调度算法 • “电梯算法" • 磁头在一个方向上运动, 在途中为请求服务, 直到到达磁盘末端, 然后反向(移动) • 请求队列- 98, 183, 37, 122, 14, 124, 65, 67, 初始位置 53 14 37 53 65 67 98 122 124 183 time
SCAN调度算法 • 服务顺序:53, 37, 14, 65, 67, 98, 122, 124, 183 导致磁头运动只要208个柱面 • 如果在队列中出现的请求(所请求的柱面)正好在磁头前面, 它马上被服务 • 但是如果请求正好在磁头后面,那么(该请求)必须等待,直到(磁头)臂移动到磁盘末端,反个方向,然后移回来
SCAN调度算法 • 算法特点 • 基本克服了SSTF策略的服务于中间磁道和响应时间变化比较大的缺点 • 具有SSTF策略的优点,即吞吐量比较大,平均响应时间比较小 • 算法要求除了知道磁头的当前位置,还必须知道磁头的运动方向 • 由于摆动式扫描方法,两侧仍低于中间,只是不那么严重
14 37 53 65 67 98 122 124 183 time C-SCAN调度算法 • 循环扫描策略(单向调度Circular SCAN,CSAN) • 假设当磁头到达磁盘的末端时, 大部分的新请求将会在磁盘的另一端(0开始), 所以移回到那儿
LOOK & C-LOOK调度算法 • Like SCAN & C-SCAN • 但是(磁头)只移动到当前为服务队列的最远端, 而不是磁盘的末端 • 在继续移动之前,先查看请求 14 37 53 65 67 98 122 124 183 time
性能分析 • 哪一个更好? • SSTF比较通用,性能一般,因为它是在FCFS上的改进 • SCAN(电梯) & C-SCAN(单向)在(高)负载系统中性能更好, 因为他们不可能导致饿死
性能分析 • 对任一种调度算法, 性能主要依赖于请求的个数 • 假设队列中只有一个突出的请求,那么所有的算法都与 FCFS一样
性能分析 • 文件分配方式可能影响性能 • 比如索引分配使磁盘上的数据离散分布,这导致更多的磁头运动 • 连续分配导致较少的磁头运动
性能分析 • 目录和索引块的位置也可能影响性能 • 比如, 目录项 在第一个柱面,数据在最后一个柱面 • 或者 索引块在第一个柱面,而文件的数据块在最后一个柱面 • Unix中, inodes的位置会影响性能
性能分析 • 把目录和索引块缓存在主存中有助于减少磁头移动 • 磁盘调度算法应该作为OS的独立模块, 以便在必要时,可以用不同的算法替换它 • SSTF或 LOOK都可以作为默认的算法
作业 • 假设一个磁盘驱动器有5000个柱面,从0-4999,驱动器正在为柱面143的一个请求提供服务,且前面的一个服务请求是在柱面125。按FIFO顺序,即将到来的请求队列是:86,1470,1774,948,1509,1022,1750,130 从现在磁头位置开始,按FCFS,电梯调度,最短查找时间优先的磁盘调度算法,分别写出服务的顺序,并计算移动距离(按柱面计算)。