【计算机组成原理】3.4.1 磁盘存储器

2024-09-04 16:44

本文主要是介绍【计算机组成原理】3.4.1 磁盘存储器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3.4.1 磁盘存储器

00:00

好,这个小节当中我们主要会学习外存储器,特别是磁盘存储器是比较高频的考点。这个部分和操作系统第四章的后半部分也有比较多的重合,所以大家可以结合操作系统两边一起来学习,只不过这两门课的考察重点不太一样,计组主要考察的是硬件特性,而操作系统主要考察的是对磁盘的一个管理,比如说调度算法之类的。

00:26

好,首先我们来看一下磁盘这种外存储器,它的一个读写二进制比特位的原理。我们现在电脑里边的磁盘,也就是机械硬盘,还有我们小时候听歌用的那个磁带,这些存储器都属于磁表面的存储器。大家可以想象一下,假设这个是你的小时候听歌用的那个磁带,那么厂家会在这个磁带上涂上一层磁性的材质,大家可以理解为磁粉,不知道小时候有没有玩过。

00:59

好,那大家回忆一下小时候你用的复读机、录音机,是不是会有一个马达带动着你的这个磁带,这个磁带往前移动。好,那么在你的磁带上方会有一个读写磁头,它其实是一个电磁铁,电磁铁这是我们高中学过的东西,不知道大家对高中物理还有没有印象。如果我们给这个铁芯上,这个线圈给它加的电流方向是不一样的,那么就会导致这个电磁铁的这两头左右的两头,它的南北极磁性会出现改变。因此当我们给这个写线圈加上不同方向的电流的时候,铁芯上所带的南北极的磁性就会影响这个磁性材质的涂层,会导致这个图层上面的这些磁性材质产生一些移动和变化。比如说左边这种左南右北,我们可以把它规定为二进制的0,右边这种左、北、右南,我们可以把它规定为二进制的一好。

02:04

因此在磁带移动的过程当中,我们只需要给写线圈加上两种方向的电流,就可以使得这个磁涂层呈现出两种不一样的状态,用这样的方式来写入二进制的0或者1,那这就是所有磁表面存储器存储0和1的一个原理。那读取0和1的原理是不是也是类似的?同样的还是高中物理知识,当这个磁带移动的时候,是不是这些不同方向的磁场会影响铁芯,使得读线圈这边读出两个方向的电流。大家可以回忆一下切割磁感线的一个原理,这个磁感线的切割方向不同,就会导致读线圈这两端检测出的这个高低电平信号,或者说这个电流的方向也会产生不一样。因此当我们这个磁带划过磁头下方的时候,就可以让读线圈读出0和1这两种不同的二进制状态。

03:07

当然了这些细节的物理原理不可能考,大家只需要知道我们磁带划过磁头下方的时候,磁头就可以一比特一比特的往里边写数据,每次只能写一比特,那读数据的时候也是类似的,磁带划过磁头的下方,那么通过读线圈这边接的电路,可以一比特一比特的读出数据。好,因此这种磁表面存储器,我们读取或者写入数据的时候,每次只能读和写1比特,那这就意味着什么呢?如果主机给这个硬盘,给磁盘丢来的是1个字节的数据,8个比特并行的给它传过来,那么是不是意味着我们需要搞一个电路,把这8比特的并行数据把它转换成串行的一个方式,一比特一比特的进行写入,那读出的时候是不是也是一样的,我们每次只能读一比特,那我们是不是需要用一个专门的串行和并行转换的一个电路,把多个比特的数据组织成8比特为一组,然后并行的传给主机。

04:17

好,所以这是我们需要注意的第一个特性,磁表面存储器每次读和写都是以一比特为单位的,并且基于它的这个读写原理可以知道读和写这两个动作是不可以同时进行的。

04:32

好,那我们结合平时的生活经验,应该可以感受到磁表面存储器有这样的一些优点。首先存储容量大,位价格低。大家买硬盘的时候,相同价格的情况下,机械硬盘它的那个存储容量肯定要比固态硬盘更大对吧?好,另外第二点,记录介质可以重复使用,这个很好理解。我们的硬盘并不是说写一次就不能再写了,我们可以重复的写,重复的读。好,第三点,记录的信息可以长期保存不丢失,甚至可以脱机存档,这也是我们有感受的。我们的移动硬盘不就是这样吗?

05:10

好,第四点非破坏性读出,就是说我们读出这样一比特的数据,并不会影响这个磁性材质上面这一比特的磁场的信息。这个比特信息不需要再生,这是它的优点。相应的缺点也是我们有感受的,存取速度慢。机械硬盘的电脑通常要比固态硬盘的电脑要慢得多。然后第二点,机械结构复杂,这个我们通过接下来的学习会有感受。第三点,对工作环境的要求高,为什么呢?因为我们这些磁性材质其实很容易受到一些强磁场的干扰。所以你的磁盘如果放在强磁场的那种环境下,有可能你磁盘里的信息就都丢失了。显然外存储器既可以作为输入设备,也可以作为输出设备(既可以存数据,也可以读数据)。好,现在我们已经认识了磁盘最底层的一个工作原理。接下来我们来看一下磁盘设备它的组成。

06:06

我们来看这样的两个图,左边这个图是你把你的硬盘拆开以后,它里边的一个样子。可以看到它中间这儿有一个轴,下面会有一个马达,带动着你的磁盘往某一个方向旋转,然后在这个驱动轴上面会有很多个盘片,在每一个盘片的表层就会涂上我们刚才介绍的磁性材质。那这些磁性材质是怎么涂的呢?其实是一圈一圈的涂的,一圈一圈的涂。所以当我们想要读取某一圈的磁性材质里边的数据的时候,就需要移动这个磁头臂把它移动到对应的那一圈磁性材质上。然后刚才我们说过这个驱动轴是不是会带动你的盘片一直旋转,那这个弹片旋转是不是就会使得这一圈的磁性材质从磁头臂的下方划过,那这个磁头臂的这个头上会有一个读写磁头,也就是我们用来读或者写二进制的0和1。这是磁盘的其中一面。

07:13

另一面背面可以看到会有一个电路板,这些电路板其实就是磁盘的控制器,电子部件。我们可以把左边这个部分称为机械部分,然后背面的这个电路板把它称为电子部分。通过这个磁盘控制器,通过这些电子部分才可以和主机进行数据的交换。

07:35

好,接下来我们把这个磁盘的一个结构给它细化一下。首先来看一下最重要的存储数据的这个部分。结合刚才那个图可以看到,我们每一个磁盘的内部其实有可能会有多个盘片,然后每个盘片的表面会被涂满磁性材质。那么为了读取每一个记录面,每一个盘面面的这个数据,因此会给每个盘面设置一个给它弄一个读写的磁头。所以读写磁头的数量和我们这个盘面的数量,记录面的数量是相同的。一个记录面对应一个磁头。

08:17

好,接下来刚才我们说过,我们在这些盘面上涂磁性材料的方式是一圈一圈的涂的,而不是一整块全部都涂满。那么每一圈的磁性材料我们就把它称为一条磁道,所以每个盘面上都会有若干个磁道,这儿的绿色的圈指的就是一个一个的磁道。然后由于我们磁盘内部会有多个盘片,像这个图里边就是有四个盘片,那每个盘片都是同样的,被划分为了多个磁道,对于不同的盘面上相对位置相同的这种磁道,我们把它称为一个柱面。那这个术语还是很形象的对吧?因为所有的磁盘,比如说最外圈的这个磁道,最外圈的磁道看起来不就是一个柱体,它们的对应位置都是相同的,垂直着来看好像就是形成了一个圆柱一样。好,所以每一个盘面上相对位置相同的这些磁道组成了一个柱面。那显然一个盘面上有多少条磁道,是不是就应该有多少个柱面?

09:28

好,接下来我们还会给每一个盘面划分为多个扇区,一个扇形的区域。因此进行这样的划分之后,每一个磁道就会被划分为多个扇区。需要注意的是,主机每一次对磁盘进行读或者写操作都是以扇区为单位的。比如这次我要读取一个扇区,那么我可以读取这条磁道的这一段的位置,要让这一小段划过磁头的下方。好,这就是对存储区域的划分。

10:04

一个磁盘内部可能会有很多个盘面,每一个盘面会对应一个读写磁头。这个读写磁头是可以移动的,就是往里或者往外移动,把它移动到对应的一个位置。然后对于每一个盘面来说,我们又会在上面涂上很多很多圈的这种磁性材质,每一圈的磁性材质就是一个磁道。另外为了方便主机对磁盘数据的读写,因此我们也需要把磁道划分成一个更小的扇区,以扇区为单位对磁盘进行读或者写操作。

10:45

另一个方面,由于有多个盘面,因此所有的这些盘面相对位置相同的这些磁道组成了一个柱面。因此当我们说柱面号的时候,其实就是在指明某一条磁道,对吧?比如说最里边这个柱面,我们把编号为零,然后再往外编号为一再往外编号为二。那我们是不是就可以根据柱面号来确定一个磁道的位置,也就是把这个读写磁头把它移动到我们想要读取的那个柱面号所对应的位置就可以。

11:20

好,为了让这个读写磁头能够往里或者往外移动,同时也为了让这个磁盘能够转圈圈,能够转起来。因此我们一个磁盘里边需要有一些机械部件,叫做磁盘驱动器。也就是我们刚才看到的左边这个图画的这些东西,需要能够移动磁头,要能够让这个盘面转起来。好,这是磁盘驱动器。除了磁盘驱动器之外,还需要有磁盘控制器。磁盘控制器本质上也属于一种IO接口,一种IO控制器。它适用于实现磁盘和主机之间的一个数据的交互。

12:05

对于磁盘来说有这样的一些标准,IDE其实就是ATA,然后SATA就是串行的ATA,现在比较常用的还是SATA,另一点值得一提的是,在一个磁盘的盘片上,我们其实可以在它的正面和反面都涂上一圈一圈的磁性材质。因此实际我们使用的硬盘通常是这样的一个结构,就是一个磁头臂它的头头这其实会有上面和下面两个读写磁头,可以看到最上面这一侧并没有一个读写磁头。因为如果再制造一个这种单向的读写磁头,可能成本会比较高,不太划算。因此最上面这一侧没有读写磁头。好,这就是磁盘的基本组成,分为磁盘驱动器,就是机械部分,还有磁盘的控制器。我们还需要知道在这个磁盘的各个盘面上是如何划分这些磁道,如何划分扇区的。

13:07

好,对于一个磁盘来说,有这样的一些很重要的性能指标。首先磁盘的容量,这个不用说,比如我们买移动硬盘的时候,肯定都会关注到它的容量是多少,可以存放多少个字节,对吧?但是需要注意,磁盘容量会有非格式化和格式化这样的两种区分。所谓非格式化指的就是你的这个磁盘在物理上来看,总共可以存储的二进制比特位的一个上限。而格式化的容量指的就是比如你的这个磁盘,它某些扇区有可能会损坏,对吧?那为了防止个别扇区的损坏导致整个磁盘无法正常工作,因此很多厂商他生产的磁盘应该是需要进行格式化。比如说可以留下某一些备用的扇区作为顶替使用,如果扇区A损坏了,那么就会用一个备份的扇区B来进行顶替。

14:08

好,因此可以看到对磁盘进行格式化之后,其实会有某些部分的容量被我们用作其他的用途。那我们实际可以使用的这个磁盘容量是不是就会变少?好,因此对于一块磁盘来说,格式化的容量要比非格式化的容量要更小。

14:27

好,接下来第二个性能指标叫记录密度,又可以进一步的划分为道密度、位密度以及面密度。好,我们结合图会比较好理解。所谓的道密度指的就是沿这个磁盘的半径方向上,这个半径方向上单位长度上的磁道数反映了磁道的密度。比如说某一个磁盘它的道密度是60到每厘米,那么这就意味着在这个磁盘上半径方向上1厘米的这个区间内,总共有60个磁道,是这样的一个意思。所以只要我们知道磁盘的道密度,并且能够知道这一段的总长,我们是不是就可以算出这个磁盘总体有多少个磁道。好,那这是道密度。

15:20

接下来看位密度,位密度指的是在一条磁道上,也就是这样的一圈。这样的一条磁道上,单位长度上可以记录到二进制代码的位数。比如有的题目可能会告诉你,最外圈的这个磁道,它的位密度是600个比特每厘米。那这也就意味着最外圈的这个磁道上,每一厘米的这个磁道可以存储600个比特的信息。好,因此如果告诉你位密度,并且你能够算出来这一整个磁道的长度,那你是不是就可以知道每一条磁道可以存放多少个它的数据。另外如果题目给的条件能够让你算出这个词到一个扇区的长度,那么你是不是可以算出一个扇区可以存储多少个比特的数据?需要补充的是,我们磁盘上每一个扇区所能存储的二进制数据都是相同的,大小都是相同的。

16:22

对于最外侧的这个磁道,它的一个扇区比如说可以存N个比特。那么最内侧的这个磁道,它的这个扇区虽然看起来更短,然而它同样也是可以存储N个比特。因此这也就意味着越靠近内侧的磁道它的位密度会越大,越靠近外侧的磁道位密度会越小。好,所以一个磁盘它的存储性能很多时候会受到最内侧的这个磁道的制约。因为这么短的一小个扇区内,我们可以存的这个二进制比特数肯定是有一个上限的对吧?那越靠近外侧的这个磁道,是不是制造的工艺肯定会更简单。因此最内侧的这个磁道,它的这个位密度很大程度上会影响到我们磁盘的整体容量。

17:14

好,这是道密度。好,最后面密度,面密度就是位密度与道密度的一个乘积。结合这个图示,相信这几个指标并不难理解。接下来我们再看第三个,也是考试当中最常考的一个性能指标的计算,叫做平均的存取时间。

17:32

显然我们应该先弄清楚我们要存或者要取一个扇区的数据需要经过哪些步骤。首先刚才我们说过这个磁盘会有一个马达带动着它进行爱的魔力转圈圈的一个动作。我们每一次读或者写的单位是以扇区为单位的某一个磁道上的特定的扇区。好,假设现在我们要读或者要写的就是红色的这个小的扇区,我们要对它进行读写,是不是需要让这个扇区划过磁头下方。因此 我们需要让这个磁头往里边移动,移动到我们想要读的这个扇区所在的磁道,移到这个位置。移动磁头的这部分时间,我们把它称为寻道时间,就是寻找我们要读取的那个磁道的位置寻道时间。通常来说这个寻道时间的花销是比较长的,因为这是一个机械移动的过程,这个磁头臂它的移动速度不会很快。

18:34

好,现在我们已经定位到了我们想要读的那个磁道。接下来是不是需要让这个磁盘继续旋转,让我们想要读的这个扇区先滑到磁头的位置。所以接下来经过旋转,把扇区滑到磁头臂的下方,这个旋转的过程所需要的时间叫做旋转延迟时间。

18:55

好,继续。现在这个扇区和磁头已经在这个地方相遇了,那我们还需要让磁盘继续的旋转,使得目标扇区从磁头臂的下方划过。这段时间就是传输时间。

19:12

好,所以对于磁盘来说,要读或者要写某一个扇区,首先要把磁头臂移动到那个扇区所在的磁道的位置,然后接下来继续的旋转这个磁盘,让我们要读的扇区划到磁头臂的下方,然后继续旋转,继续旋转,让整个扇区划过磁头臂就可以完成数据的读写。那通常来说,移动磁头臂的这段时间,也就是寻道时间,题目里会给你一个平均的时间,然后旋转延迟时间,这部分延迟时间我们可以取转半圈所需要的一个时间,因为我们想要读取的扇区在任何一个位置的概率都是相等的对吧?那如果算一个数学期望的话,平均来看我们要读取的扇区滑到磁头臂的下方,数学期望应该是接近转半圈所需要的时间。所以如果题目没有给大家明确的旋转延迟时间,那么大家就按照这个磁盘转半圈所需要的时间来算。题目里会给出磁盘的转速,那根据转速你可以算出来转半圈所需要的时间,也可以算出来转一个扇区所需要的时间。所以最后这部分的传输时间通常也是需要我们手动计算的。计算的过程并不复杂,大家通过几个课后习题来感受一下就可以了。

20:35

好,最后还需要补充一点,我们要给这个磁盘发出读写命令是不是也需要花费一些时间?所以有的题目还会让我们加上这个磁盘控制器的一个延迟时间,就是那个电子部件接收主机的命令,并且对这个磁盘驱动器机械部分发出控制信号所需要的一个延迟时间。好,这就是磁盘的存取操作的一个过程。捋清楚这个过程对于存取时间的计算就很简单了。好,这是平均存取时间。

21:06

最后数据传输率。数据传输率指的就是在单位时间内向主机传送的字节数,就是磁盘的读写速度。那这种题目通常会怎么考呢?它会告诉你磁盘的转速每秒钟多少转或者每分钟多少转,需要注意单位哈,那每秒钟可以转R转,而每一次旋转都会使得一整条的磁道划过磁头臂的下方,因此每一次的旋转都可以读入一整条磁道的那些数据。如果说每条磁道可以存放N个字节,那么理论上这个磁盘的数据传输率最大就可以达到R乘以N这样的一个速度,这是一个理论最大值。

21:50

好,以上是评价磁盘性能的一些指标。考试最常考的还是对于平均存取时间的计算,但是题型相对固定,做几个题大家就能够知道怎么做了。好,刚才我们探讨了我们要读取一个扇区的一个过程,接下来我们应该思考的问题是,主机是如何向磁盘指明自己想要读的是哪一个扇区的。那为了指明某一个特定的扇区,因此我们需要给这个磁盘里的各个扇区进行一个编号。也就是说磁盘也应该像内存一样,需要有一个地址,一个编址。那磁盘的地址结构一般是这样的。

22:33

首先第一个部分驱动器号,什么意思呢?我们的计算机内部是不是可以连多个硬盘?那么我们肯定得先选中我们要读写的到底是哪一个硬盘,对吧?所以这个驱动器号就是先选中一个硬盘驱动器,先选中一个特定的硬盘。好,那确定了硬盘之后,接下来我们是不是应该让这个读写磁头开始向内或者向外移动?好,所以接下来这部分的地址信息要指明我们要读的是哪一个磁道,或者说我们要读的是哪一个柱面。因此根据第二部分的信息,我们可以知道磁头臂应该移动到什么位置。

23:14

好,接下来第三段信息盘面号。刚才我们说过一个磁盘它里边可能会有多个盘面,然后这些盘面和磁头都是一一对应的。我们可以给每一个盘面进行一个编号,01345,那我们根据盘面号是不是就可以知道我们应该激活哪一个子头。比如说我们要读的数据在一号盘面,那么我们根据盘面号来激活这个磁头是不是就可以?好,所以地址的第三个部分盘面号是用于选择到底要激活哪一个磁头。

23:53

然后最后一个部分扇区号,这个不用多说。我们激活了一个特定磁头之后,那个磁盘的盘面还需要旋转,我们最终要读写的是某一个特定的扇区,因此还需要再指明扇区号,这样的话磁盘旋转的过程当中,很多个扇区会划过磁头臂,但是我们需要根据扇区号来确定我们要读取的到底是哪个扇区。

24:20

好,这就是磁盘地址的最后一部分,那这个部分会怎么考察呢?比如可能会告诉你某个系统有四个驱动器,每一个驱动器会带一个磁盘。然后每一个磁盘有这么多个磁道,这么多个盘面,每个盘面又会被划分为这么多个扇区,然后说每个扇区的地址总共会有18位的二进制代码。

24:41

这18位的二进制代码我们可以这么分配,首先用两比特是不是可以表示0到3这个范围,也就是可以指明到底要读哪个驱动器,然后接下来柱面号,磁道号可以用八个比特来表示,因为每个盘面总共会有256个磁道,然后接下来盘面号四个比特就可以表示16个盘面,对吧?然后最后是扇区号,每一个盘面会被划分为16个扇区,因此扇区号也只需要用四个比特来表示。那2加8加4再加4,总共刚好是18个2进制位,也就是说我们用18个2进制位就可以唯一的指明唯一的定位到某一个具体的扇区。好,这就是磁盘的地址结构。

25:28

然后最后我们再来看磁盘的工作过程,其实这个我们刚才已经捋清楚了。无论是读还是写,都一定需要经过寻址,就是先定位到我们要读的磁道,定位好我们要读的盘面再说。

25:41

好,做好了寻址之后,接下来才可以进行读盘或者写盘的操作。要读出或者要写入某一个或者某几个特定的扇区。那我们的主机会通过控制字向磁盘的控制器来发出对应的这个操作。这儿我们提到的三个操作都会对应三个不同的控制字,用于指明磁盘需要做的动作是什么。磁盘的控制器收到主机发出的一个控制字之后,就可以执行这个控制字,也就是进行寻址,或者进行读盘,或者进行写盘。好,这就是磁盘或者说硬盘的一个工作过程。

26:20

再次强调磁盘的读写操作是串行的,每次只能读或者写一个比特,并且同一时刻不可以不可以同时进行读和写。由于我们进行读和写只能一笔特一笔测的进行,因此对于磁盘的控制器来说,一定是需要添加一个串并行的变换电路。主机给磁盘发送的数据可能是并行的发送的,一次传送多个比特位,然而我们要把这些数据写入磁盘的时候,只能一比特一比特的写,因此需要把这些并行的数据用串行的方式一比特一比特的写入。读出也是一样,我们通过读写磁头读出这个数据之后,我们是一比特一比特的读出的,也就是用串行的方式读出,但是我们给系统总线发送的数据,也许需要并行的发送,因此就需要一个串行转并行的一个变换电路。

27:15

好,以上就是磁盘工作的原理。接下来进入下个话题,磁盘阵列,英文缩写叫这个应该念RAID是吧?这儿给出了一个英文全称,叫做廉价冗余磁盘阵列,也就是我们可以用某些手段让多个磁盘组成磁盘阵列,再结合相应的算法和机制,可以提高磁盘的读写速度,同时也可以提升这个磁盘里边存储数据的一个可靠性、安全性。

27:49

好,我们结合具体的例子来感受一下这个磁盘冗余阵列有什么作用。首先来看RAID 0这种方案。RAID 0这种方案的思想是这样的,这儿我们给了两个磁盘,然后A1、A2、A3、A4这些指的是在逻辑上相邻的某一些数据,也就是说逻辑上相邻的第一坨数据我们会存在0号磁盘里边,然后第二坨数据我们会存放在1号磁盘里面,第三坨又存放在0号,第四坨又存放在1号。那这么做有什么用呢?大家可以回忆一下低位交叉编制的多体存储器,其实是一个思想。

28:32

因为磁盘是一种慢速的IO设备,一个很常见的需求就是我们可能会连续的读出很多个逻辑上相邻的数据。如果说这些逻辑上相邻的数据全部都放在同一个磁盘里,那由于这个磁盘它的读写速度能力是有限的,因此我们所有的数据都从同一个磁盘读出,是不是会导致IO的速度比较慢?但是如果我们把这些数据逻辑上相邻的部分,把它们在物理上放到不同的磁盘里面,这就意味着第一坨数据我们从0号磁盘读,第二坨数据我们从1号磁盘读,那这样的话,我们读写数据的速度是不是就相当于有两个磁盘在我们服务,这就可以使得多个磁盘上的数据可以被并行的访问。

29:21

这个图里边我们只是给了两个磁盘,事实上我们是不是还可以搞很多个磁盘。比如说这个图,四个物理磁盘,我们把逻辑上相邻的一些数据块,这儿把它称为了条带,把它们在物理上通过RAID 0相关的软件的处理,把它们分散的存储在不同的物理盘上,这样的话就可以使整个磁盘系统的读写速度变得更快。显然RAID0这个方案是没有冗余信息的,但是同时也没有校验的功能。

29:55

如何理解没有校验功能呢?我们知道磁盘它虽然说还算是一个比较可靠的存储设备,但是有的时候难免会有磁盘损坏的情况。比如说如果零号磁盘它刚好存储A1,存储这坨数据的那个扇区坏掉了,那么A1的数据是不是就永远的丢失了。所以如果我们没有存储一些冗余信息,那么当某些扇区损坏的时候,我们就无法恢复数据。而另一个方面,如果说这个扇区并不是整个被损坏,而是这个扇区里边某些比特位因为某些神秘力量的干扰而发生了二进制位的错误,那么采用这种方式是不是没办法检验出这个数据到底有没有发生跳变?好,所以这就是RAID 0这种方案的一个局限性。

30:48

为了使得数据的存储更可靠、更安全,我们就可以采用更安全的一种磁盘阵列的方案RAID1,就是镜像磁盘阵列。很好理解,就是我们会存两份数据,比如说我们有两个物理磁盘,每一个物理磁盘上都会存放一份数据,首先看并行访问的问题,如果我们此时要读A1、A2、A3、A4要读这些数据,那是不是也可以在0号磁盘读A1、读A3,然后在1号磁盘比如说读A2、读A4,也可以提高这个读写的速度,对吧。

31:23

好,另一个方面,对于可靠性和安全性来说,这种方案是不是更靠谱。如果其中一个磁盘某些扇区损坏,甚至是整个磁盘都损坏,那么至少我们在第二个磁盘里边还可以找到数据,不可能全部丢失。好,另外如果说某一个磁盘它里边存储的数据发生了跳变,0变1,1变0之类的,那我们是不是只需要对比这两边存储的数据是否一致,就可以知道到底有没有数据的一个错误。因此RAID1这种方案会有冗余的存储,同时也可以有校验的功能,不过相对的代价就是我们的存储空间可能会被浪费一半,存储空间的利用率并不是特别高。

32:07

好,为了进一步提高存储空间的利用率,我们再来看RAID 2这种磁盘阵列的方案。它的做法是这样的,这儿我们给出的A1、A2、A3、A4并不是指一整块,并不是指一个扇区的数据,而是指一个比特的数据。所以这个图的意思是说,我们在逻辑上相邻的几个比特,比如说四个比特,A1、A2、A3、A4分别是四个比特的信息,会被分散的存储在四个物理磁盘里边。同时我们还会再增加若干个磁盘,用来保存与这四位比特所对应的海明校验码,四个信息位只需要对应上三位的海明校验码,就可以拥有纠正一位错,发现两位错这样的能力。好,所以这就意味着即便我们其中某一个磁盘损坏了,那么由于拥有这个海明校验码,我们依然可以把我们丢失的这一个比特的数据给它恢复出来。另一方面,如果某一个比特发生了跳变,那么是不是也可以通过这个海明校验码进行一个检验并且恢复。

33:18

那可以看到采用RAID2这种方案,如果说我们这个信息位是四个比特为一组,那么我们只需要增加三个冗余的磁盘就可以。比起RAID1是不是成本要更低一些?因为RAID1它那个冗余数据的比例就是1比1,会多存一份,但是采用海明校验码的话,这就是4比3,只有7分之3的信息是冗余信息。好,这就是RAID 2这种磁盘阵列的方案。好,接下来345这几种磁盘阵列的方案,我们就不做具体的介绍了,有兴趣的同学可以去网络上了解剩下的这几种冗余阵列的一个方案。

33:58

大家只需要知道从上至下越往后,这个可靠性会越高,也就越安全。所以这种磁盘冗余阵列的存储方式对于我们很多,比如说百度云之类的云存储公司来说就是很重要的,因为百度云上我们保存的数据不能让它丢失,如果用户的数据丢失,百度云是需要负责的。所以为了增加这种,数据存储的一个可靠性,同时也为了增加它的这个磁盘系统的并行访问的能力,读写的一个速度,所以对于一些商用级的环境来说,就经常使用这种磁盘冗余阵列来提升他们这个磁盘系统的性能以及可靠性。

34:44

好,再强调一下,我们考试比较容易考察的,RAID0需要注意它是没有容错能力的,然后RAID1是有容错能力,但是它的代价就是容量会减少一半,冗余信息的存储代价会比较高,然后越往后的这些方案,它的冗余信息的占比会越少,同时可靠性和安全性也会逐步的增加,这些大家可以在自己下去了解。所以越靠后的这些磁盘冗余阵列的方案,可以使得成本会越廉价,在保证数据的安全性、可靠性的这个基础上,使得企业的运营成本变得更低,同时也可以提高数据的传输率,这些结合我们刚才的讲解应该并不难理解。

35:32

好,以上就是磁盘存储器以及如何使用磁盘阵列来提升这个磁盘系统的性能以及可靠性。这小节当中我们主要探讨的还是磁盘存储器。这一节的考试重点就是磁盘的性能指标的计算,特别就是这个平均存储时间。好,关于磁盘的地址结构,我们在操作系统课里边也有比较具体的介绍,大家可以再结合操作系统来进行进一步的理解。

36:00

而计组这门课比较重要的特有的一个考点就是磁盘冗余阵列。RAID 0这种磁盘冗余阵列可以提高存取的速度,就是在逻辑上相邻的那些数据块会被分别存到不同的磁盘里边,但是RAID 0它没有容错能力。当磁盘出现故障或者某些二进制比特币出现了跳变的时候,RAID 0是无法解决的。而RAID 1采用了镜像磁盘的方式,就是会用另一个磁盘多存一份数据,但是由于RAID 0它的冗余信息占比比较多,所以之后又有了RAID 2一直到RAID 5,这个等级的编号越大,就说明它那个冗余信息的占比越少,但是同时又通过了一些数据校验的设计来提高了容错能力。好,以上就是这个小节的全部内容。

这篇关于【计算机组成原理】3.4.1 磁盘存储器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136469

相关文章

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们