磁盘_磁盘分区 - CSDN
精华内容
参与话题
  • 简单理解磁盘结构

    万次阅读 多人点赞 2018-04-24 22:40:18
        偶然看到一道笔试题,所以简单整理了一下磁盘的结构。本文主要介绍传统的磁盘结构,包括盘面、磁道、扇区、柱面、读写数据过程的概念,最后给出所遇到的笔试题。 磁盘结构     传统的硬盘盘结构是像...

    本文首发于 Guanngxu 的个人博客磁盘到底是怎样工作的?一文理解硬盘结构

    数据库系统总会涉及到辅助存储(大多都是磁盘),因为它们能够存储大量需要长期保存的数据,因此我们有必要先了解了解磁盘的相关知识。

    根据机械原理,存储器的容量越大其速度就越慢。但是速度越快的存储器,其单位字节的价格就越贵。现代计算机系统可以包含几个不同的可以存储数据的部件,就形成了存储器的层次结构,但是需要注意的是「虚拟内存」是操作系统与操作系统运用机器硬件的产物,它不是存储器的层次之一。

    磁盘结构

    传统的硬盘盘结构是像下面这个样子的,它有一个或多个盘片,用于存储数据。盘片多采用铝合金材料;中间有一个主轴,所有的盘片都绕着这个主轴转动。一个组合臂上面有多个磁头臂,每个磁头臂上面都有一个磁头,负责读写数据。

    磁盘一般有一个或多个盘片。每个盘片可以有两面,即第一个盘片的正面为0面,反面为 1 面;第二个盘片的正面为 2 面…依次类推。磁头的编号也和盘面的编号是一样的,因此有多少个盘面就有多少个磁头。盘面正视图如下图,磁头的传动臂只能在盘片的内外磁道之间移动。因此不管开机还是关机,磁头总是在盘片上面。关机时,磁头停在盘片上面,抖动容易划伤盘面造成数据损失,为了避免这样的情况,所以磁头都是停留在起停区的,起停区是没有数据的。

    每个盘片的盘面被划分成多个狭窄的同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为磁道 (Track)。每个盘面可以划分多个磁道,最外圈的磁道是0号磁道,向圆心增长依次为1磁道、2磁道…磁盘的数据存放就是从最外圈开始的。

    根据硬盘的规格不同,磁道数可以从几百到成千上万不等。每个磁道可以存储数 Kb 的数据,但是计算机不必要每次都读写这么多数据。因此,再把每个磁道划分为若干个弧段,每个弧段就是一个扇区 (Sector)。扇区是硬盘上存储的物理单位,现在每个扇区可存储 512 字节数据已经成了业界的约定。也就是说,即使计算机只需要某一个字节的数据,但是也得把这个 512 个字节的数据全部读入内存,再选择所需要的那个字节。

    柱面是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为柱面 ,即各盘面上面相同位置磁道的集合。需要注意的是,磁盘读写数据是按柱面进行的,磁头读写数据时首先在同一柱面内从 0 磁头开始进行操作,依次向下在同一柱面的不同盘面(即磁头上)进行操作,只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面。因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。数据的读写是按柱面进行的,而不是按盘面进行,所以把数据存到同一个柱面是很有价值的。

    磁盘被磁盘控制器所控制(可控制一个或多个),它是一个小处理器,可以完成一些特定的工作。比如将磁头定位到一个特定的半径位置;从磁头所在的柱面选择一个扇区;读取数据等。

    现代硬盘寻道都是采用CHS(Cylinder Head Sector)的方式,硬盘读取数据时,读写磁头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间称为寻道时间(seek time)。因读写磁头的起始位置与目标位置之间的距离不同,寻道时间也不同。磁头到达指定磁道后,然后通过盘片的旋转,使得要读取的扇区转到读写磁头的下方,这段时间称为旋转延迟时间(rotational latencytime)。然后再读写数据,读写数据也需要时间,这段时间称为传输时间(transfer time)。

    根据上文的信息,我们可以得出磁盘容量的计算公式为:

    硬盘容量 = 盘面数 × 柱面数 × 扇区数 × 512字节
    

    笔试题实战

    下面的题目是腾讯某一年校招笔试中的一个题目,题干信息描述为:数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环磁道上有10个物理块,10个数据记录R1~R10存放在这个磁道上,记录的安排顺序如下表所示。

    物理块 1 2 3 4 5 6 7 8 9 10
    逻辑记录 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10

    假设磁盘的旋转速度为20ms,磁盘当前处在R1的开头处,若系统顺序扫描后将数据放入单缓冲区内,处理数据的时间为4ms(然后再读取下个记录),则处理这10个记录的最长时间是多少?

    答案:磁盘会一直朝某个方向旋转,不会因为处理数据而停止。本题要求顺序处理 R1 到 R10,起始位置在 R1,一周是 20ms,共 10 个记录,所以每个记录的读取时间为 2ms。首先读 R1 并处理 R1,读 R1 花 2ms,读好后磁盘处于 R1 的末尾或 R2 的开头,此时处理 R1,需要 4ms,因为磁盘一直旋转,所以 R1 处理好了后磁盘已经转到 R4 的开始了,这时花的时间为 2+4=6ms。这时候要处理 R2,需要等待磁盘从 R5 一直转到 R2 的开始才行,磁盘转动不可反向,所以要经过 8*2ms 才能转到 R1 的末尾,读取 R2 需要 2ms,再处理 R2 需要 4ms,处理结束后磁盘已经转到 R5 的开头了,这时花的时间为 2*8+2+4=22ms。等待磁盘再转到 R3 又要 8*2ms,加上 R3 自身 2ms 的读取时间和 4ms 的处理时间,花的时间也为 22ms,此时磁盘已经转到 R6 的开头了,写到这里,就可以看到规律了,读取并处理后序记录都为 22ms,所以总时间为 6+22*9=204ms

    如何加速对磁盘的访问

    对于理解数据库系统系统特别重要的是磁盘被划分为磁盘块(或像操作系统一样称之为页),每个块的大小是 4~64KB。磁盘访问一个磁盘块平均要用 10ms,但是这并不表示某一应用程序将数据请求发送到磁盘控制器后,需要等 10ms 才能得到数据。如果只有一个磁盘,在最坏的情况下,磁盘访问请求的到达个数超过 10ms 一次,那么这些请求就会被无限的阻塞,调度延迟将会变的非常大。因此,我们有必要做一些事情来减少磁盘的平均访问时间。

    按柱面组织数据:前这一点在前文已经提到过了。因为寻道时间占平均块访问时间的一半,如果我们选择在一个柱面上连续的读取所有块,那么我们只需要考虑一次寻道时间,而忽略其它时间。这样,从磁盘上读写数据的速度就接近于理论上的传输速率。

    使用多个磁盘:如果我们使用多个磁盘来替代一个磁盘,只要磁盘控制器、总线和内存能以 n 倍速率处理数据传输,则使用 n 个磁盘的效果近似于 1 个磁盘执行了 n 次操作。因此使用多个磁盘可以提高系统的性能。

    磁盘调度:提高磁盘系统吞吐率的另一个有效方法是让磁盘控制器在若干个请求中选择一个来首先执行,调度大量块请求的一个简单而有效的方法就是电梯算法。回忆一下电梯的运行方式,它并不是严格按先来后到的顺序为乘客服务,而是从建筑物的底层到顶层,然后再返回来。同样,我们把磁盘看作是在做横跨磁盘的扫描,从柱面最内圈到最外圈,然后再返回来,正如电梯做垂直运动一样。

    预取数据:在一些应用中,我们是可以预测从磁盘请求块的顺序的。因此我们就可以在需要这些块之前就将它们装入主存。这样做的好处是我们能较好的调度磁盘,比如采用前文的电梯算法来减少访问块所需要的平均时间。

    磁盘故障

    如果事情都像我们一开始设计的那样进行,那世界肯定会变得特别无聊。磁盘偶尔也会耍耍小脾气,甚至是罢工不干了。比如在读写某个扇区一次尝试没有成功,但是反复尝试后有成功读写了,我们称之为间歇性故障

    一种更为严重的故障形式是,一个或多个二进制位永久的损坏了,所以不管我们尝试多少次都不可能成功,这种故障称之为介质损坏

    另一种相关的错误类型称之为写故障,当我们企图写一个扇区时,既不能正确的写,也不能检索先前写入的扇区,发生这种情况的一种可能原因就是在写过程中断电了。

    当然肯定最严重的就是磁盘崩溃,这种故障中,整个磁盘都变为永久不可读,这是多么可怕的事情。

    既然会出现上面所述的各种大小故障,那么我们就必须要采取各种措施去应对大大小小的变故,保证系统能正常运行。

    规避故障

    我们尝试读一个磁盘块,但是该磁盘块的正确内容没有被传送到磁盘控制器中,就是一个间歇性故障发生了。那么问题是控制器如何能判断传入的内容是否正确呢?答案就是使用校验和,即在每个扇区使用若干个附加位。在读出时如果我们发现校验和对数据位不合适,那么我们就知道有错误;如果校验和正确,磁盘读取仍然有很小的可能是不正确的,但是我们可以通过增加趣多校验位来降低读取不正确发生的概率。

    此处我们使用奇偶校验来举例,通过设置一个校验位使得二进制集合中 1 的个数总是偶数。比如某个扇区的二进制位序列是 01101000,那么就有奇数个 1,所以奇偶位是 1,这个序列加上它后面的奇偶位,就有 011010001;而如果所给的序列是 11101110,那么奇偶位就是 0。所以每一个加上了奇偶位构成的 9 位序列都有偶数奇偶性。

    尽管校验和几乎能正确检测出介质故障或读写故障的存在,但是它却不能帮助我们纠正错误。为了处理这个问题,我们可以在一个或多个磁盘中执行一个被称为稳定存储的策略。通常的思想是,扇区时成对的,每一对代表一个扇区内容 X。我们把代表 X 的扇区对分别称为左拷贝 XL和右拷贝XR。这样实际上就是每个扇区的内容都存储了两份,操作XL失败,那么去操作XR就可以了,更何况我们还在每个扇区中有校验和,把错误的概率就大大降低了。

    到现在为止,我们讨论的都是简单的故障,但是如果发生了磁盘崩溃,其中的数据被永久破坏。而且数据没有备份到另一种介质中,对于银行金融系统这将是巨大的灾难,遇到这种情况我们应该怎么办呢?

    数据恢复

    应对磁盘故障最简单的方式就是镜像磁盘,即我们常说的备份。回忆一下写毕业论文时的做法,那时候大部分同学还不会用版本控制器,所以基本采用每天备份一次数据,并且在文件名称中标注日期,以此来达到备份的效果。

    第二种方式是使用奇偶块,比如一个系统中有 3 个磁盘,那么我们再加一个磁盘作为冗余盘。在冗余盘中,第 i 块由所有数据盘的第 i 块奇偶校验位组成。也就是说,所有第 I 块的第 j 位,包括数据盘和冗余盘,在它们中间必须有偶数个 1,冗余盘的作用就是让这个条件为真。

    我们举个简单例子,假设快仅由一个字节组成,我们有三个数据盘和一个冗余盘,对应的位序列如下。其中 盘4 为冗余盘,它的位序列是根据前面三个盘计算出来的。

    盘 1:11110000
    盘 2:10101010
    盘 3:00111000
    盘 4:01100010
    

    假设现在某个盘崩溃了,那么我们就能根据上面的序列来恢复数据,只需要让每一列 1 的个数为偶数就可以了,但是这种冗余方式也存在很大的不足。

    第一个缺陷是,如果是两个盘同时崩溃了,那数据也恢复不出来了。第二个问题在于,虽然读数据只需要一次 I/O 操作即可,但是写数据时就不一样了,因为需要根据其他数据盘来计算冗余盘中的位序列,假设共有 n 个盘,其中一个为冗余盘,所以每次写数据时,都需要进行 n+1 次 I/O 操作(读不被写入的 n-1 个盘,被重写数据盘的一次写,冗余盘的一次写),而 I/O操作又是非常耗时的操作,所以这种方法会大大拖慢系统性能。

    另一种方案是没有明显的冗余盘,而是把每个磁盘作为某些块的冗余盘来处理。比如现在有 4 个盘,0 号磁盘将作为编号为 4、8、12 等柱面的冗余,而 1 号磁盘作为编号为 1、5、9 等块的冗余…

    一种更为先进的方式使用海明码来帮助从故障中恢复数据,它在多个磁盘崩溃的情况下也能恢复出数据,也是 RAID 的最高等级,由于本人水平有限,用文字表达不清楚,就不作介绍了,嘿嘿。

    展开全文
  • 磁盘

    2017-10-10 09:44:00
    1、磁盘基本结构和运行原理 2、 磁盘速度慢(数字时代的机械运行) 3、磁盘存储和表示数据(有磁和无磁) 4、格式化 低级格式化:将空白磁盘划分为柱面和磁道,再将磁道划分为扇区 高级格式:创建文件系统 5...

    1、磁盘基本结构和运行原理

    2、 磁盘速度慢(数字时代的机械运行)

    3、磁盘存储和表示数据(有磁和无磁)

    4、格式化

    低级格式化:将空白磁盘划分为柱面和磁道,再将磁道划分为扇区

    高级格式:创建文件系统

    5、磁盘内部结构

    7、磁道、柱面(cylinder)、扇区(sector)

    8、通过磁头(Header),柱面(cylinder),扇区(sector)可准确定位磁盘上的数据

     9、影响磁盘性能的4个因素(转速、寻道速度、数据密度、接口协议和速度ATA和SCSI)

    10、几个名词(顺序IO、随机IO、IOPS(有前提是顺序io还是随机io)、DMA模式(Direct Memory Access)cpu发指令,zhongd)顺序IO和随机IO根据使用数据的特点,一般数据库使用的是随机IO
    11、操作系统与磁盘
    操作系统保证性能和效率的情况下,进行上下层面的沟通、组织、协调
    对上通过格式化创建文件系统,上层应用程序对文件系统进行操作,达到进一步的封装
    对下,通过对磁盘驱动程序操作磁盘,为上层提供安全、可靠的数据
    12、Linux IO调度算法
    资源充足的情况下写是很快的
    写有多种方式:带缓存的写和不带缓存的写
    IO调度器的原则是尽量让磁头在一个方向移动,移动到底再往反向走,这是生活中的电梯模型,IO调度器也叫电梯,对应算法也叫电梯算法
    13、监控磁盘iostat
     
     
    1、整个计算机体系IO相对慢,IO包括磁盘和网路
    2、1s = 1000ms = 1000 000 us = 1000 000 000 ns
    3、操作系统将cpu分时设置成可以中断和打断因为cpu发个指令给磁盘,cpu不等待磁盘响应可中断
    4、磁盘慢是机械运动,所以慢
    5、计算机体系是用0和1两级状态来保存数据的,磁盘通过磁化和非磁化来保存
    6、磁盘500G = 500 *1000M和网卡用的是相同的进制,跟文件系统bit和byte不一样
    文件系统的进制换算

    1 Byte = 8 Bits

    1 KB = 1024 Bytes

    1 MB = 1024 KB

    1 GB = 1024 MB 

     

    500G硬盘实际上硬盘空间为465G左右。因为硬盘厂商的进位制采用的是1000进位,而操作系统的进位制采用的是1024进制。
    500G*1000*1000*1000=500,000,000,000Byte(字节)

    500,000,000,000Byte/1024/1024/1024=约为465GB
    8、磁盘转速5400转(5400 RPM(round per minute)) 7500转、15000转
    9、目前来说一个扇区一般为512个字节,读/写数据的最小单位为一个扇区
    10、0扇区:0盘面、0柱面的第一个扇区,开机自检完后,操作系统启动程序安装在0扇区上,
    11、线速度,数据越靠外面读取数据越快,角速度相同,越到外面线速度越快
    12、lab线性的方式
    13、影响磁盘性能的因素
    转速
    寻道(址)速度
    数据密度
    接口协议和速度
    14、磁盘的驱动安装在操作系统内核上
    15、Linux的IO算法
    磁盘内部的传动臂摇摆有一定的算法,不按照IO的到达顺序来读写的,操作系统尽量合并一些IO提高IO性能
    16、IO调度器是真的写一般写数据写到缓存,IO调度写数据写到磁盘上去

     iostat

     

    第一眼看使用率%util第二眼看await

     

    rrqm/s:读请求IO每秒合并数

    wrqm/s:

    r/s:

    w/s:

    rsec/s:

    wsec/s:

    await:排队时间和消耗在磁盘上的时间

    %util:统计磁盘的使用率

     

    19block是扇区的整数倍 page是block的整数倍数

    层层缓存

    register缓存cache,cache缓存内存,内存缓存磁盘减少真正IO的读写。

    
    
     
     

    转载于:https://www.cnblogs.com/yangyangchunchun/p/7644092.html

    展开全文
  • 磁盘(操作系统)

    千次阅读 2015-10-04 19:32:36
    4.9 磁盘的结构 磁盘(Disk)是由表面涂有磁性物质的金属或塑料构成的圆形盘片,通过一个称为磁头 的导体线圈从磁盘中存取数据。在读/写操作期间,磁头固定,磁盘在下面高速旋转。如图 4-23所示,磁盘的盘面上的数据...

    4.9 磁盘的结构

    磁盘(Disk)是由表面涂有磁性物质的金属或塑料构成的圆形盘片通过一个称为磁头的导体线圈从磁盘中存取数据。在读/写操作期间,磁头固定,磁盘在下面高速旋转。如图 4-23所示,磁盘的盘面上的数据存储在一组同心圆中,称为磁道。每个磁道与磁头一样宽, 一个盘面有上千个磁道。磁道又划分为几百个扇区,每个扇区固定存储大小(通常为512B), 一个扇区称为一个盘块。相邻磁道及相邻扇区间通过一定的间隙分隔开,以避免精度错误。

    注意,由于扇区按固定圆心角度划分,所以密度从最外道向里道增加,磁盘的存储能力受限于最内道的最大记录密度

    磁盘安装在一个磁盘驱动器中,它由磁头臂、用于旋转磁盘的主轴和用于数据输入/输 出的电子设备组成。如图4-24所示,多个盘片垂直堆叠,组成磁盘组,每个盘面对应一个 磁头,所有磁头固定在一起,与磁盘中心的距离相同且一起移动。所有盘片上相对位置相同 的磁道组成柱面。按照这种物理结构组织,扇区就是磁盘可寻址的最小存储单位,磁盘地址 用“柱面号 • 盘面号 • 扇区号(或块号)”表示。


    磁盘按不同方式可以分为若干类型:磁头相对于盘片的径向方向固定的称为固定头磁盘,每个磁道一个磁头;磁头可移动的称为活动头磁盘,磁头臂可以来回伸缩定位磁道。磁 盘永久固定在磁盘驱动器内的称为固定盘磁盘;可移动和替换的称为可换盘磁盘。

    4.10 磁盘调度算法

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

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

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

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

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

    总平均存取时间Ta可以表示为:

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

    目前常用的磁盘调度算法有以下几种:

    1) 先来先服务(First Come First Served, FCFS)算法

    FCFS算法根据进程请求访问磁盘的先后顺序进行调度,这是一种最简单的调度算法,如图4-25所示。该算法的优点是具有公平性。如果只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有望达到较好的性能;但如果有大量进程竞争使用磁盘,那么这种算法在性能上往往接近于随机调度。所以,实际磁盘调度中考虑一些更为复杂的调度算法。


    图4-25 FCFS磁盘调度算法

    例如,磁盘请求队列中的请求顺序分别为55、58、39、18、90、160、150、38、184,磁头初始位置是100磁道,釆用FCFS算法磁头的运动过程如图4-25所示。磁头共移动了 (45+3+19+21+72+70+10+112+146)=498 个磁道,平均寻找长度=498/9=55.3。

    2) 最短寻找时间优先(Shortest  Seek  Time  First, SSTF)算法

    SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比 FCFS算法更好的性能。这种算法会产生“饥饿”现象。如图4-26所示,若某时刻磁头正在 18号磁道,而在18号磁道附近频繁地增加新的请求,那么SSTF算法使得磁头长时间在18 号磁道附近工作,将使184号磁道的访问被无限期地延迟,即被“饿死”。


    图4-26  SSTF磁盘调度算法

    例如,磁盘请求队列中的请求顺序分别为55、58、39、18、90、160、150、38、184,磁头初始位置是100磁道,釆用SSTF算法磁头的运动过程如图4-26所示。磁头共移动了 (10+32+3+16+1+20+132+10+24)=248 个磁道,平均寻找长度=248/9=27.5。

    3) 扫描(SCAN)算法(又称电梯算法)

    SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象,如图4-27所示。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。SCAN算法对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和 SSTF算法好。


    图4-27  SCAN磁盘调度算法

    例如,磁盘请求队列中的请求顺序分别为55、58、39、18、90、160、150、38、184,磁头初始位置是100 磁道。釆用SCAN算法时,不但要知道磁头的当前位置,还要知道磁头的移动方向,假设磁头沿磁道号增大的顺序移动,则磁头的运动过程如图4-27所示。磁头共移动了(50+10+24+94+32+3+16+1+20)=250 个磁道,平均寻找长度=250/9=27.8。

    4) 循环扫描(Circulair SCAN, C-SCAN)算法

    在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。由于SCAN算法偏向于处理那些接近最里或最外的磁道的访问请求,所以使用改进型的C-SCAN算法来避免这个问题。

    釆用SCAN算法和C-SCAN算法时磁头总是严格地遵循从盘面的一端到另一端,显然,在实际使用时还可以改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。这种形式的SCAN算法和C-SCAN算法称为LOOK和C-LOOK调度。这是因为它们在朝一个给定方向移动前会查看是否有请求。注意,若无特别说明,也可以默认SCAN 算法和C-SCAN算法为LOOK和C-LOOK调度。


    图4-28  C-SCAN磁盘调度算法

    例如,磁盘请求队列中的请求顺序分别为55、58、39、18、90、160、150、38、184,磁头初始位置是100磁道。釆用C-SCAN算法时,假设磁头沿磁道号增大的顺序移动,则磁头的运动过程如图4-28所示。磁头共移动了(50+10+24+166+20+1+16+3+32)=322个磁道,平均寻道长度=322/9=35.8。

    对比以上几种磁盘调度算法,FCFS算法太过简单,性能较差,仅在请求队列长度接近于1时才较为理想;SSTF算法较为通用和自然;SCAN算法和C-SCAN算法在磁盘负载较大时比较占优势。它们之间的比较见表4-4。

    表4-4  磁盘调度算法比较

    优  点 缺  点
    FCFS算法 公平、简单 平均寻道距离大,仅应用在磁盘I/O较少的场合
    SSTF算法 性能比“先来先服务”好 不能保证平均寻道时间最短,可能出现“饥饿”现象
    SCAN算法 寻道性能较好,可避免“饥饿”现象 不利于远离磁头一端的访问请求
    C-SCAN算法 消除了对两端磁道请求的不公平 --

    除减少寻找时间外,减少延迟时间也是提高磁盘传输效率的重要因素。可以对盘面扇区进行交替编号,对磁盘片组中的不同盘面错位命名。假设每个盘面有8个扇区,磁盘片组共 8个盘面,则可以釆用如图4-29所示的编号。


    图4-29磁盘片组扇区编号

    磁盘是连续自转设备,磁头读/写一个物理块后,需要经过短暂的处理时间才能开始读/ 写下一块。假设逻辑记录数据连续存放在磁盘空间中,若在盘面上按扇区交替编号连续存放,则连续读/写多个记录时能减少磁头的延迟时间;同柱面不同盘面的扇区若能错位编号,连续读/写相邻两个盘面的逻辑记录时也能减少磁头延迟时间。

    由于传输时间由磁盘转速决定,所以无法通过其他方法减少传输时间。以图4-29为例,在随机扇区访问情况下,定位磁道中的一个扇区平均需要转过4个扇区,这时,延迟时间是传输时间的4倍,这是一种非常低效的存取方式。理想化的情况是不需要定位而直接连续读取扇区,没有延迟时间,这样磁盘数据存取效率可以成倍提高。但是由于读取扇区的顺序是不可预测的,所以延迟时间不可避免。图4-29中的编号方式是读取连续编号扇区时的一种方法。

    4.11 磁盘的管理:磁盘初始化、引导块、坏块

    磁盘初始化

    一个新的磁盘只是一个含有磁性记录材料的空白盘。在磁盘能存储数据之前,它必须分成扇区以便磁盘控制器能进行读和写操作,这个过程称为低级格式化(物理分区)。低级格式化为磁盘的每个扇区釆用特别的数据结构。每个扇区的数据结构通常由头、数据区域(通常为512B大小)和尾部组成。头部和尾部包含了一些磁盘控制器所使用的信息。

    为了使用磁盘存储文件,操作系统还需要将自己的数据结构记录在磁盘上:第一步将磁盘分为由一个或多个柱面组成的分区(即我们熟悉的C盘、D盘等形式的分区);第二步对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲和已分配的空间以及一个初始为空的目录。

    引导块

    计算机启动时需要运行一个初始化程序(自举程序),它初始化CPU、寄存器、设备控制器和内存等,接着启动操作系统。为此,该自举程序应找到磁盘上的操作系统内核,装入内存,并转到起始地址,从而开始操作系统的运行。

    自举程序通常保存在ROM中,为了避免改变自举代码需要改变ROM硬件的问题,故只在ROM中保留很小的自举装入程序,将完整功能的自举程序保存在磁盘的启动块上,启动块位于磁盘的固定位。拥有启动分区的磁盘称为启动磁盘或者系统磁盘。

    坏块

    由于磁盘有移动部件且容错能力弱,所以容易导致一个或多个扇区损坏。部分磁盘甚至从出厂时就有坏扇区。根据所使用的磁盘和控制器,对这些块有多种处理方式。

    对于简单磁盘,如电子集成驱动器(IDE)。坏扇区可手工处理,如MS-DOS的Format 命令执行逻辑格式化时便会扫描磁盘以检查坏扇区。坏扇区在FAT表上会标明,因此程序不会使用。

    对于复杂的磁盘,如小型计算机系统接口(SCSI),其控制器维护一个磁盘坏块链表。该链表在出厂前进行低级格式化时就初始化了,并在磁盘的整个使用过程中不断更新。低级格式化将一些块保留作为备用,对操作系统透明。控制器可以用备用块来逻辑地替代坏块,这种方案称为扇区备用。

    4.12 文件系统知识点总结

    磁盘结构

    引导控制块(Boot Control Block)包括系统从该分区引导操作系统所需要的信息。如果磁盘没有操作系统,那么这块的内容为空。它通常为分区的第一块。UFS称之为引导块(Boot Block); NTFS 称之为分区引导扇区(Partition Boot Sector)。

    分区控制块(Partition Control Block)包括分区详细信息,如分区的块数、块的大小、 空闲块的数量和指计、空闲FCB的数量和指针等。UPS称之为超级块(Superblock);而NTFS 称之为主控文件表(Master File Table)。

    内存结构

    内存分区表包含所有安装分区的信息。

    内存目录结构用来保存近来访问过的目录信息。对安装分区的目录,可以包括一个指向分区表的指针。

    系统范围的打开文件表,包括每个打开文件的FCB复制和其他信息。

    单个进程的打开文件表,包括一个指向系统范围内已打开文件表中合适条目和其他信息的指针。

    文件系统实现概述

    为了创建一个文件,应用程序调用逻辑文件系统。逻辑文件系统知道目录结构形式,它将分配一个新的FCB 给文件,把相应目录读入内存,用新的文件名更新该目录和FCB,并将结果写回到磁盘。图4-32显示了一个典型 的 FCB。


    图4-32  典型的FCB

    一旦文件被创建,它就能用于I/O,不过首先要打开文件。调用open将文件名传给文件系统,文件系统根据给定文件名搜索目录结构。部分目录结构通常缓存在内存中以加快目录操作。找到文件后,其FCB复制到系统范围的打开文件表。该表不但存储FCB,也有打开该文件的进程数量的条目。

    然后,单个进程的打开文件表中会增加一个条目,并通过指针将系统范围的打开文件表的条目同其他域(文件当前位置的指针和文件打开模式等)相连。调用open返回的是一个 指向单个进程的打开文件表中合适条目的指针。所以文件操作都是通过该指针进行。

    文件名不必是打开文件表的一部分,因为一旦完成对FCB在磁盘上的定位,系统就不 再使用文件名了。对于访问打开文件表的索引,UNIX称之为文件描述符(File Descriptor);而Windows 2000称之为文件句柄(File Handle)。因此,只要文件没有被关闭,所有文件操 作通过打开文件表来进行。

    当一个进程关闭文件,就删除一个相应的单个进程打开文件表的条目即目录项,系统范 围内打开文件表的打开数也会递减。当打开文件的所有用户都关闭了一个文件时,更新的文 件信息会复制到磁盘的目录结构中,系统范围的打开文件表的条目也将删除。

    在实际中,系统调用open会首先搜索系统范围的打开文件表以确定某文件是否已被其 他进程所使用。如果是,就在单个进程的打开文件表中创建一项,并指向现有系统范围的打 开文件表的相应条目。该算法在文件已打开时,能节省大量开销。

    混合索引分配的实现

    混合索引分配已在UNIX系统中釆用。在UNK SystemV的索引结点中,共设置了 13 个地址项,即iaddr(O)~iaddr(12),如图4-33所示。在BSD UNIX的索引结点中,共设置了 13个地址项,它们都把所有的地址项分成两类,即直接地址和间接地址。


    图4-33 UNIX系统的inode结构示意图

    1) 直接地址

    为了提高对文件的检索速度,在索引结点中可设置10个直接地址项,即用iaddr(O)~iaddr(9)来存放直接地址。换言之,在这里的每项中所存放的是该文件数据所在盘块的盘块号。假如每个盘块的大小为4KB,当文件不大于40KB时,便可直接从索引结点中读出该文 件的全部盘块号。

    2)  一次间接地址

    对于大、中型文件,只釆用直接地址并不现实。可再利用索引结点中的地址项iaddr(lO) 来提供一次间接地址。这种方式的实质就是一级索引分配方式。图中的一次间址块也就是索 引块,系统将分配给文件的多个盘块号记入其中。在一次间址块中可存放1024个盘块号, 因而允许文件长达4MB。

    3) 多次间接地址

    当文件长度大于4MB+40KB(—次间址与10个直接地址项)时,系统还须釆用二次间 址分配方式。这时,用地址项iaddr(11)提供二次间接地址。该方式的实质是两级索引分配方 式。系统此时是在二次间址块中记入所有一次间址块的盘号。在釆用二次间址方式时,文件 最大长度可达4GB。同理,地址项iaddr(12)作为三次间接地址,其所允许的文件最大长度可 达 4TB。



    展开全文
  • Win10 磁盘占用100%的解决方案

    万次阅读 2017-11-17 16:19:24
    Win10 磁盘占用100%(卡顿)的解决方案本文提供一种Win10系统磁盘占用100%(卡顿)问题的解决方案(亲测可行)参考配置 电脑:Thinkpad T460p(机械硬盘) 系统:Win10 家庭中文版 (版本号1709) 基本假设 电脑没有...

    Win10 磁盘占用100%(卡顿)的解决方案

    本文提供一种Win10系统磁盘占用100%(卡顿)问题的解决方案(亲测可行)

    参考配置

    • 电脑:Thinkpad T460p(机械硬盘)
    • 系统:Win10 家庭中文版 (版本号1709)

      系统

    基本假设

    • 电脑没有中毒(比如新装的Win10系统)
    • 硬盘本身没有问题

    症状

    1. 正常使用过程中,电脑经常卡顿、假死,大约数秒后恢复正常

    2. 卡顿时,通过任务管理器可以观察到磁盘利用率为100%

      磁盘占用


    原因

    安装Win10时,系统自动安装了不合适的硬盘驱动(AHCI)

    硬盘驱动查看办法

    1. 右键“此电脑”,选择“管理”

    2. 选择“计算机管理(本地)- 系统工具 - 设备管理器”

    3. 选择“IDE ATA/ATAPI 控制器”

    4. 右键下拉内容(如Intel(R) 100…),选择“属性”

    5. 选择“驱动程序”,查看“驱动程序日期”

    Win10 系统自带的驱动程序日期显示为2006年,不管这个驱动程序到底是不是2006年的,换掉它

    (下图是Win10 系统自带的驱动程序)

    更新前


    解决方案

    不要选择“更新驱动程序”,因为它会告诉你它是最新的。

    选择用驱动精灵更新驱动,即下图所示的“Intel快速存储驱动xxxx版

    安装完成后,重启电脑,问题解决

    下载驱动

    (下图是更新后的驱动程序)

    硬盘驱动更新后


    总结

    Win10 磁盘占用100%(卡顿)的问题非常普遍,网上的解决办法也是多种多样

    但是每台电脑卡顿的原因不尽相同,本文并不能确保能解决所有人遇到的问题,所以需要大家集思广益,勇于尝试

    希望大家早日摆脱Win10 卡顿的问题


    展开全文
  • 磁盘、硬盘、软盘、U盘联系与区别

    千次阅读 2018-08-13 10:30:48
    前言:  许多同学在学习有关计算机的书籍时候经常会看到这几个概念,但是...NO.1 磁盘分为两类: 软盘 和 硬盘  |-------①软盘:用来帮运数据的。 磁盘:---- |  |-------②硬盘:用来存储数据的。   ...
  • 磁盘工作原理

    万次阅读 2018-11-19 14:51:52
    大多数永久性或办永久性电脑数据都是将磁盘上的一小片金属物质磁化来实现。然后再将这些磁性图拷贝转换成原始数据,这便是磁存储的原理。 磁存储历史 在磁存储出现以前,初级电脑存储介质是1890年Herman Hollerith...
  • 一. 硬盘接口类型 1. 并行接口还是串行接口 (1) 并行接口,指的是并行传输的接口,比如有0~9十个数字,用10条传输线,那么每根线只需要传输一位数字,即可完成。 从理论上看,并行传输效率很高,但是由于线路上的...
  • 操作系统总结之磁盘管理

    千次阅读 2018-07-08 23:03:30
      磁盘存储器具有容量大、存取速度快、支持随机存取的特点,因此被广泛应用于计算机系统中。对于操作系统来说,管理好磁盘的三大要求和目标是: (1)合理有效利用磁盘:采用合理的文件存储空间分配算法,尽量...
  • Win10内嵌的磁盘管理工具 微软最新操作系统Win10的拥有了很多先进的功能,如基于触摸的界面Metro风格,Windows商店,等等。然而,与Windows 7相比,它在磁盘管理上没有太大的突破。Win10内嵌的磁盘管理器只是有如下...
  • 磁盘的使用 由于磁盘固件屏蔽了磁盘的复杂的内部结构,当前对磁盘的访问变得极其简单。我们可以将磁盘理解成为一个线性的地址空间,从0开始,最大为可寻址空间为磁盘的实际容量,单位是一个扇区(512B)。因此我们...
  • 截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都...
  •  错误:windows无法安装到这个磁盘 选中的磁盘采用GPT分区形式  解决办法:  win8/win10系统均添加快速启动功能,预装的win8/win10电脑默认都是UEFI引导和GPT硬盘,传统的引导方式为BIOS(Legace)引导和MBR硬盘...
  • linux如何mount挂载磁盘并设置开机自动mount

    万次阅读 多人点赞 2018-07-31 11:25:15
    知道大家时间都很宝贵,我直接把流程命令写下来,大家配置完即可,想研究原理的话就往下读 ...fdisk -l # 查看可挂载的磁盘 df -h # 查看已经挂载的磁盘 mkfs.ext4 /dev/vdb # 初始化磁盘 mount /dev/vdb /u01 ...
  • lz自从上win10以来经常会出现这种情况:磁盘突然占用100%然后开始出现假死现象,电脑卡住,点击任何软件没反应,播放的歌曲卡住,主机硬盘灯长亮不闪,过了数秒或者数十秒又恢复正常像是没发生一样… 刚开始我也是开...
  • Vmware添加磁盘的方法:扩展磁盘

    万次阅读 多人点赞 2017-12-23 05:56:46
    这篇文章介绍了一下如何在Vmare下添加或扩展磁盘并使之有效。场景创建Linux时分配磁盘空间随着使用的增加,使用率逐渐升高,此时需要在添加或者扩展一下磁盘
  • linux下磁盘查看和分区

    万次阅读 2018-09-14 16:01:31
    9月25日任务 ...4.3/4.4 磁盘分区 df命令 df输出磁盘文件系统使用情况: [root@centos ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda3 11208704 7214792 3993912 65% / devtmpfs 496920...
  • 基本磁盘基本磁盘使用主分区、扩展分区和逻辑驱动器组织数据。格式化的分区也称为卷(术语“卷”和“分区”通常互换使用)。在此 Windows 版本中,基本磁盘可以有四个主分区或三个主分区和一个扩展分区。扩展分区...
  • 为什么需要磁盘阵列如何增加磁盘的存取(access)速度,如何防止数据因磁盘的故障而失落及如何有效的利用磁盘空间,一直是电脑专业人员和用户的困扰;而大容量磁盘的价格非常昂贵,对用户形成很大的负担。磁盘阵列技术的...
  • linux查看磁盘使用情况命令

    万次阅读 多人点赞 2017-11-30 11:34:44
    第一:统一磁盘整体情况,包括磁盘大小,已使用,可用1.查看当前目录命令df -h结果: 统一每个目录下磁盘的整体情况2.查看指定目录在命令后直接放目录名,比如查看“usr”目录使用情况:df -h /usr/结果: 统一...
  • Linux中磁盘的管理(格式化、分区、挂载)

    万次阅读 多人点赞 2018-12-12 02:03:47
    Linux磁盘的管理(分区、格式化、挂载) 一、认识磁盘 1、什么是磁盘磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取...
1 2 3 4 5 ... 20
收藏数 1,172,301
精华内容 468,920
关键字:

磁盘