热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机械硬盘的存储结构及原理

硬盘是电脑主要的存储媒介之一。根据硬盘的读写方式和存储方式不同,当前主流的硬盘可以分为固态硬盘(SSD硬盘)、机械硬盘(HDD硬盘)两种。由于固态硬盘存在价格昂贵、容量较小和一旦损

硬盘是电脑主要的存储媒介之一。根据硬盘的读写方式和存储方式不同,当前主流的硬盘可以分为固态硬盘(SSD硬盘)、机械硬盘(HDD 硬盘)两种。由于固态硬盘存在价格昂贵、容量较小和一旦损坏难以修复等特点,当前市场主要流行的依然是机械硬盘。当然,在高端计算机中通常会结合两种硬盘来获取更好的性能,这里暂且不提。故而本博客主要对机械硬盘的结构和原理进行讲解。

《机械硬盘的存储结构及原理》

硬盘是由很多的盘片组成,而其存储信息的方式就是通过盘片表面的磁性物质来存储数据。把盘片放在显微镜下放大,可以看到盘片表面是凹凸不平的,凸起的地方被磁化,代表数字 1,凹的地方没有被磁化,代表数字 0,因此硬盘可以通过二进制的形式来存储表示文字、图片等的信息。

机械硬盘主要由磁盘、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。

《机械硬盘的存储结构及原理》

所有的盘片都固定在一个旋转轴上,这个轴即盘片主轴。所有的盘片之间是绝对平行的,且在每个盘片的盘面上都有一个磁头来对磁盘上的数据进行读写操作。所有的磁头连在一个磁头控制器上,由磁头控制器负责各个磁头的运动,磁头可沿盘片的半径方向移动,实际上磁头是围绕固定点做圆周移动(如果有兴趣可以通过上面的磁盘结构图自己看,这里不加以解释),而且传统的硬盘中由于所有磁头都固定在同一个控制器上,所以每个磁头同一时刻是同轴的,即从正上方往下看,所有磁头任何时候都是重叠的,在这种情况下每一时刻只有一个磁头能够进行数据的读取。当硬盘启动时盘片在主轴的带动下以每分钟数千转到上万转的速度在高速运转,而磁头在控制器的控制下固定在某个位置上对经过其下方的磁盘区域进行信息的读写。

由前面的描述可知,硬盘的数据主要存储在许多盘片上的磁性物质上,而这些这些信息是通过磁头在某一点上对其下方的转动的磁片进行写入的,故而这些信息以一条条围绕主轴的同心圆细线的形式存在。为了方便描述与管理,我们把这些存储信息的同心圆细线称为磁道,将盘片中用于记录信息的面称为盘面(当前主流的硬盘一般每个盘片的两个面都会用于记录信息,所以每个盘片对应两个盘面。当然,也有部分只有一面用于记录信息的,在此暂不赘述),而多个盘片上半径相同的磁道称为柱面,为了更好的对磁盘资源进行过滤,我们有将每个磁道划分为均匀的几段称为扇区。

《机械硬盘的存储结构及原理》

下面对几个名词的定义是作用进行解析:

盘面:硬盘的盘片一般用铝合金材料做基片,硬盘的每一个盘片的两个面都可以用于记录信息,一般每个盘面都会得到利用,都可以存储数据,成为盘面。当然,也有的硬盘为了简化磁头结构或其他原因只利用其中一个面来记录信息,这样每个盘片就只对应一个盘面。每一个盘面都有一个盘面号,按顺序从上至下从 0 开始编号。在硬盘系统中,盘面号又叫磁头号,因为每一个盘面都有一个对应的读写磁头。

磁道:磁盘在格式化时被划分成许多用于记录信息的同心圆,这些同心圆轨迹叫做磁道。磁道从外向内从 0 开始顺序编号,硬盘的每一个盘面有 300-1024 个磁道,新式大容量硬盘每面的磁道数更多,信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧。这些圆弧的角速度一样,由于径向长度不一样,所以线速度也不一样,外圈的线速度较内圈的线速度大,所以同样的转速度下,外圈在同样时间段里,划过的圆弧长度要比内圈划过的圆弧长度大。磁道是看不见的,只是盘面上以特殊形式磁化了的一些磁化区,在磁盘格式化时就已规划完毕。

柱面:所有盘面上半径相同的磁道构成的一个圆柱面,即在磁盘上所有与主轴距离相同的磁道成为柱面。之所以给出柱面这一概念主要是为了提高磁盘的读写速率。在机械硬盘中数据的读取是依靠磁头来进行的,每个盘面对应一个磁头,而这些磁头通常被固定在同一转轴上,同时这些磁头从磁盘的上方看是重合的,也就是说所有磁头同一时间处于同一半径的磁道上。而由哪个磁头进行数据的读取则由对应的控制系统来进行电子切换,这个过程相对于将磁头移动的相邻的磁道是一个极快的过程,为了提高数据的读/写速率,数据的存储一般是按照柱面的顺序来的,具体的做法就是数据先存储在某一柱面的第一个磁道上,之后建数据存储到同一柱面的第二个磁道上,一直到同一柱面的所有磁道都使用完后才转到下一柱面进行读/写操作。

扇区:扇区是磁盘读写的基本单位,每个扇区包括 512 个字节的数据和一些其他信息,这些信息包含存储数据地址的标识符(盘面号,柱面号,扇区号等)和用于保护数据的纠错码(ECC)。在传统磁盘上,一般盘面上每一个磁道所对应的扇区是相同的,由于盘面上的磁道大小是不均匀的,其中越靠近主轴的磁道长度越小,越远离主轴的磁道长度越大,所以这样的分配方式会造成“大面积小数据”的浪费情况,为了避免这种情况很多硬盘采用同密度盘片,所以半径不同的磁道划分成出来的扇区数量也是不同的,磁道越长所包含的扇区也也就也多。关于扇区号,目前主要有两种定义规则,其中一种是每个磁道拥有自己的扇区号,在每个磁道中扇区号都是从0开始增加的,之后通过CHS(也称3D)寻址方式来对对应扇区进行访问,而另一种则是对硬盘上所有的扇区进行统一编号,其编号规则为:LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1 。这两种方式中,前者适合对每个磁道所拥有的磁道相同的传统磁盘,而后者时候采用同密度盘片的磁盘。


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 显卡驱动对游戏的影响及其提升效果的研究
    本文研究了显卡驱动对游戏体验的提升效果,通过比较新旧驱动加持下的RTX 2080Ti显卡在游戏体验上的差异。测试平台选择了i9-9900K处理器和索泰RTX 2080Ti玩家力量至尊显卡,以保证数据的准确性。研究结果表明,显卡驱动的更新确实能够带来近乎50%的性能提升,对于提升游戏体验具有重要意义。 ... [详细]
author-avatar
上善若水纯_310
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有