磁盘详解(一文搞懂磁盘)-程序员宅基地

技术标签: 操作系统学习笔记  数据库  

目录

一.磁盘的结构

二.磁盘的分类

 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 的请求合并在一起。

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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_63006478/article/details/131194007

智能推荐

Linux安装mysql8.0(官方教程!)-程序员宅基地

文章浏览阅读2.5w次,点赞46次,收藏345次。Linux安装mysql(官方教程!)_linux安装mysql8.0

win10微软账号登陆报错:0x80190001解决方案_微软账户登录0x8019001-程序员宅基地

文章浏览阅读3.5w次,点赞19次,收藏18次。win10微软账号登陆报错:0x80190001解决方案_微软账户登录0x8019001

从微软AzureDevOps看实施基于DevOps全流程软件交付-程序员宅基地

文章浏览阅读1.5k次。Azure DevOpsAzure DevOps 汇集人员、流程和技术,实现软件交付自动化,为用户提供持续的价值。借助 Azure DevOps 解决方案,帮助您全流程构建你的软件产品,它使流程和产品更可靠。Azure DevOps帮助你用敏捷工具计划项目;用Git管理你的代码;..._azure devops approve

Typora中使用LaTeX:多行公式左对齐_typora对齐公式-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏40次。Typora中使用LaTeX:多行公式左对齐有时候公式太长,用=号对齐很难看(有的公式左边很长,右边很短),此时难免需要进行"公式左对齐"。所需要的环境还是"align"(或者是align*,不带公式编号)。语法如下:\begin{align*}\label{2} & X(0) = x(0)W_{N}^{0\cdot0} + x(1)W_{N}^{0\cdot1} + \cdots + x(N-1)W_{N}^{0\cdot(N-1)}\\ & X(1) = x(0)W_{N}_typora对齐公式

springboot配置文件加载顺序, java启动参数优先级_nacos默认覆盖本地吗-程序员宅基地

文章浏览阅读1k次。(12)、jar包外面的 Profile-specific application properties (application- {profile} .properties和YAML)(13)、jar包内的 Profile-specific application properties (application-{profile}.properties和YAML)(1)、在您的HOME目录设置的Devtools全局属性(~/.spring-boot-devtools.properties)。_nacos默认覆盖本地吗

适合写技术文档的工具_技术文档编写工具-程序员宅基地

文章浏览阅读3.6k次。https://www.showdoc.com.cn/_技术文档编写工具

随便推点

公钥私钥加解密原理_公钥加解密-程序员宅基地

文章浏览阅读4.5k次。一、文章来由网络安全课花了不少篇幅讲解非对称加密技术,做一个整理。二、基本概念 公开密钥加密,也称为非对称加密(asymmetric cryptography)。在這種密碼學方法中,需要一對金鑰,一個是私人金鑰,另一個則是公開金鑰。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危_公钥加解密

项目管理-概述_项目过程控制 确保 项目 资金-程序员宅基地

文章浏览阅读119次。项目管理的工具虽多,但要记住一点:所有的工具,只有在对的时间,用在对的地方,才能真正指导实际工作。管理是一门大的学问,理论知识只是基础,更多的需要靠实践,从被管理者到管理者的过程,不仅仅只是一个角色的转变,正所谓不在其位,不谋其政,很多东西,也只有走上管理岗位才能慢慢体会了。_项目过程控制 确保 项目 资金

lua面向对象编程之点号与冒号的差异详细比较-程序员宅基地

文章浏览阅读41次。首先,先来一段在lua创建一个类与对象的代码 1 Class = {} 2 Class.__index = Class 3 4 function Class:new(x,y) 5 local temp = {} 6 setmetatable(temp, Class) 7 temp.x = x 8 temp.y = y 9 return...

百度云虚假下载_虚假新闻:关于公共云的5种常见误解-程序员宅基地

文章浏览阅读212次。百度云虚假下载 In the complex world of IT, there are many misconceptions about migrating to the public cloud. Some of these portray the public cloud as the panacea for every IT issue, whereas others consider..._from diggers to data centres从淘金企业到数据中心

Tesseract图像识别OCR的学习1_tesseract doocr-程序员宅基地

文章浏览阅读1.1k次。领导让做一个识别发票的服务,之前都是写增删改查,完全没接触过图像识别这种高大上的东西,记录一下吧新建一个项目,导入tess4j <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j&l..._tesseract doocr