计算机基础知识-第9章-存储的本质(2)——硬盘和文件系统基础知识

一、机械硬盘的原理

概括来说,硬盘的工作原理是利用特定的磁粒子的极性来记录数据。磁头在读取数据时,将磁力子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反。另外,硬盘中还有一个存储缓冲区,这是为了协调硬盘与主机在数据处理速度上的差异而设计的。

在硬盘盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(Track),每个磁道又被划分为若干个扇区.(Sector),数据就按扇区存放在硬盘上。在每一面上都相应地有一个读/写磁头(Head),所以不同磁头的所有相同位置的磁道就构成了所谓的柱面(Cylinder)。传统的硬盘读/写都是以柱面、磁头、扇区为寻址方式的(CHS 寻址)。

硬盘驱动器加电正常工作后,利用控制电路中的单片机初始化模块进行初始化工作,此时磁头置于盘片中心位置,初始化完成后主轴电机将启动并以高速旋转,装载磁头的小车机构移动,将浮动磁头置于盘片表面的 00 道,处于等待指令的启动状态。

当接口电路接收到电脑系统传来的指令信号,通过前置放大控制电路,驱动音圈电机发出磁信号,根据感应阻值变化的磁头对盘片数据信息进行正确定位,并将接收后的数据信息解码,通过放大控制电路传输到接口电路,反馈给主机系统完成指令操作。结束操作的硬盘处于断电状态,在反力矩弹簧的作用下浮动磁头驻留到盘面中心。

硬盘的 0 柱面 0磁头1扇区为主引导记录,它主要由三部分组成:主引导记录、硬盘分区表和结束标志。

  • 主引导记录

主引导记录占据 446 个字节,用于检查分区表是否正确并且在系统硬件完成自检以后将控制权交给硬盘上的引导程序。它不依赖任何操作系统,而且启动代码也是可以改变的,从而能够实现多系统引导。

  • 硬盘分区表

硬盘分区表占据主引导扇区的 64 个字节(偏移 01BEH~偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据 16个字节。例如,如果某一分区在硬盘分区表的信息如下:

80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

可以看到,最前面的“80”是一个分区的激活标志,表示系统可引导【1】:“01 01 00”表示分区开始的磁头号为1,开始的扇区号为 1,开始的柱面号为0:“OB”表示分区的系统类型是 FAT32,其他比较常用的有04(FAT16)、07(NTFS):“FE BF FC”表示分区结束的磁头号为254,分区结束的扇区号为 63、分区结束的柱面号为 764:“3F 00 00 00”表示首扇区的相对扇区号为 63:“7E 86 BB 00”表示总扇区数为12289662。

硬盘分区表每个字节的定义见下表。

  • 结束标志字

结束标志字为 AA55,存储时低位在前,高位在后,即看上去是 55AA(偏移 1FEH~偏移 1FFH),最后两个字节是检验主引导记录是否有效的标志。

  • 转速

当硬盘运行时,磁头沿着盘片的半径方向运动,盘片以每分钟上千转的速度旋转,磁头就可以在盘片的指定位置上进行数据的读写操作。因此,机械硬盘的转速指的是内部电机主轴的旋转速度,衡量转速的单位为RPM(Revolutions Per Minute,即转/分),硬盘转速越快,访问数据的时间就越短,硬盘内部的传输速率就越快。转速高的缺点主要有,声音较大、寿命较短、热量较高。

一般来说7200转比5400转硬盘肯定在不同程度提高了电脑的性能,硬盘工作时运行的速度越快,耗功方面则会越大,散热也会比较低转速的要高出不少。同配置笔记本,7200转的硬盘的温度要比5400转的要高,读写速度也比较快。7200转硬盘相比5400转硬盘,在传输速率上可以更好的满足用户的需求。

一个7200(转/每分钟)的硬盘,每旋转一周所需时间为60×1000÷7200=8.33毫秒,则平均旋转延迟时间为8.33÷2=4.17毫秒(平均情况下,需要旋转半圈)。按照同样的计算方法,一个5400(转/每分钟)的硬盘,平均旋转延迟时间为60×1000÷5400÷2=5.56毫秒。二者相比,7200转理论上比5400转快15%,但是实际速度只比后者提高了不到百分之十,离很多人预想的三分之一相距甚远。

5400转的机械硬盘连续读写速度一般为100MB-150MB每秒,7200转的机械硬盘连续读写速度一般为150MB-200MB每秒,注意这里是大写的B,也就是字节。一般硬盘速度和内存速度都是以字节为单位,因为一般数据存储都是用字节计算的。

一般目前常用的机械硬盘7200转差不多是最高的了,要是想要再快的速度就用固态硬盘吧。

二、磁盘调度算法

磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:

  • 先来先服务算法(FCFS)
  • 最短寻道时间优先算法(SSTF)
  • 扫描算法(SCAN)
  • 循环扫描算法(C-SCAN)

这个比内存算法简单一些,我们一个一个说就好啦~

  1. 先来先服务算法
    FCFS算法根据进程请求访问磁盘的先后顺序进行调度,这是一种最简单的调度算法。该算法的优点是具有公平性。如果只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有望达到较好的性能;但如果有大量进程竞争使用磁盘,那么这种算法在性能上往往接近于随机调度。所以,实际磁盘调度中考虑一些更为复杂的调度算法。
    算法思想:按访问请求到达的先后次序服务。
    优点:简单,公平。
    缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。
    例子:
    假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。
    由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:
    磁头服务序列为:98,183,37,122,14,124,65,67
    磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁道)

  1. 最短寻找时间优先算法
    SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。
    算法思想:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。
    优点:改善了磁盘平均服务时间。
    缺点:造成某些访问请求长期等待得不到服务。
    例子:对上例的磁盘访问序列,可得磁头移动的轨迹如下图。

  1. 扫描算法(又称电梯算法)
    SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。SCAN算法对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和SSTF算法好。
    算法思想:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。如下图所示:


扫描算法(电梯算法)的磁头移动轨迹
优点:克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。

  1. 循环扫描算法
    在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。由于SCAN算法偏向于处理那些接近最里或最外的磁道的访问请求,所以使用改进型的C-SCAN算法来避免这个问题。
    釆用SCAN算法和C-SCAN算法时磁头总是严格地遵循从盘面的一端到另一端,显然,在实际使用时还可以改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。这种形式的SCAN算法和C-SCAN算法称为LOOK和C-LOOK调度。这是因为它们在朝一个给定方向移动前会查看是否有请求。注意,若无特别说明,也可以默认SCAN算法和C-SCAN算法为LOOK和C-LOOK调度。
  2. 调度算法对比
优点缺点
FCFS公平、简单平均寻道距离大、仅应用在次盘I/O较少的场合
SSTF性能比FCFS好不能保证平均寻道时间最短,可能出现“饥饿”现象
SCAN寻道性能较好,可避免“饥饿”现象不利于原理磁头一端的访问请求
C-SCAN消除了对两端磁道请求的不公平
  1. 调度时间

一次磁盘读写操作的时间由寻找(寻道)时间、延迟时间和传输时间决定:

1、寻找时间Ts:活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间。这个时间除跨越n条磁道的时间外,还包括启动磁臂的时间s,即:Ts = m * n + s。式中,m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂的启动时间约为2ms。

2、延迟时间Tr:磁头定位到某一磁道的扇区(块号)所需要的时间,设磁盘的旋转速度为r,则:Tr = 1 / (2 * r)。对于硬盘,典型的旋转速度为5400r/m,相当于一周11.1ms,则Tr为5.55ms;对于软盘,其旋转速度在300~600r/m之间,则Tr为50~100ms。

3、传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,这个时间取决于每次所读/写的字节数b和磁盘的旋转速度:Tt = b / (r * N)。式中,r为磁盘每秒钟的转数;N为一个磁道上的字节数。

在磁盘存取时间的计算中,寻道时间与磁盘调度算法相关,下面将会介绍分析几种算法,而延迟时间和传输时间都与磁盘旋转速度相关,且为线性相关,所以在硬件上,转速是磁盘性能的一个非常重要的参数。

总平均存取时间Ta可以表示为:Ta = Ts + Tr + Tt。

虽然这里给出了总平均存取时间的公式,但是这个平均值是没有太大实际意义的,因为在实际的磁盘I/O操作中,存取时间与磁盘调度算法密切相关。调度算法直接决定寻找时间,从而决定了总的存取时间。

三、固态硬盘的原理

如果想知道的话可以看这两篇文章。

https://blog.csdn.net/LingLing1301/article/details/123614713

https://blog.csdn.net/LingLing1301/article/details/123614713

四、文件系统——概述

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

文件的系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。因此,可以说"我有2个文件系统"意思是他有2个分区,一个存文件,或他用 "扩展文件系统",意思是文件系统的种类。

磁盘或分区和它所包括的文件系统的不同是很重要的。少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操作;这可能破坏一个存在的文件系统。大部分程序基于文件系统进行操作,在不同种文件系统上不能工作。

一个分区或磁盘在作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就叫建立文件系统。

文件系统的功能包括:管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射,实现文件的控制操作和存取操作,实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施。

文件的逻辑结构是依照文件的内容的逻辑关系组织文件结构。文件的逻辑结构可以分为流式文件和记录式文件。

流式文件:文件中的数据是一串字符流,没有结构。

记录文件:由若干逻辑记录组成,每条记录又由相同的数据项组成,数据项的长度可以是确定的,也可以是不确定的。

主要缺陷:数据关联差,数据不一致,冗余性。

五、文件系统如何存储数据(抽象)

操作系统的基本文件类型有普通文件、目录文件、设备文件和链接文件。

  • 普通文件:最常见的文件。
  • 目录文件:目录文件中保存着该目录下其他文件的inode号和文件名等信息,目录文件中的每个目录项都是指向某个文件inode号的链接,删除文件名就等于删除与之对应的链接。
  • 设备文件:操作系统把各种设备也抽象成文件,便于管理,如鼠标,键盘等。
  • 链接文件:多个文件名指向同一索引节点(inode index)是存在的,这时就会出现链接文件。

文件操作分为以下几种:创建文件,删除文件,读文件,写文件等。

  • 创建文件:在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项,目录项中应该记录新文件的文件名及其在外存的地址等属性。
  • 删除文件:当已不再需要某文件时,可将其从文件系统中删除,在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
  • 读文件:读文件时,须在相应系统调用中给出文件名和应读入的内存目标地址。此时,系统要查找目录,找到指定目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件进行读/写。
  • 写文件:写文件时,须在相应系统调用中给出文件名和其在内存源地址。此时,系统要查找目录,找到指定目录项,从再利用目录中的写指针进行写操作。

文件系统对文件进行操作的过程:

1、先进入目录,目录中有相应的目录项。

2、目录项中有对应的文件名和inode号,根据文件名找到对应的inode号。

3、再根据inode号读取到文件的inode,分析是否符合inode中记录的权限。

4、如果符合权限,则可以读取到相应的data blocks。

文件包括属性和内容两部分(当然,还包括文件名,不过文件名实质是其所属目录文件的内容,目录文件也有inode号)。其中属性信息放置于inode区(即元数据区)中,实际内容放置于data block区中,另外,还有一个superblock(超级块)会记录整个文件系统的整体信息。

文件系统如何存储数据

文件包括属性和内容两部分(当然,还包括文件名,不过文件名实质是其所属目录文件的内容,目录文件也有inode号)。其中属性信息放置于inode区(即元数据区)中,实际内容放置于data block区中,另外,还有一个superblock(超级块)会记录整个文件系统的整体信息。

inode

inode存放文件的属性信息(如文件类型、大小、权限等)和文件内容所在的block编号。inode是文件惟一标识,系统根据文件名先找到inode,并首先分析是否符合inode中记录的权限,符合后根据block编号找到数据块读取内容。

block(块)

block存放文件实际内容。每个block大小有1K,2K及4K三种,其大小也是在磁盘(或分区)格式化时就确定了。每个block内只能存放一个文件的内容。若文件内容大小大于单个block,则该文件会占用多个block;若占不满一个block,这个block中的剩余空间也将浪费。因此block大小的选取也很重要,若经常存储小文件,而block较大无疑会浪费很多空间;但block较小的话,大型文件会占用较多的block数,这样inode中也会记录更多的block编号,由此会降低系统读写性能。所以block大小的选取应根据实际情况权衡。

superblock

superblock存放此文件系统的整体信息,包括inode/block大小、inode/block总量、使用量、剩余量、文件系统格式等。一个文件系统仅有一个superblock,位于组0中,这个块很重要,因此通常还有一个备份位于其它组中,其大小一般为1K。

六、总结

这一章讲了机械硬盘的原理和调度算法,文件系统基础知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端docker jenkins nginx CI/CD持续集成持续部署-实战

最近用go react ts开发了一个todolist后端基本开发完了,前端采用CI/CD方式去部署。 步骤总结 先安装docker 和 docker-compose。安装jenkins镜像,跑容器的时候要配好数据卷。配置gitee或github(我这里使用gitee)在服务器上一定要创建好dokcer的数据卷,以便持久保存jenkin…

Transformer模型-decoder解码器,target mask目标掩码的简明介绍

今天介绍transformer模型的decoder解码器,target mask目标掩码 背景 解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列,并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用…

pytorch实现胶囊网络(capsulenet)

胶囊网络在hinton刚提出来的时候小热过一段时间,之后热度并没有维持多久。vision transformer之后基本少有人问津了。不过这个模型思路挺独特的,值得研究一下。 这个模型的提出是为了解决CNN模型学习到的特征之间没有空间上的关系,从而对于各…

Sketch3D:用于草图到3D生成的样式一致性指南

Sketch3D: Style-Consistent Guidance for Sketch-to-3D Generation Sketch3D:用于草图到3D生成的样式一致性指南 Wangguandong Zheng 重试 错误原因 Southeast UniversityChina 重试 错误原因 wgdzhengseu.edu.cnHaifeng Xia 重试 错误原因 Southeast Universit…

CSS - 盒子模型、图片模糊、过渡效果、2D图移动、放大缩小、CSS动画、flex布局

盒子模型 CSS盒子模型是指在网页布局中,每个元素都被看作是一个矩形的盒子,这个盒子由内容区域、内边距、边框和外边距组成。盒子模型在CSS中用于确定元素在页面中的尺寸、位置和边距。 盒子模型由以下几个部分组成: 内容区域(…

行云堡垒国密算法应用与信创支持

一、 国密算法和信创的介绍 1.1 什么是国密算法 国密算法是国家密码管理局制定颁布的一系列的密码标准,即已经被国家密码局认定的国产密码算法,又称商用密码(是指能够实现商用密码算法的加密,解密和认证等功能的技术)…

Qlik Sense : Crosstable在数据加载脚本中使用交叉表

什么是Crosstable? 交叉表是常见的表格类型,特点是在两个标题数据正交列表之间显示值矩阵。如果要将数据关联到其他数据表格,交叉表通常不是最佳数据格式。 本主题介绍了如何逆透视交叉表,即,在数据加载脚本中使用 L…

批归一化(BN)在神经网络中的作用与原理

文章目录 1. 批归一化(BN)在神经网络中的作用与原理1.1 作用与优势1.2 原理与推导 2. 将BN应用于神经网络的方法2.1 训练时的BN 2. 将BN应用于神经网络的方法2.1 训练时的BN2.2 测试时的BN代码示例(Python): 3. BN的优…

机器学习-09-图像处理01-理论

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中图像处理技术。 参考 02图像知识 色彩基础知识整理-色相、饱和度、明度、色调 图像特征提取(VGG和Resnet特征提取卷积过程详解) Python图像处理入门 【人工智能】PythonOpenCV…

基于python的天气数据可视化系统、Flask框架,爬虫采集天气数据,可视化分析

系统介绍 基于Python的天气预测可视化分析系统,该项目的主要流程和功能包括: 数据获取: 使用Python的pandas库从2345天气网(http://tianqi.2345.com/Pc/GetHistory)抓取山东省各市区县在2021年至2023年间的天气历史数…

【方法】PDF密码如何取消?

对于重要的PDF文件,很多人会设置密码保护,那后续不需要保护了,如何取消密码呢? 今天我们来看看,PDF的两种密码,即“限制密码”和“打开密码”,是如何取消的,以及忘记密码的情况要怎…

文献学习-33-一个用于生成手术视频摘要的python库

VideoSum: A Python Library for Surgical Video Summarization Authors: Luis C. Garcia-Peraza-Herrera, Sebastien Ourselin, and Tom Vercauteren Source: https://arxiv.org/pdf/2303.10173.pdf 这篇文章主要关注的是如何通过视频摘要来简化和可视化手术视频&#xff0c…

计算机基础知识-第4章-真值表和逻辑运算、位运算

一、真值表与逻辑运算 真值表 真值表是什么呢?我们来看百度百科的定义。表征逻辑事件输入和输出之间全部可能状态的表格。列出命题公式真假值的表。通常以1表示真,0 表示假。命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,…

开源监控zabbix对接可视化工具grafana教程

今天要给大家介绍的是开源监控工具zabbix对接可视化工具grafana问题。 有一定运维经验的小伙伴大抵都或多或少使用过、至少也听说过开源监控工具zabbix,更进一步的小伙伴可能知道zabbix在数据呈现方面有着明显的短板,因此需要搭配使用第三方的可视化工具…

Qlik Sense :use Peek function to Group by and Get Rowno

Question Row number based on groups of data Calculate row number for groups 有时候我们需要基于分组来对数据进行内部排序,例如一个iddate,把不同的属性的记录标记为123,又或者把重复记录标记出来 Solved: Calculate row number for…

MacOS安装openMP报错【已解决】

error: Target “WLBG” links to: OpenMP::OpenMP_CXX but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. 最开始是报这个错&#x…

云上配置Hadoop环境

Hadoop概述 Hadoop技术主要是由下面这三个组件组合而成的: HDFS是一个典型的主从模式架构。 HDFS的基础架构 HDFS的集群搭建 一点准备工作 其实这一块没啥内容,就是将Hadoop官网下载下来的Hadoop的tar包上传到我们服务器上的文件目录下: …

2024考研调剂须知

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项,系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

Vue ElementUI el-input-number 改变控制按钮 icon 箭头为三角形

el-input-number 属性 controls-position 值为 right 时&#xff1b; <el-input-number v-model"num" controls-position"right" :min"1" :max"10"></el-input-number>原生效果 修改后效果 CSS 修改 .el-input-number…

点亮一颗 LED: 单片机 ch32v003 (RISC-V) 使用 rust 编写固件

首发日期 2024-04-09, 以下为原文内容: 使用 rust 编写单片机的程序 ? 很新, 但没问题. 使用 RISC-V CPU 的单片机 (比如 ch32v003) ? 也没问题. 同时使用 ? 哦嚯, 问题出现了 !! ch32v003 是一款使用 rv32ec 指令集的国产单片机, 很便宜 (某宝零卖只要 0.4 元一个, 在同档…