大容量存储(涉及到的硬盘存取的原理)

news2025/1/11 5:16:09

磁盘的结构

我们简单分析一下,这里是计组的知识,大家可以自己多看些资料

柱面是基本单位

我们可以看到内圈的空间比外圈的要小,但是我们的每个磁道里的扇区是一样的,所以外圈的数据密度分布比内圈要更分散一些,这样就能保持角速度一致。

如果是线性的,那么外圈的数据密度和内圈一样 ,那么内圈的转速一定要比外圈快,因为密度相同,角度相同所取到的数据量不一样。

硬盘格式化

高级格式化就是创建一个文件系统,这里是后面的内容。

低级格式化在高级格式化之前,对扇区建立一个包含头部区域、数据区域和尾部区域是这个扇区的属性参数和校验码

磁盘性能

寻道时间:

磁头到达所要查找扇区的磁道的时间,这里是厂商设计时决定的,我们无法干扰

旋转延迟:

我们定位到磁道,还需要转到对应的扇区起始位置,最好的情况刚好转到扇区,最坏的情况需要转一圈才能到扇区

所以一个10000r(转)/m的磁盘一转为1/10000m我们设为t,Tr=(最好的情况+最坏的情况)/2,也就是转0圈和转1圈相加除以2,我们可以得到(0+t)/2,下图写了这个值为3ms

传送时间(传送数据进入磁道的时间):

r为转速,代表一分钟转r圈,那转一圈为1/r,N为扇区中的字节数,那么我们要写多少就需要除以这个N,得到b/N,转一圈的时间乘以在这个磁道写入了多少数据就得到了写入数据的时间了,得到T=1/r*b/N

0.01s传1KByte 所以总存取速率为100KByte/s

磁盘调度

磁盘的i/o请求

四类参数

操作时输入还是输出

磁盘地址是什么(柱面、磁头、扇区)

磁盘要掉入的内存地址是什么

调用磁盘的扇区数量是多少

多道程序请求i/o,会有一个磁盘队列,里面包含请求的柱面、磁头信息

先来先服务算法

这里包含柱面队列(每个进程要请求的柱面)和当前停留的磁头位置

大家可以算一下磁头滑动距离的长度

其实我们可以看下上面这个算法在到达183的时候不该去为37服务,因该为后面的124或122服务,这样磁头转动的距离一定会相对来说更小一些

而且我们前面说我们无法预测程序后面所需要调度的资源的问题,但这里并非预测而是已经载入的进程在等待资源,这里的disk quens是一个等待队列,所以我们是可以知道资源是如何调度的,完全符合优化算法的条件。

最短寻道时间优先

这里涉及到贪心算法容易陷入局部最优,需要动态规划

这里会有饥饿现象

扫描算法,除了要知道磁盘等待队列和磁头开始位置之外,还需要知道一个参数,硬盘移动的方向

磁盘柱面上有很多请求时,他不会偏爱任意一个请求

复杂均衡会更好

这里我们可以看出处理请求的地方,在发生请求的概率很少了,所以我们可以在用一个算法

c-scan算法

从现在磁头开始点固定处理完一个方向之后,我们立刻回头起始点,在从固定方向处理请求

这个时依据特定形成的算法

那么我们再依据这个思想,我们不回到固定的地方(0起始点),我们在服务完一块区域之后,立刻到相对的另一块区域的起始点去服务这个区域的请求。

这里其实就是电梯的原理

分布式负载均衡多进程调度用c-scan和scan算法更好些

大家可以看下自己的linux系统是什么算法

我的是这个

我这里只要一个算法,这里给大家看下如果你的系统支持多个算法如何切换

上面这三个算法都是linux常见的应用算法

noop:算法时先来先服务的应用算法,但有的时候简单的算法可能越好,所谓无为而治

deadline:两个等待队列,一个读,一个写,每个i/o请求都有一个时间戳,如果达到请求的deadline了那么就调整它为最高的优先级,这里要涉及到一个内容,读的每个i/o请求时间戳都要少很多,那么如果大量读取的请求可以用这个算法

cfq:有多少进程就有多少队列,这里的原理就是时间片轮转

每个进程都是轮转执行

但它也对每个队列的进程也进行了排列,这样就可以让每个进程优先的资源被先执行。

那么这三个算法对于磁盘访问来说那个经过测试之后访问速度更快

很多测试结果对于A和B的效率都差不多,而C反而因为更复杂效率更低

 

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

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

相关文章

LeetCode 235. 二叉搜索树的最近公共祖先

LeetCode 235. 二叉搜索树的最近公共祖先 难度:middle\color{orange}{middle}middle 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先…

解决pycharm中报ModuleNotFoundError: No module named ‘tensorflow‘错误

在pycharm中编写python程序时,遇到了报ModuleNotFoundError:no module named XXX的错误。以下是我的解决方法。 目录 一、错误现象 二、原因分析 三、解决方法 四、更多错误解决方法 一、错误现象 执行python程序时,报错,错误信息为Modu…

python字符串练习

python字符串练习 1.去掉字符串中所有的空格 s This is a demo print(s.replace( , )) 2.获取字符串中数字的个数 data input("请输入一些字符串:") a 0 for i in data:if i.isdigit():a a 1 print("数字个数:", a)3.将字母全部转换为…

Cypher中的聚合

深解Cypher中的聚合 值或计数的聚合要么从查询返回,要么用作多步查询下一部分的输入。查看数据模型 CALL db.schema.visualization() 查看图中节点的属性类型 CALL db.schema.notetypeproperties() 查看图中关系的属性类型 CALL db.schema.reltypeproperties() C…

普通二本,去过阿里外包,到现在年薪40W+的高级测试工程师,我的两年转行经历...

我是一个普通二本大学机械专业毕业,14年毕业,16年转行,目前做IT行业的软件测试已经有3年多,职位是高级软件测试工程师,坐标上海…我想现在我也有一点资格谈论关于转行这个话题;希望你在决定转行之前&#x…

爆品分析第4期 | 从周销12件到3700+件,这款收腰裤热度和口碑都爆了!

衣食住行,衣是排在第一位的,作为复购率最高的类目之一,服饰一直是TikTok上电商选品的风向标,是衡量电商发展情况的重要参考指标。随着疫情的结束和经济的日渐好转,消费者对服装类的需求上升。除了时装、T恤等日常消费的…

无损音乐格式:FLAC和ALAC

前言:我最近在弄苹果的airplay项目,发现airplay2对比airplay多了音质方面的增强。AAC和MP3接触过,但对FLAC和ALAC完全不了解,整理学习资料汇总成如下信息: AirPlay2 在2017年推出,在前一代AirPlay的基础上…

一篇文章搞性IPV6的原理和配置

本章对IPV6做了简单的介绍,并通过实验让读者了解IPV6地址和6TO4隧道的配置方法。 本章包含以下内容:  IPV6的概述 配置IPV6地址 配置6to4隧道  10.1 IPv6的概述 IPv6(Internet Protocol Version 6)是网络层协议…

MyBatis源码分析(一)MyBatis整体架构分析

文章目录一、为什么要用MyBatis1、原始JDBC的痛点2、Hibernate 和 JPA3、MyBatis的特点4、MyBatis整体架构5、MyBatis主要组件及其相互关系6、MyBatis源码的特点二、源码环境搭建未完待续一、为什么要用MyBatis 1、原始JDBC的痛点 在传统JDBC场景下,SQL 夹杂在Jav…

Databend 开源周报第 80 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.com 。Whats New探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。Features & Improvements :…

Unity Asset Bundle学习 - 加载本地资源

Unity的 Asset Bundle 文档 https://docs.unity3d.com/cn/2019.4/Manual/AssetBundles-Workflow.html 第一次接触 直接按官方文档操作 下面接着按文档走流程 构建AssetBundle 此脚本将在 Assets 菜单底部创建一个名为 Build AssetBundles 的菜单项,该菜单项将执行与…

STM32学习笔记-DMA

文章目录一、功能框图通道选择仲裁器FIFO1. **FIFO**: First in First out2. FIFO作用:端口二、DMA模式配置1. 传输模式2. 源地址和目标地址3. 流控制器4. 循环模式5. 传输类型6. 直接模式7. 双缓冲模式8.DMA中断事件三、程序设计1. DMA初始化结构体DMA(Direct Memo…

20 | k8s v1.20集群搭建master和node

1 单节点master 1.1 服务器整体规划 1.2 单Master架构图 1.3 初始化配置 1.3.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld1.3.2 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 1.3.3 关闭swap …

tiktok小店如何找到美妆爆品?(内附2月tiktok数据分析)

根据相关数据统计,2023年来全球美妆个护零售总额稳步增长。随着全球化加剧,越来越多的美妆个护品牌选择出海,寻找新的增长和变现机会。Tiktok的快速发展给这些美妆个护品牌提供了新的可能,打通了出海的新思路。同时对于出海的小店…

LeetCode 2373. 矩阵中的局部最大值

LeetCode 2373. 矩阵中的局部最大值 难度:easy\color{Green}{easy}easy 题目描述 给你一个大小为 nxnn x nnxn 的整数矩阵 gridgridgrid 。 生成一个大小为 (n−2)x(n−2)(n - 2) x (n - 2)(n−2)x(n−2) 的整数矩阵 maxLocalmaxLocalmaxLocal ,并满足…

解决Ubuntu虚拟机不能复制粘贴

安装虚拟机的时候就有点不顺,在填写用户名和密码的时候键盘敲不上字,重新又安装了几次才行,安装成功后发现不能复制粘贴主机的内容,这肯定不行啊,找解决方案,网上也有很多,有如下:重…

泰克示波器|MSO64示波器的应用

泰克新一代示波器MSO64为实例来讲解时频域信号分析技术。MSO64采用全新TEK049平台,不仅实现了4通道同时打开时25GS/s的高采样率,而且实现了12-bit高垂直分辨率。同时,由于采用了新型低噪声前端放大ASIC—TEK061,大大降低了噪声水平…

Springboot整合Easy-Es

版本说明 Springboot 2.7.5JDK 17Elasticsearch 7.14.0Easy-Es 1.1.1《点我进入Easy-Es官网》PS&#xff1a;目前Easy-Es暂不支持SpringBoot3.X Windows10安装Elasticsearch 《安装Elasticsearch教程》 pom.xml <parent><groupId>org.springframework.boot<…

SpringBoot集成Swagger3.0(入门)01

创建SpringBoot项目 创建完成后再pom文件中导入swagger3.0依赖&#xff0c;具体的pom文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://w…

一看就懂 —— Spring boot + Spring MVC + MyBatis 基础框架demo

目录 前言 一、项目依赖 二、配置文件 三、创建数据库和实体类 3.1、创建数据库 3.2、创建实体类 四、构建 Mapper 层代码实现&#xff08;接口 XML&#xff09; 4.1、创建接口 4.2、创建 XML 4.3、XML 文件与接口的对应关系 五、实现服务层 六、实现控制器 小结 …