磁盘详解(一文搞懂磁盘)

news2024/11/26 21:28:57

目录

一.磁盘的结构

二.磁盘的分类

 2.1按照磁头是否可以移动分类

2.2按照盘片是否可以更换分类

三.磁盘的读写过程

 四.磁盘的调度

4.1FCFS先来先服务算法

4.2SSTF最短寻找时间优先

4.3 SACN扫描算法

4.4C-SACN循环扫描算法

4.5 SPTF(最短定位时间优先)

五.磁盘减少延迟采取的措施

5.1磁道偏移

5.2多区

5.3磁盘缓存

 六.磁盘地址结构表示

七.IO合并


一.磁盘的结构

分块解析:

磁道: 磁盘的盘面被划分成一个个磁道。 这样的一个“圈”就是一个磁道

扇区: 一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”。各个扇区存放的数据量相同(如1KB) 

盘面,柱面

二.磁盘的分类

 2.1按照磁头是否可以移动分类

2.2按照盘片是否可以更换分类

三.磁盘的读写过程

寻找时间(寻道时间) T S :在读 / 写数据前,将磁头移动到指定磁道所花的时间。
启动磁头臂 是需要时间的。假设耗时为 s
移动磁头 也是需要时间的。假设磁头匀速移动,每跨越一个磁道耗时为 m ,总共需要跨越 n 条磁道。则: 寻道时间 T S = s + m*n
延迟时间 T R :通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为 r (单位:转 / 秒,或 转 / 分),则 平均所需的延迟时间 T R = (1/2)*(1/r) = 1/2r
传输时间Tt :从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为 r ,此次读 / 写的字节数为 b ,每个磁道上的字节数为 N 。则: 传输时间T t = (1/r) * (b/N) = b/(rN)
例题:

寻求正确的轨道。磁头当前所在的位置在外围的21扇区,如果要访问12,必须先将磁头移到其所在的位置,即寻道(seek)。平均寻道时间大约需要 4ms。完全寻道(从表面的一端到另一端)可能需要两到三倍的时间。寻道有许多阶段:首先是磁盘臂移动时的加速阶段;然后随着磁盘臂全速移动而惯性滑动;然后随着磁盘臂减速而减速;最后,在磁头小心地放置在正确的磁道上时停下来。不是纯粹的线性成本。必须加速、滑行、减速、停放。停放时间(settling time)可能需要 0.5~2ms,因为驱动器必须确定找到正确的磁道。

等待旋转。等待期望的扇区旋转到磁头下。这种等待在现代驱动器中经常发生,并且是 I/O 服务时间的重要组成部分,又称之为旋转延迟(rotational delay/rotation delay)。平均旋转延迟直接根据 RPM 计算。15000 RPM 等于 250 RPS(每秒转速)。因此,每次旋转需要 4ms。平均而言,磁盘将会遇到半圈旋转,因此平均时间为 2ms。

传输数据。传输速度很快,取决于 RPM 和扇区密度。100+ MB/s 是典型的最大传输速率。传输时间就是传输大小除以峰值传输速率。512 字节 * (1s / 100 MB) ≈ 5 us。

读/写时间由三个组成部分:时间 = 寻道 + 旋转 + 传输时间

 

顺序工作负载:每个的吞吐量是多少?

Cheeta: 125 MB/s

Barracuda: 105 MB/s

随机工作负载:每个的吞吐量是多少?假设随机读取 16 KB。

Cheetah 平均随机读取 16 KB 需要多长时间?

 

 四.磁盘的调度

由于I/O的高开销,操作系统在决定哪个I/O与磁盘交互扮演一个重要角色。磁盘调度程序(disk scheduling)。

不像任务调度程序,磁盘调度程度对于每一个任务的长度是未知的,它只能靠好的猜测。通过估计任务花费时间来确定执行最短任务(SJF)。磁头的位置、任务请求的位置,比任务的长度更重要。

最大限度地缩短访问时间并最大限度地提高数据传输带宽,需要减少花费在寻道上的时间。

4.1FCFS先来先服务算法

优点:公平;如果请求访问的磁道比较集中的话,算法性能还算过的去
缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则 FCFS 在性能上很差,寻道时间长。

4.2SSTF最短寻找时间优先

Eg :本例中,如果在处理 18 号磁道的访问请求时又来了一个 38 号磁道的访问请求,处理 38 号磁道
的访问请求时又来了一个 18 号磁道的访问请求。如果有源源不断的 18 号、 38 号磁道的访问请求
到来的话, 150 160 184 号磁道的访问请求就永远得不到满足,从而产生“饥饿”现象。

4.3 SACN扫描算法

优点:性能较好,平均寻道时间较短, 不会产生饥饿现象
缺点: 只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了 184 号磁道的访问请
求之后就不需要再往右移动磁头了。
SCAN 算法对于各个位置磁道的响应频率不平均(如:假设此时磁头正在往右移动,且刚处理过
90 号磁道,那么下次处理 90 号磁道的请求就需要等磁头移动很长一段距离;而响应了 184 号磁道
的请求之后,很快又可以再次响应 184 号磁道的请求了)

4.4C-SACN循环扫描算法

SCAN 算法对于各个位置磁道的响应频率不平均,而 C-SCAN 算法 就是为了解决这个问题。规定只有磁头朝某个特定方向移动时才处理磁道访问请求,而 返回时直接快速移动至起始端而不处理任何请求

进一步改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。这种形式的SCAN算法和C-SCAN算法称为LOOK调度和C-LOOK调度,因为它们在朝一个给定方向移动前会查看是否有请求。 

4.5 SPTF(最短定位时间优先)

五.磁盘减少延迟采取的措施

5.1磁道偏移

5.2多区

5.3磁盘缓存

 

 六.磁盘地址结构表示

磁盘上的物理地址一般用:柱面号,盘面号,扇区号(或者块号)表示

比如要寻找第0个柱面,0个盘面,第七个扇区

则表示为(000,00,111)

七.IO合并

设想请求读取队列:33,  8, 34

在这种情况下,调度程序应该将 33 和 34 的请求合并在一起。

合并在操作系统级别尤其重要,因为它减少了发送到磁盘的请求数量,从而降低了开销。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maxwell安装使用

​欢迎光临我的博客查看最新文章: https://river106.cn 1、Maxwell简介 Maxwell 是由美国Zendesk开源,用Java编写的MySQL实时抓取软件。读取 MySQL binlogs 并将修改行字段的更新写入 Kafka, Kinesis, RabbitMQ, Google Cloud Pub/Sub 或 Redis (Pub/Sub or LPUSH)…

基于Aidlux的停车标志检测(可修改为coco 80类目标检测)

●项目名称 基于Aidlux的停车标志检测(可修改为coco 80类目标检测) ●项目简介 本项目在Aidlux上部署检测停车标志检测,并可在源码上修改coco 80类目标检测索引直接检测其他79类目标,可以直接修改、快速移植到自己的项目中。 ●…

【学习笔记】Java——消息队列kafka

kafka 1、Kafka combines three key capabilities:2、kafka是如何工作的:3、Kafka APIS:4、kafka集群 1、Kafka combines three key capabilities: To publish (write) and subscribe to (read) streams of events, including co…

中国游戏等“春”来

对于游戏行业来说,2023年将是压力依旧的一年,但或许也是转型调优的希望之年。 压力在于,互联网流量见顶,用户付费意愿降低,行业整体进入下行周期,彻底进入存量竞争时代。《2022年中国游戏产业报告》显示&a…

相机标定实战之双目标定

相机标定原理 文章目录 相机标定原理前言一、采集图像二、基于Matlab单双目标定流程采集棋盘图 三、基于OpenCV-Python双目标定流程检测棋盘格角点对角点进行亚像素精细化单目标定双目标定双目校正保存标定参数读取标定参数代码示例 参考 前言 相机标定可以说是计算机视觉/机器…

哪个公司的 CEO 不想拥有一个自己的数字克隆?

⚠️ FBI Warning:本文纯属作者自娱自乐,数字人的观点不代表 CEO 本人的观点,请大家不要上当受骗!! 哪个公司的 CEO 不想拥有一个自己的数字克隆? 想象🤔一下,如果 CEO 数字克隆上线…

python基础语法总结

1.打印输出 print(“Hello World”) 在许多大众的编程语言中,需要在每个语句的末尾添加分号,但Python并非如此。Python是一种简洁的编程语言,你不需要添加不必要的字符和语法。在Python中,一条语句结束于一行的结尾(方括号&…

找不到msvcp120dll,无法继续执行代码的修复方法

本教程操作系统:Windows系统、 msvcp120.dll是电脑文件中的dll文件(动态链接库文件)。如果计算机中丢失了某个dll文件,可能会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错。 msvcp120.dll文件…

IDEA整合GO并创建module工程

IDEA整合Go 安装包环境配置idea配置并创建test mode 安装包 1.去官网下载对应还的安装包 官网下载地址 我选择下载的window 版本: 直接按照对应的目录,然后点击下一步 环境配置 1.配置go环境变量 在高级环境变量PAHT中添加安装包的**/bin 目录&…

mysql数据库的基础

mysql数据库 一、数据库的基本概念二、关系数据库三、SQL语句增改查删 四、natvicat for mysql软件 一、数据库的基本概念 数据(data) 描述事物的符号记录包括数字、文字、图形、图像、声音、档案记录等以“记录”形式按统一的格式进行存储 表&#x…

基于Java少儿编程网上报名系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

sizeof 和 strlen !!!

定义 sizeof()是单目操作符,是可以求变量(类型)所占空间的大小,不在乎内存中存放的是什么,只在乎内存大小 strlen()是函数,是计算字符串的长度的 它从内存的某个位置(可以是字符串开头&#x…

进程管道:pipe调用

在看过高级的popen函数之后&#xff0c;我们再来看看底层的pipe函数。通过这个函数在两个程序之间传递数据不需要启动一个shell来解释请求的命令。它同时还提供了对读写数据的更多控制。pipe函数的原型如下所示&#xff1a; #include <unistd.h> int pipe(int pipefd[2])…

OS的事件机制-Event

Event在OSEK OS中&#xff0c;其实就是一个flag的作用&#xff0c;如果某个TASK执行了&#xff0c;就调用<SetEvent()>把flag就置起来&#xff0c;和这个task关联的另一个TASK也执行了&#xff0c;就可以把flag清掉<ClearEvent>&#xff0c;如果第一个TASK没有执行…

这才是你想了解的Redis

文章简介 redis作为一个基于内存的数据结构存储系统&#xff0c;由于它的灵活性和可拓展性强&#xff0c;在我们日常开发中经常被用作数据库、缓存或者消息代理。本文就从Redis的基本部署使用说到Redis的集群、锁和消息对列 Redis基本使用 一、安装 下载地址&#xff1a;htt…

mySql 储存过程 多个结果返回解析

当需要查询复杂的数据模型并返回多个结果集时&#xff0c;使用 MySQL 存储过程可以有效地优化性能。同时&#xff0c;在开发中使用 Mybatis 可以方便地调用 MySQL 存储过程并获取多个结果集。本文将介绍如何在 Mybatis 中调用 MySQL 存储过程&#xff0c;并获取多个结果集。 1、…

Java并发之原子类

一、原子类简介 1 什么是原子类 Java中提供了一些原子类&#xff0c;原子类包装了一个变量&#xff0c;并且提供了一系列对变量进行原子性操作的方法。原子性的意思是对于一组操作&#xff0c;要么全部执行成功&#xff0c;要么全部执行失败&#xff0c;不能只有其中某几个执…

基础知识学习---牛客网C++面试宝典(三)C/C++基础之面向对象

1、本栏用来记录社招找工作过程中的内容&#xff0c;包括基础知识学习以及面试问题的记录等&#xff0c;以便于后续个人回顾学习&#xff1b; 暂时只有2023年3月份&#xff0c;第一次社招找工作的过程&#xff1b; 2、个人经历&#xff1a; 研究生期间课题是SLAM在无人机上的应…

测试新手百科:Postman简介、安装、入门使用方法详细攻略!

本文关键词&#xff1a;Postman基础 目录 一、Postman背景介绍 二、Postman的操作环境 三、Postman下载安装 四、Postman的基础功能 五、接口请求流程 六、管理用例—Collections 七、身份验证Authentication 一、Postman背景介绍 用户在开发或者调试网络程序或者是网…

【答题】在线答卷-答题系统的微信小程序开发流程详解

用死记硬背的方法学习的学生&#xff0c;面对桌上堆积成厚厚的书本&#xff0c;是否感觉鸭梨山大呢&#xff0c;想着教育却面临着学习成本不小问题&#xff0c;是否感觉各种不便呢&#xff0c;如果对编程代码有感兴趣&#xff0c;不妨试试做一个自己的在线答题系统&#xff0c;…