磁盘和固态磁盘

news2025/2/24 9:08:02

磁盘和固态磁盘

磁盘的物理结构

image-20230502150745540

​ 磁盘的表面由一些磁性的物质组成,可以用这些磁性物质来记录二进制数据。磁盘的盘面被划分成一个个磁道,这样一个“圈”就是一个磁道。同一磁盘上不同磁道上记录的信息量相同,因此内侧磁道上的数据密度较大。一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”。各个扇区存放的数据量相同

image-20230502150912516

如下图,所示。一个磁盘中可能会有多个盘面,一个盘面上会有不同的磁道。对于活动的头磁盘,磁臂可以来回伸缩来确定磁头定位磁道,因此每个盘面对应一个磁头。而对于一个固定头磁盘,每个盘面的每个磁道都有一个对应的磁头

image-20230502151153295

在这里插入图片描述

​ 了解了磁道的物理结构,我们便可以用(柱面号,盘面号,扇区号)(编号的顺序不能换,在后面的减少延迟时间的方法具体解释)来定义任意一个“磁盘块”。根据该地址读取一个“块”的过程如下:

  1. 根据柱面号移动磁臂,让磁头指向指定柱面
  2. 激活指定盘面对应的磁头
  3. 磁盘旋转的过程中,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写(实质上是电流的磁效应,和切割磁感线,具体的可以看机组中的磁盘描述)

磁盘一次读/写操作的时间

一次磁盘的读写时间

一次磁盘的读写时间由寻找(寻道)时间旋转延迟时间传输时间决定

寻找时间(寻道时间)Ts:在读写数据前,将磁头移动到指定磁道所花的时间。

  1. 启动磁头臂需要的时间
  2. 移动磁头需要的时间

延迟时间 T R T_R TR:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设转速为r,则平均所需的延迟时间 T R = 1 2 r T_R = \frac{1}{2r} TR=2r1

传输时间 T t T_t Tt:从磁盘读出或向磁盘写入数据所经历的时间,假定磁盘转速为r,此次读写的字节数为b,每个磁道上的字节数为N。则传输时间 T t = b r N T_t = \frac{b}{rN} Tt=rNb

总的平均存取时间$T_a=T_s + \frac{1}{2r} + \frac{b}{rN} $

延迟时间和传输时间都与磁盘的转速相关,。而转速是硬件的固有属性,因此操作系统也无法优化延迟时间和传输时间。但是操作系统的硬盘调度算法会直接影响寻道时间。

磁盘调度算法

image-20230502142803008

先来先服务算法(FCFS)

FCFS算法的根据进程请求访问磁盘的先后顺序进行调度。

优点是该种算法的具有公平性,不会产生饥饿现象。当只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有达到较好的性能

缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS性能上较差,寻道时间较长

image-20230502143532382

最短寻找时间(SSTF)

SSTF(Shortest Seek Time First)算法有限处理与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是不能保证总的寻道时间最短.(贪心思想)

优点:性能较好,平均寻道时间短

缺点:可能产生饥饿现象(当进程中有一个较大的磁道号的请求时,但后面来了很多低磁道号,导致大磁道号的请求长时间未被响应)

image-20230502143928979

SCAN算法(电梯调度算法)

SSTF算法会产生饥饿的原因在于,磁头可能会一直在一个区域内来回移动。于是出现了SCAN算法,SCAN算的思想在于:只磁头移动到最外侧磁道的时候才能往回移动,移动到最内侧磁道的时候才能往外移动。这种方式类似于电梯的运行,因此也叫做电梯算法

优点:性能较好,平均寻道时间较短,不会产生饥饿现象

缺点:

  1. 只有到达最边上的磁道才能改变磁头方向,有部分时间浪费
  2. SCAN算法对个位置磁道的响应频率不平均,磁道号高的磁道更容易被多次访问,可以根据下图看出

image-20230502144857189

注意:若题目中无特别说明,则SCAN就是LOOK

LOOK调度算法

LOOK算法与SCAN算法的不同之处在于,弥补了SCAN算法的第一个缺点。

LOOK算法的思想是:如果在磁头的移动方向上已经没有别的请求,就可以立即改变磁头移动方向

image-20230502145037786

优点:相比于SCAN算法来,不需要每次都移动到最外侧或者最内侧才改变磁头方向,是寻道时间进一步缩短

循环扫描算法C-SCAN

C-SCAN算法其实也是对SCAN算法的一个改进,C-SCAN算法弥补了SCAN算法的缺点2——对不同位置的磁道访问频率不同

C-SCAN算法规定只有磁头朝某个特定方向运动时才处理磁道访问请求,而返回时直接快速移动至起事端而不处理任何请求

image-20230502145803653

优点:比SCAN算法,对各个位置磁道的响应频率都很平均

缺点:只有到达最边上的磁道时才能改变磁头移动方向,因此会浪费部分寻道时间(SCAN算法的缺点1)

注意:若题目中无特别说明,C-SCAN就是C-LOOK

C-LOOK算法

C-LOOK算法其实就是C-SCANLOOK算法的结合。

C-LOOK算法的思想:如果磁头移动的方向上已经没有磁道访问请求了,就可以立即让磁头返回,并且磁头只需要返回到有磁道请求的位置即可,返回过程中磁头不处理请求

image-20230502150327015

优点:比起C-SCAN算法来,不需要每次都移动到最外侧或最内侧才改变磁头方向,是寻道时间进一步缩短

注意:若题目中无特别说明,则SCAN就是LOOK;C-SCAN就是C-LOOK

减少延迟时间的方法

image-20230502152003644

假设现在要读取,下图这种扇区编号连续磁盘中的2、3扇区:

磁头在读取一个扇区的时候,需要一下小段的时间处理,此时磁头不工作。但此时磁头又在不停地旋转。因此当读取完2号扇区的时,无法连续地读入3号扇区,必须等待盘片继续旋转,再次划过磁头,才能完成扇区读入。

所以若磁盘按照顺序对扇区编号的时读取多个连续的逻辑区,可能要很长的延迟时间

image-20230502152422019

交替编号

阅读了上面这个小案例后,可以想到用不连续的给扇区编号来解决。即采用交替编号的策率,让逻辑上相邻的扇区在物理上有一定的间隔,可以使读取连续的逻辑扇区所需要的延时跟段

image-20230502153238327

磁盘地址结构的设计

这个小节就是解释为什么磁盘的物理地址是(柱面号,盘面号,扇区号)而不是(盘面号,柱面号,扇区号)

若要连续读取物理地址(00,000,000)~(00,000,111)两圈可读完,之后在读取物理地址相邻的区域,即(00,001,000)~(00,001,111)

若采用(盘面号,柱面号,扇区号)的地址结构,因为要切换磁道所以需要启动磁头臂,将磁头移动到下一个磁道,再转两圈对数据进行读取。

而要是采用(柱面号,盘面号,扇区号)的地址结构,因为两部分数据在不同盘片的同一磁道,因此只需要激活对应盘片磁道的磁臂即可,从而节省了启动磁头臂并移动的时间

虽然采用(盘面号,柱面号,扇区号)

错位命名

采用错位命名的原因和采用交替编号的理由类似。即如果要连续访问(00,00,111)(00,01,000)这两个地址。

若不采用错位命名的方式,如下图。当0号盘面读取完,一号盘面对应的磁头也一起转过了这个扇区,所以还需要再转一圈才可以读取出其中的数据

image-20230502154926315

而当采用错位命名的方式,如下图。由于采用错位命名方式,因此当读完磁盘块(00,00,111)之后,还有一段时间处理,当(00,01,000)第一次划过1号盘面的磁头下方时,就可以直接读取数据,从而减少了延迟时间

image-20230502155124451

磁盘的管理

磁盘的初始化

​ Step1:在磁盘可以存储数据之前,必须将它分成扇区,以便磁盘控制器可以进行读写,这个过程称为低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区通常可以分为头、数据区、尾三个部分组成。管理扇区的各种数据结构一般放在头、尾两根部分,包含扇区校验码(如奇偶校验、CRC循环冗余校验码等,校验码用于校验扇区中的数据是否发生错误)

​ Step2:将磁盘分区,每个分区由若干柱面组成(即C、D、E盘)

​ Step3:进行逻辑格式化,创建文件系统。包括创建问及那系统的根目录、初始化存储空间管理所使用的数据结构

引导块

​ 通常在ROM中保留很小部分的自举装入程序,而将完整的引导程序保存在磁盘的启动块上,启动块位于磁盘的固定位置。具有启动分区的磁盘称为启动磁盘系统磁盘

坏块

对于简单的磁盘,可以在逻辑格式化时(建立文件系统时)对整个磁盘进行坏块检查,标明哪些扇区是坏扇区,例如在FAT表上标明。在这种方式中,坏块对操作系统不透明

对于复杂的磁盘,磁盘控制区(磁盘设备内部的一个硬件部件)会维护一个坏块链表。在磁盘出厂前进行低级格式化(物理格式化)时就将坏链进行初始化。会保留一些“备用扇区”,用于替换坏块。这种方案称为扇区备用。且这种处理方式的中,坏块对操作系统透明

固态硬盘

image-20230502190710481

固态硬盘SSD是一种基于闪存技术的存储器。它与U盘本质无差异。一个SSD由多个存储芯片和闪存翻译层组成。SSD有很多优点,例如没有任何机械噪声和震动,能耗低,抗震性号,安全性高等

​ SSD的写比较慢(但是快于磁盘),因为在写数据的时候,若写数据的页Pi已经含有数据了,那么这个块中所有含有用数据的页都必须被复制到一个新块中,然后才能对该页Pi进行写操作。

image-20230502190800842

固态硬盘的缺点是,闪存的擦写寿命是有限的。因此一般搭配磨损均衡技术,而磨损均衡技术分为两种:

  • 动态磨损均衡。写入数据时,自动选择较新的闪存块。老的闪存块先歇歇
  • 静态磨损均衡。这种技术更为先进,SSD会监测并自动进行数据分配,让老的闪存块承担无须写数据的存储任务,同时让较新的闪存块腾出空间

参考

  • 《王道 24 操作系统考研指导》

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

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

相关文章

嵌入式C语言自我修养笔记1-ARM体系结构与编译运行

目录 ARM 体系结构ARM 体系结构ARM 汇编指令ARM 寻址方式ARM 伪指令C 与汇编混合编程 程序编译链接与安装运行预处理过程编译过程链接过程程序安装apt-get链接静态库动态链接共享库插件工作原理Linux 内核模块运行机制Linux 内核编译与启动分析 ARM 体系结构 ARM 体系结构 AR…

计算机基础书籍

一操作系统 二常见问题总结 1.操作系统的特征? 并发、共享、虚拟、异步性 2.进程阻塞与唤醒的条件 等待 I/O 操作完成请求系统资源失败等待信号量或事件等待子进程结束被高优先级进程抢占 3.如何避免死锁? 1、避免资源竞争 2、破坏循环等待条件 3、优…

【云原生网关】Kong 使用详解

目录 一、前言 二、Kong介绍 三、Kong核心组件 3.1 kong组件介绍 3.1.1 Kong Server 3.1.2 Apache Cassandra/PostgreSQL 3.1.3 Kong dashboard 3.2 传统网关与Kong工作模式对比 四、Kong网关特征与架构 4.1 kong网关特征 4.1.1 可扩展性 4.1.2 模块化 4.1.3 在任…

vue+element仿原神实现好看的个人中心

目录 一、仿原神效果图 二、代码实现 1.项目截图 2.路由配置 完整源码 3.个人中心index源码 4.用户信息页面源码 5.我的合集源码 三、总结 一、仿原神效果图 2011年,24岁的上海交通大学研究生刘伟、蔡浩宇、罗宇皓三人拿到上海市科技创业中心大学生创业基金…

【力扣】根据二叉树的前序和中序遍历结果还原该二叉树(以及后序和中序还原)

一 前序和中序还原二叉树 连接:根据二叉树的前序和中序遍历结果还原该二叉树 思路是这样的: 这个算法的目的是根据前序遍历和中序遍历的结果,重建一棵二叉树。前序遍历的特点是,第一个元素一定是根节点,后面的元素…

从一到无穷大 #6 盘满排查过程

文章目录 引言df/du 原理排查思路文件系统预留空间进程占用句柄挂载覆盖 引言 核心在于执行df和du的时候发现显示的存储量完全不同,我本地系统盘有99G空间,du显示占用了45G,但是df却显示使用了99G,排查的过程本文所示。 先记录几…

网络协议与攻击模拟-03-ARP协议

ARP 协议(地址解析协议) 一、 ARP 协议 将一个已知的 IP 地址解析为 MAC 地址,从而进行二层数据交互 是一个三层的协议,但是工作在二层,是一个2.5层协议 二、工作流程 1、两个阶段 ARP 请求 ARP 相应 2、 ARP 协议…

TinyML:使用 ChatGPT 和合成数据进行婴儿哭声检测

故事 TinyML 是机器学习的一个领域,专注于将人工智能的力量带给低功耗设备。该技术对于需要实时处理的应用程序特别有用。在机器学习领域,目前在定位和收集数据集方面存在挑战。然而,使用合成数据可以以一种既具有成本效益又具有适应性的方式训练 ML 模型,从而消除了对大量…

链表,栈,队列,递归行为,哈希表,有序表

文章目录 链表1.单链表/双链表的反转2.删除链表中指定的值 队列1.数组循环队列的实现2. 双向链表实现双端队列 栈1.用数组实现栈 栈和队列的面试题1. 实现最小栈2. 两个栈实现一个队列3.两个队列实现一个栈4.用栈实现图的广度优先遍历5.用队列实现图的深度优先遍历 递归Master公…

Spring Boot 3.0.x 自动配置文件加载原理

我们知道 Spring Boot 开启自动配置使用的是 EnableAutoConfiguration 注解,一般使用组合了它的 SpringBootApplication 主注解即可。那么 Spring Boot 是如何加载包含了各种需要自动配置的类的配置文件的呢?本文我们基于 Spring Boot 3.0.6 一起看看 Sp…

ChatGLM实战 - 文本信息抽取

1. ChatGLM介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存&…

微服务之事务处理

Informal Essay By English Hi guys、happy labor day. Everyone should have a good time to relax during the Labor Day holiday. But don’t forget to improve yourself during the holiday period 参考书籍: “凤凰架构” “微服务架构设计模式” 引言 …

K8S[Kubernetes]快速安装组件(Kubectl Kubeadam Kubeinit)

文章目录 配置K8S主从集群前置准备操作一:主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二:安装自动填充,虚拟机默认…

汇编语言学习笔记四

字符 字符是以ASCII码的形式存储的,一个字符对应着8为二进制数,2位16进制数。 所以可以得到对应的字符地址。 assume ds:data data segmentdb hellodb world data endsand or指令 根据ASCII码,字符的大写和小写相差一个0010 0000&#xff…

Java的锁事

乐观锁和悲观锁 悲观锁 认为自己在使用数据的使用一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改 synchronized关键字和Lock的实现都是悲观锁 适合写操作多的场景,先加锁可以保证写操作时数据正确 …

SpringcloudAlibaba详解

目录 微服务架构概念 服务治理 服务调用 服务网关 服务容错 链路追踪 SpringcloudAlibaba组件 Nacos 负载均衡 Ribbon Fegin Sentinel 高并发测试 容错方案 Sentinel入门 Feign整合Sentinel 微服务架构概念 服务治理 服务治理就是进行服务的自动化管理&#xf…

解决使用git命令查看的某次提交时间与git log中显示的不一致的问题

文章目录 问题描述缘由解决办法参考资料 问题描述 笔者的使用环境: Git 2.37.0.windows.1 TortoiseGit 2.11.0.0 IntelliJ IDEA 2022.3.1 (Ultimate Edition) 笔者遇到一个问题,需要查看 Git 某个提交(commit)的时间&#xff0…

女朋友说总是记不住Git命令,怎么办?安排!

如果你也和我女朋友一样总是忘记Git命令,觉得记忆Git命令是很枯燥和麻烦的事情。我写了一个包含了40 条常用Git命令的清单。你一定要收藏起来,当你忘记Git命令的时候,就可以打开来查看啦!!! 1.初始化本地仓…

程序员实习和就业选择应该怎么做?分享4个重要的影响因素

近期后台很多人都有问到找实习、找工作相关的问题,今天就展开聊聊。首先,理个时间点给大家提个醒,暑期实习的简历投递时间集中在3月-5月,秋招简历投递时间集中在6月-10月。所以,今年想找实习、想投秋招的学生一定要注意…

MySQL的概念,编译及安装

一.数据库的基本概念 1、数据(Data) • 描述事物的符号记录 • 包括数字,文字,图形,图像,声音,档案记录等 • 以“记录”形式按统一的格式进行存储 2、表 • 将不同的记录组织在一起 • …