当前位置: 首页 > article >正文

计算机导论——第37章 磁盘驱动器

关键问题:如何存储和访问磁盘上的数据

现代磁盘驱动器如何存储数据?接口是什么?数据是如何安排和访问的?磁盘调度如何提高性能?

1. 接口

驱动器制造商唯一保证的是单个512字节的写入是原子的,即它将完整地完成或者根本不会完成,因此,如果发生了不和时宜的掉电,则只能完成较大写入的一部分。

通常可以假设访问驱动器地址空间内两个彼此靠近的块将比访问两个相隔很远的块更快,人们通常可以假设访问连续块是最快的访问模式,并且通常比任何更随机的访问模式快得多。

2. 基本几何形状

3. 简单的磁盘驱动器

单磁道延迟——旋转延迟rotational delay, rotation delay:必须等待期待的扇区旋转到磁头下

多磁道延迟——寻道时间,驱动器将磁盘臂移动道正确的磁道的时间

完整的I/O时间图包括了:首先寻道,然后等待转动延迟,最后传输。

磁道偏斜,许多驱动器会采用这种方式,以确保即使在跨越磁道边界时,顺序读取也可以方便地服务

现代磁盘驱动器还有一个重要组成部分时缓存,也被称为磁道缓冲区

在写入数据时,驱动器面临一个选择:它应该将在数据放入其内存之后,还是写入实际写入磁盘之后回报写入完成?前者称为后写缓存(有时也称立即报告),后者则称为直写,前者往往更快,但可能有危险。

4. I/O时间:用数学

T_I/O = T_寻道 + T_旋转 + T_传输

I/O速率定义

R_I/O = 传输大小 / T_I/O

两种常见的负载:

  • 随机工作负载,它向磁盘上随机位置发出小的读取请求
  • 顺序工作负载,只是从磁盘连续读取大量扇区,不会跳过

随机和顺序工作负载之间的驱动性能差距很大

高端性能驱动器与低端容量驱动器之间的性能差异很大

5. 磁盘调度

由于I/O的高成本,操作系统在决定发送给磁盘I/O顺序方面来发挥作用。

与任务调度不同,每个任务的长度通常是不知道的,对于磁盘调度,我们可以很好地猜测任务(即磁盘请求)需要多长时间。磁盘调度程序将尝试在其操作中遵循SJF最短任务优先的原则。

SSTF:最短寻道时间优先,按磁道对I/O请求队列排序,选择在最近磁道上的请求先完成:操作系统可以使用最近块优先,Nearest-Block-First

但是这里有一个问题:饥饿问题,SSTF对磁道当前所在位置的内圈磁道有稳定的请求,而忽略对其他磁道对请求。

解决上面问题可以使用电梯算法,又称SCAN或C-SCAN,简单地以跨越磁道对顺序来服务磁盘请求,我们将一次跨越磁盘称为扫一遍。因此,如果请求的块所属的磁道在这次扫一遍已经服务过了,它就不会立即处理,而是排队等待下次扫一遍

SPTF:最短定位时间优先

  • 寻道时间远远高于旋转延迟,那么SSTF或者变体就好了
  • 查找和旋转大致相当,因此SPTF是有用的,它提高了性能

其他调度问题

  • 在较早的系统中,操作系统完成了所有的调度
  • 在现代系统中,操作系统调度程序通常会选择它认为最好的几个请求,并将它们全部发送到磁盘。磁盘然后利用其磁头位置和详细的磁道布局信息等内部知识,以最佳可能SPTF顺序服务于这些请求
  • 磁盘调度程序执行的另一个重要的相关任务是I/O合并,可以降低开销,在向磁盘发出I/O之前系统应该等待多久?这是个复杂的问题


http://www.kler.cn/a/154667.html

相关文章:

  • 大数据实验9:Spark安装和编程实践
  • 后端总指挥---文件接口
  • Flutter:Widget生命周期
  • 深度神经网络DNN反向传播BP算法公式推导
  • C/C++静态库引用过程中出现符号未定义的处理方式
  • Wxml2Canvas小程序将dom转为图片,bug总结
  • 2022年高校大数据挑战赛A题工业机械设备故障预测求解全过程论文及程序
  • Python程序员入门指南:学习时间和方法
  • OpenCV-Python:计算机视觉框架
  • 交换综合实验
  • Redis hash表源码解析
  • 物联网开发(一)新版Onenet 基础配置
  • Hdoop学习笔记(HDP)-Part.16 安装HBase
  • C++11 类的新功能
  • 实验8 图的操作
  • LangChain(0.0.339)官方文档四:Prompts下——prompt templates的存储、加载、组合和部分格式化
  • 肖sir__mysql之单表练习题2__(2)
  • 吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合
  • 西南科技大学模拟电子技术实验四(集成运算放大器的线性应用)预习报告
  • Java Web——动态Web开发核心-Servlet
  • TA-Lib学习研究笔记(八)——Momentum Indicators 中
  • TLS、对称/非对称加密、CA认证
  • Zabbix HA高可用集群搭建
  • Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
  • 编程实战:类C语法的编译型脚本解释器(五)
  • HarmonyOS——解决本地模拟器无法选择设备的问题