星空体育app官方下载 硬盘的读写原理

硬盘的主要类型有SCSI、IDE以及现在流行的SATA。任何一种硬盘的生产都需要一定的标准。随着相应标准的升级,硬盘生产技术也随之升级。例如,SCSI标准经历了SCSI -1、SCSI-2、SCSI-3;其中,我们经常在服务器网站上看到的Ultra-160是基于SCSI-3标准的; IDE遵循ATA标准,目前流行的SATA是ATA标准的升级版本; IDE是并行端口设备,而SATA是串行端口。 SATA的发展目的是取代IDE;

我们知道信息存储在硬盘中。如果拆开的话,里面什么也看不到,只有一些盘子。假设你用显微镜放大磁盘,你会看到磁盘表面凹凸不平,凸出的地方被磁化,凹入的地方没有被磁化;凸的地方代表数字1(磁化强度为1),凹的地方代表数字0。因此星空体育app官方下载,硬盘可以以二进制格式存储文本、图片等信息。

1、硬盘的组成

对于硬盘大家一定很熟悉。我们可以将其比作计算机存储数据和信息的大型仓库。一般来说,无论哪种硬盘,都是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几部分组成。

平面图:

立体视图

所有圆盘都固定在一根旋转轴上,这就是圆盘主轴。所有圆盘彼此绝对平行。每张磁盘的存储表面上都有一个磁头。磁头与磁盘之间的距离小于人头发的直径。所有磁头都连接到一个磁头控制器,该控制器负责每个磁头的运动。磁头可以沿磁盘半径移动(实际上是倾斜移动)。每个磁头还必须同时同轴,即从正上方看时,所有磁头随时重叠(但目前已经有多头独立技术,不受此限制)。磁盘以每分钟数千至数万转的高速旋转,使磁头能够在磁盘上的指定位置读写数据。

由于硬盘是高精度设备,灰尘是其最大的敌人,因此必须完全密封。

2、硬盘工作原理

硬盘驱动器在逻辑上分为磁道、柱面和扇区。

硬盘每片盘片的每一面都有一个读写磁头,磁盘区域划分如图所示。

磁头与主轴接触的表面,即线速度最小的地方,是一个不存储任何数据的特殊区域。它被称为起停区或着陆区(Landing Zone)。起止区之外是数据区。在最外环中,距离主轴最远的地方是“0”磁道,硬盘数据的存储是从最外环开始的。那么,磁头是如何找到“0”磁道的位置的呢?硬盘中还有一个叫做“0”磁道检测器的部件,它是用来完成硬盘的初始定位的。 “0”磁道如此重要,以至于很多硬盘仅仅因为“0”磁道损坏就报废了,颇为可惜。

早期的硬盘在每次关机前都需要运行一个名为Parking的程序,其功能是让磁头返回到开始和停止区域。现代硬盘驱动器的设计就是为了消除这种简单但令人不快的缺陷。当硬盘不工作时,磁头停留在启停区。当需要从硬盘读取和写入数据时,磁盘开始旋转。当转速达到额定高速时,磁头会被盘片旋转产生的气流抬起,然后磁头移动到盘片存储数据的区域。

磁盘旋转产生的气流足够强大,可以抬起磁头并使其与磁盘表面保持稍远的距离。这个距离越小,磁头读写数据的灵敏度就越高,当然对硬盘各个部件的要求也就越高。磁盘驱动器的早期设计使磁头在磁盘表面上方飞行几微米。后来的一些设计将磁头在磁盘上的飞行高度降低到约0.1μm~0.5μm,目前的水平已达到0.005μm~0.01μm,仅为人类头发直径的千分之一。

气流不仅可以使磁头脱离盘面,而且可以使其保持足够接近盘面,非常紧密地跟随盘面的起伏运动,使磁头飞行处于严格受控状态。 。磁头必须飞行在磁盘表面之上,而不是接触磁盘表面。这个位置可以避免划伤磁性涂层,更重要的是可以防止磁性涂层损坏磁头。

但磁头不能离盘面太远,否则盘面磁化不够强,难以读取盘片上的磁化翻转(磁极转换的形式,即磁极转换的形式)。数据实际记录在磁盘上的方式)。

硬盘磁头飞行高度低,速度高。一旦细小的灰尘进入硬盘的密封腔体,或者一旦磁头与盘体碰撞,就可能造成数据丢失、坏块,甚至磁头和盘体的损坏。 。因此,硬盘系统的密封必须可靠,非专业条件下不得打开硬盘密封腔。否则灰尘的进入会加速硬盘的损坏。另外,硬盘驱动器磁头的寻道伺服电机大多采用音圈式旋转或直线运动步进电机,在伺服跟踪的调节下可以准确跟踪盘片的磁道。因此,硬盘工作时不应受到撞击或碰撞。小心处理。

这种硬盘是采用温彻斯特技术制造的硬盘,因此也称为温盘。目前大多数硬盘都采用这种技术。

3.磁盘、磁道、柱面和扇区

硬盘的读写与扇区密切相关。在讲扇区以及读写原理之前,我们先来说说与扇区相关的“磁盘”、“磁道”和“柱面”。

1、盘面

硬盘的盘片一般采用铝合金材料作为基板,高速硬盘也可能采用玻璃作为基板。硬盘的每个盘片都有两个面,即上面和下面。一般情况下,每一面都被使用,都可以存储数据,成为有效的盘片。面数为奇数的硬盘也很少。每个这样的有效盘都有一个盘号,盘号从“0”开始从上到下依次编号。在硬盘系统中,盘面号又称为磁头号,因为每个有效的盘面都有一个对应的读写头。硬盘的盘片组为2~14片,通常有2~3片盘片,因此盘片数(磁头数)为0~3或0~5。

2. 追踪

磁盘在格式化时星空综合体育app下载,被分成许多同心圆,这些同心圆称为磁道。磁道从0开始从外到内依次编号。每个硬盘有300到1,024个磁道,较新的大容量硬盘每面有更多磁道。信息以脉冲串的形式记录在这些轨迹中。这些同心圆并不是连续记录数据,而是被分成一段段的圆弧。这些弧的角速度是相同的。由于径向长度不同,线速度也不同。外圈的线速度大于内圈的线速度。即在相同转速下,同一时间段内外圈划出的圆弧长度比内圈长。圆画出的弧线长度很大。每条弧称为一个扇区,扇区从“1”开始编号。每个扇区中的数据作为一个单元同时读取或写入。标准的3.5英寸硬盘通常有数百到数千个磁道。磁道并不是“可见的”,它们只是磁盘上的一些磁化区域,这些区域以特殊形式磁化,并且在磁盘格式化时就已经规划好了。

3. 气缸

所有磁盘上相同的磁道形成一个柱面,通常称为柱面。每个柱面上的磁头从上到下从“0”开始编号。数据按照柱面进行读/写,即磁头读/写数据时,首先从同一柱面的“0”磁头开始,然后在同一柱面的不同盘面向下操作,即磁头,仅就磁头而言。只有同一个柱面的所有磁头读/写完成后,磁头才会转移到下一个柱面(同心圆内较远的柱面),因为选择磁头只需电子切换,而选择柱面则必须进行电子切换。通过机械开关来完成。电子切换速度相当快,比机械磁头移动到相邻磁道快得多,因此数据是在柱面而不是光盘表面上读取/写入的。也就是说,一个磁道写满数据后,再写入同一柱面的下一个盘面。当一个柱面写满后,移动到下一个扇区并开始写入数据。读取数据也是这样进行的,提高了硬盘的读写效率。

硬盘的柱面数(或每个磁盘的磁道数)既取决于每个磁道的宽度(也与磁头的尺寸有关),也取决于定位机构确定的磁道之间的台阶大小。

4. 部门

操作系统以扇区的形式将信息存储在硬盘上。每个扇区包含 512 字节的数据和一些其他信息。扇区有两个主要部分:存储数据的标识符和存储数据的数据段。

该部门的第一个主要部分是标识符。标识符就是扇区头,它包括三个数字,构成扇区的三维地址:

磁盘号:扇区所在的磁头(或盘面)

柱面号:磁道,决定磁头的径向方向。

扇区号:在轨道上的位置。也称为块号。数据在盘片圆上的位置被确定。

标头还包括一个带有标志的字段,该标志指示该扇区是否可以可靠地存储数据,或者是否发现了导致其不适合使用的故障。有些硬盘控制器还在扇区头中记录了指针,当原始扇区出现故障时,可以引导磁盘更换扇区或磁道。最后,扇区头以循环冗余校验(CRC)值结束,供控制器验证扇区头的读取以确保准确性。

扇区的第二个主要部分是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。在初始准备期间,计算机用512字节的虚拟信息(存储实际数据的地方)以及与这些虚拟信息字节对应的ECC号填充该部分。

5、完成磁盘访问请求的流程:

确定磁盘地址(柱面号、磁头号、扇区号)、内存地址(源/目标):

当需要从磁盘上读取数据时,系统会将数据逻辑地址传递给磁盘,磁盘的控制电路会根据寻址逻辑将逻辑地址转换为物理地址,即确定使用哪个磁道和扇区要读取的数据已打开。

为了读取该扇区中的数据,需要将磁头放置在该扇区上方。为了实现这一点:

1)首先要找到柱面,即磁头需要移动到对应的磁道上。这个过程称为寻道,所花费的时间称为寻道时间。

2)然后目标扇区在磁头下方旋转,即磁盘旋转使目标扇区在磁头下方旋转。这个过程所花费的时间称为旋转时间。

即一个磁盘访问请求(读/写)的完成过程由三个动作组成:

1)寻道(时间):磁头移动到指定磁道

2)旋转延迟(时间):等待指定扇区在磁头下旋转

3)数据传输(时间):磁盘和内存之间数据的实际传输

那么读取磁盘上一个扇区的数据(一条数据)所需的时间为:

Ti/o=tseek+tla+ n *twm

在:

tseek 是寻道时间

tla 是旋转时间

twm 是传输时间

4、磁盘读写原理

系统在磁盘上存储文件时,是以柱面、磁头、扇区的形式存储的,即先存储1磁道第一个磁头(即磁盘1第一磁道)下的所有扇区,然后存储,它是同一柱面的下一个磁头,...当一个柱面写满时,​​前进到下一个柱面,直到所有文件内容都写入磁盘。

(如果文件记录存储在同一个磁盘组上,则应先集中在一个柱面上,然后依次存储在相邻的柱面上。对应同一柱面,应按照磁盘的顺序存储。)

(从上到下,再从外到内。数据先按柱面读/写,而不是按磁盘读/写)

系统也以相同的顺序读取数据。读取数据时,告诉磁盘控制器读取扇区所在的柱面号、磁头号和扇区号(物理地址的三个组成部分)。磁盘控制器直接将磁头组件步进到相应的柱面,选通相应的磁头,等待所需的扇区移动到磁头下方。当一个扇区到达时,磁盘控制器读取每个扇区的头部,将这些头部中的地址信息与期望检测(即寻道)的磁头号和柱面号进行比较,然后查找所需的扇区号。当磁盘控制器找到扇区头时,它根据自己的任务是写扇区还是读扇区来决定是切换写电路还是读出数据和尾记录。找到一个扇区后,磁盘控制器必须对该扇区的信息进行后处理,然后才能继续查找下一个扇区。如果读取数据,控制器计算数据的ECC码,然后将ECC码与记录的ECC码进行比较。如果写入数据,控制器计算数据的ECC码并将其与数据一起存储。当控制器对该扇区中的数据进行必要的处理时,磁盘继续旋转。

5. 局部性原理和磁盘预读

由于存储介质的特性,磁盘本身的访问速度比主存慢很多。再加上机械运动的消耗,磁盘的存取速度往往是主存的百分之一。因此,为了提高效率,需要尽量减少磁盘数量。输入/输出。为了达到这个目的,磁盘往往并不是严格按需读取,而是每次都提前读取。即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据到内存中。这样做的理论基础是计算机科学中著名的局部性原理:

当使用一条数据时,通常会立即使用附近的数据。

程序执行过程中所需的数据通常比较集中。

由于顺序磁盘读取非常高效(无寻道时间,旋转时间极少),因此预读可以提高具有局部性的程序的 I/O 效率。

预读长度一般为页的整数倍。页是计算机管理的内存的逻辑块。硬件和操作系统通常将主存和磁盘存储区域划分为连续的相同大小的块。每个存储块称为页(在许多操作系统中,页大小通常为4k),主存和磁盘以页为单位交换数据。当程序要读取的数据不在主存中时,就会触发缺页异常。这时,系统会向磁盘发出读信号,磁盘会找到数据的起始位置,向后读取一页或多页。加载到内存中,然后异常返回,程序继续运行。

6、磁盘碎片的产生

俗话说,一图胜千言。我们先用一张ACSII代码图来解释一下为什么会出现磁盘碎片。

上面的 ASCII 图代表了磁盘文件系统。由于目前上面没有数据文件,所以我将其表示为0。

图中的顶部和左侧各有26个字母az,用于定位每个数据字节的具体位置。例如,第1行和1列是aa,第26行和26列是zz。

我们创建了一个新文件,当然我们的文件系统发生了变化,现在是

如图所示:“目录”(TOC)占据前四行,TOC中存储了系统中每个文件的位置。

在上图中,目录包含一个名为 hello.txt 的文件。其具体内容为“Hello,world”,在系统中的位置为ae到le。

接下来,创建一个新文件

如图所示,我们的新文件bye.txt位于第一个文件hello.txt旁边。

事实上,这是最理想的系统结构。如果您将文件并排放置,如上图所示,那么读取它们将非常容易和快速。这是因为硬盘中(相对而言)运动最慢的部分是传动臂。如果位移越小,读取文件数据的时间就会越快。

但这正是问题所在。现在我想在“Hello, World”后面加上一些感叹号来表达我强烈的感受。现在的问题是:在这样的系统上,我在文件所在行上没有地方放置这些感叹号,因为bye.txt占用了剩余的位置。

现在有两种方法可供选择,但没有一种是完美的。

1. 我们从原始位置删除该文件,创建一个新文件并写入“Hello, World!!”。 – 这无意中延长了文件系统的读写时间。

2、破文件就是在其他空的地方写一个感叹号,即“头在异处”——这是一个好主意,既快捷又方便,但也意味着读取速度速度大大减慢。是时候获取新文件了。

如果您不明白上面的文字,请看上面的图片

这里提到的第二种方法就像我们windows系统的存储方法一样。每个文件都是相邻的,但如果其中一个文件要更改,则意味着下一个数据将被放置在磁盘上的其他可用空间中。

如果删除该文件,将会在系统中留下空间。随着时间的推移,我们的文件系统将变得碎片化。碎片就是这样发生的。

尽量简单,告诉mm一个简化版的硬盘读写原理。

硬盘的结构我就不详细说了。我们普通计算机中的数据存储在磁道上,与光盘大致相同。读取是通过磁头进行的。

我们都知道,我们的数据是以信息的形式存储在磁盘上扇区的磁道上的。硬盘的读取是通过摇臂控制磁头从盘片的外侧向内侧进行读写。因此,读取外面的数据的速度会比里面的数据快很多。

事实上,大多数时候我们的文件都被破坏了。当文件没有损坏时,摇臂只需要找一次磁道,磁头就可以读取。只需一次即可读取成功;但如果文件被分成11个,那么摇臂就要来回搜索磁头11次,读取11次才能完整读取文件。当相对不间断的时候,阅读时间就会变得漫长。

因此,磁盘碎片往往是导致系统速度变慢的重要因素之一。 Vista Home团队还计划在Vista Optimizer Master后续版本中添加磁盘碎片整理功能,敬请期待。

7、硬盘容量和分区大小的计算

在Linux系统中,要计算硬盘容量和分区大小,我们首先通过fdsik -l查看硬盘信息:

磁盘 /dev/hda:80.0 GB,80026361856 字节

255 个磁头,63 个扇区/磁道,9729 个柱面

单位 = 16065 * 512 = 8225280 字节的柱面

设备引导开始结束块 ID 系统

/dev/hda1 * 1 765 6144831 7 HPFS/NTFS

/dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)

/dev/hda3 2806 9729 55617030 5 扩展

/dev/hda5 2806 3825 8193118+ 83 Linux

/dev/hda6 3826 5100 10241406 83 Linux

/dev/hda7 5101 5198 787153+ 82 Linux 交换区 / Solaris

/dev/hda8 5199 6657 11719386 83 Linux

/dev/hda9 6658 7751 8787523+ 83 Linux

/dev/hda10 7752 9729 15888253+ 83 Linux

磁头是磁盘面;

部门就是部门;

气缸就是气缸;

每个扇区的大小为512byte,即0.5K;

通过上面的例子,我们发现这个硬盘有255个盘面,63个扇区,9729个柱面;所以整个硬盘体积换算公式应该是:

磁面数*扇区数*每个扇区大小512*柱面数=硬盘容量(单位:字节)

因此,在本例中,磁盘大小应计算如下:

255 x 63 x 512 x 9729 = 80023749120 字节

提示:由于硬盘厂家和操作系统的换算方式不同,硬盘厂家采用十进制进行换算,而操作系统采用二进制进行换算星空体育平台官网入口,所以换算为M或G时,不同算法的结果是不同的。相同;所以有时候我们的硬盘标注为80G,但是在操作系统下查看却少了几MB;

上面的例子中,硬盘厂商的算法与操作系统的算术对比为:

硬盘厂商:80023749120字节=80023749.120K=80023.749120M(换算成更大的单位,每次除以1000)

操作系统:80023749120字节=78148192.5K=76316.594238281M(换算成更大的单位,每次除以1024)

当我们检查分区大小时,可以使用厂家提供的算法来简单计算分区的大小;将小数点向前移动六位,得到以G表示的大小;例如hda1的大小约为6.144831G;

关键词:

客户评论

我要评论