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

2023-12-02 02:12

本文主要是介绍计算机导论——第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之前系统应该等待多久?这是个复杂的问题

这篇关于计算机导论——第37章 磁盘驱动器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443566

相关文章

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

Python计算机视觉编程 第十章

目录 一、OpenCv基础知识 1.读取和写入图像 2.颜色空间 3.显示图像和结果 二、处理视频 1.输入视频 2.将视频读取到NumPy数组中 三、跟踪 1.光流 2.Lucas-Kanade算法 一、OpenCv基础知识 OpenCV 自带读取、写入图像函数以及矩阵操作和数学库。 1.读取和写入图像 import cv2# 读取图像im = c

2025届计算机毕业设计:如何构建Java SpringBoot+Vue个人健康档案管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录