admin管理员组

文章数量:1530897

2024年1月10日发(作者:)

硬盘是此刻运算机上最经常使用的存储器之一。咱们都明白,运算机之因此神奇,是因为它具有高速分析处置数据的能力。而这些数据都以文件的形式存储在硬盘里。只是,运算机可不像人那么伶俐。在读取相应的文件时,你必需要给出相应的规那么。这确实是分区概念。

分区从实质上说确实是对硬盘的一种格式化。当咱们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一样简称为MBR)和引导记录备份的寄存位置。而关于文件系统和其他操作系统治理硬盘所需要的信息那么是通过以后的高级格式化,即 Format命令来实现。面、磁道和扇区硬盘分区后,将会被划分为面(Side)、磁道(Track)和扇区(Sector)。需要注意的是,这些只是个虚拟的概念,并非是真正在硬盘上划轨道。

先从面提及,硬盘一样是由一片或几片圆形薄膜叠加而成。咱们所说,每一个圆形薄膜都有两个“面”,这两个面都是用来存储数据的。依照面的多少,依次称为0 面、1面、2面……由于每一个面都专有一个读写磁头,也经常使用0头(head)、1头……称之。依照硬盘容量和规格的不同,硬盘面数(或头数)也不必然相同,少的只有2面,多的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(Cylinder)。

上面咱们提到了磁道的概念。那么究竟何为磁道呢?由于磁盘是旋转的,那么持续写入的数据是排列在一个圆周上的。咱们称如此的圆周为一个磁道。若是读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。依照硬盘规格的不同,磁道数能够从几百到数千不等;一个磁道上能够容纳数KB 的数据,而主机读写时往往并非

需要一次读写那么多,于是,磁道又被划分成假设干段,每段称为一个扇区。一个扇区一样寄存512字节的数据。扇区也需要编号,同一磁道中的扇区,别离称为1扇区,2扇区……

运算机对硬盘的读写,处于效率的考虑,是以扇区为大体单位的。即便运算机只需要硬盘上存储的某个字节,也必需一次把那个字节所在的扇区中的512字节全数读入内存,再利用所需的那个字节。只是,在上文中咱们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,尽管磁头能够依照某个磁道的应有半径来对准那个磁道,但如何才能在首尾相连的一圈扇区中找出所需要的某一扇区呢?原先,每一个扇区并非仅仅由512个字节组成的,在这些由运算机存取的数据的前、后两头,都还有一些特定的数据,这些数据组成了扇区的界限标志,标志中含有扇区的编号和其他信息。运算机就凭借着这些标志来识别扇区。硬盘的数据结构在上文中,咱们谈了数据在硬盘中的存储的一样原理。为了能更深切地了解硬盘,咱们还必需对硬盘的数据结构有个简单的了解。硬盘上的数据依照其不同的特点和作用大致可分为5部份:MBR区、DBR区、FAT区、DIR区和DATA区。

咱们来别离介绍一下:

1、MBR区

MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。只是,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了 DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的终止标志。那个整体组成了硬盘的主引导扇区。

主引导记录中包括了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的要紧作用是检查分区表是不是正确而且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将操纵权交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依托任何操作系统,而且硬盘引导程序也是能够改变的,从而实现多系总共存。

下面,咱们以一个实例让大伙儿更直观地来了解主引导记录:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在那个地址咱们能够看到,最前面的“80”是一个分区的激活标志,表示系统可引导;“01 01 00”表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;“0B”表示分区的系统类型是FAT32,其他比较经常使用的有 04(FAT16)、07(NTFS);“FE BF FC”表示分区终止的磁头号为254,分区终止的扇区号为63、分区终止的柱面号为764;“3F 00 00 00”表示首扇区的相对扇区号为63;“7E 86 BB 00”表示总扇区数为12289622。

2、DBR区

DBR(Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇区,是操作系统能够直接访问的第一个扇区,它包括一个引导程序和一个被称为

BPB(Bios Parameter Block)的本分区参数记录表。引导程序的要紧任务是当MBR将系统操纵权交给它时,判定本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msdos.sys)。若是确信存在,就把它读入内存,并把操纵权交给该文件。BPB参数块记录着本分区的起始扇区、终止扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分派单元的大小等重要参数。DBR 是由高级格式化程序(即Format.com等程序)所产生的。

3、FAT区

在DBR以后的是咱们比较熟悉的FAT(File Allocation Table文件分派表)区。在说明文件分派表的概念之前,咱们先来谈谈簇(Cluster)的概念。文件占用磁盘空间时,大体单位不是字节而是簇。一样情形下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64…… 同一个文件的数据并非必然完整地寄存在磁盘的一个持续的区域内,而往往会分成假设干段,像一条链子一样寄存。这种存储方式称为文件的链式存储。由于硬盘上保留着段与段之间的连接信息(即FAT),操作系统在读取文件时,老是能够准确地找到各段的位置并正确读出。为了实现文件的链式存储,硬盘上必需准确地记录哪些簇已经被文件占用,还必需为每一个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,那么要指明本簇无后继簇。这些都是由FAT表来保留的,表中有很多表项,每项记录一个簇的信息。由于FAT关于文件治理的重要性,因此FAT有一个备份,即在原FAT的后面再建一个一样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果是磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就可不能再利用那个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要寄存簇号。FAT的格式有多种,最为常见的是FAT16和FAT32。

4、DIR区

DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)以后,记录着根目录下每一个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统依照DIR中的起始单元,结合FAT表就能够够明白文件在硬盘中的具体位置和大小了。

5、数据(DATA)区

数据区是真正意义上的数据存储的地址,位于DIR区以后,占据硬盘上的大部份数据空间。

一、硬盘的物理结构:

硬盘存储数据是依照电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片和盘片两面所安装的磁头和相应的操纵电路组成(图 1),其中盘片和磁头密封在无尘的金属壳中。

硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头那么在电路操纵下径向移动到指定位置然后将数据存储或读掏出来。当系统向硬盘写入数据时,磁头中 “写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能维持,如此数据就存储下来了;当系统从硬盘中读数据时,磁头通过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生转变,经相关电路处置后还原成数据。因此只要能将盘片表面处理得更滑腻、磁头设计得更周密和尽可能提高盘片旋转速度,就能够造出容量更大、读写数据速度更快的硬盘。这是因为盘片表面处置越平、转速越快就能够越使磁头离盘片表面越近,提高读、写灵敏度和速度;磁头设计越小越周密就能够使磁头在盘片上占用空间越小,使磁头在一张盘片上成立更多的磁道以存储更多的数据。

二、硬盘的逻辑结构:

硬盘由很多盘片(platter)组成,每一个盘片的每一个面都有一个读写磁头。若是有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2 开始编号。每一个盘片被划分成假设干个同心圆磁道(逻辑上的,是不可见的。)每一个盘片的划分规那么一般是一样的。如此每一个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每一个盘片上的每一个磁道又被划分为几十个

扇区(Sector),通常的容量是512byte,并依照必然规那么编号为1、2、3……形成Cylinders×Heads×Sector个扇区。这三个参数即是硬盘的物理参数。咱们下面的很多实践需要深刻明白得这三个参数的意义。

硬盘存储数据是依照电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片和盘片两面所安装的磁头和相应的操纵电路组成(图 1),其中盘片和磁头密封在无尘的金属壳中。

三、磁盘引导原理:

3.1 MBR(master boot record)扇区:

运算机在按下power键以后,开始执行主板bios程序。进行完一系列检测和配置以后。开始按bios中设定的系统引导顺序引导系统。假定此刻是硬盘。Bios执行完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行存储在哪里的程序呢。其实,称为mbr的一段代码起着举足轻重的作用。 MBR(master boot record),即主引导记录,有时也称主引导扇区。位于整个硬盘的0柱面0磁头1扇区(能够看做是硬盘的第一个扇区),bios在执行自己固有的程序以后就会jump到mbr中的第一条指令。将系统的操纵权交由mbr来执行。在总共512byte的主引导记录中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是分区有效终止标志。

MBR不随操作系统的不同而不同,意即不同的操作系统可能会存在相同的MBR,即便不同,MBR也可不能夹带操作系统的性质。具有公共引导的特性。

咱们来分析一段mbr。下面是用winhex查看的一块希捷120GB硬盘的mbr。

MBR扇区代码

你的硬盘的MBR引导代码可能并非如此。只是即便不同,所执行的功能大体是一样的。那个地址找wowocock关于磁盘mbr的反编译,已加了详细的注释,感爱好能够细细研究一下。

咱们看DPT部份。操作系统为了便于用户对磁盘的治理。加入了磁盘分区的概念。即将一块磁盘逻辑划分为几块。磁盘分区数量的多少只受限于C~Z的英文字母的数量,在上图DPT共64个字节中如何表示多个分区的属性呢?microsoft通过链接的方式解决了那个问题。在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。也确实是

说,第一个分区表项描述一个分区的属性,一样为大体分区。第二个分区表项描述除大体分区外的其余空间,一样而言,确实是咱们所说的扩展分区。这部份的大体说明见表1。

DPT代码分析

注:上表中的超过1字节的数据都以实际数据显示,确实是按高位到地位的方式显示。存储时是按低位到高位存储的。二者表现不同,请认真看清楚。以后显现的表,图均同。

也能够在winhex中看到这些参数的意义:

说明: 每一个分区表项占用16个字节,假定偏移地址从0开始。如图3的分区表项3。分区表项4同分区表项3。

1、0H偏移为活动分区是不是标志,只能选00H和80H。80H为活动,00H为非活动。其余值对microsoft而言为非法值。

2、从头说明一下(那个超级重要):大于1个字节的数被以低字节在前的存储格式格式(little endian format)或称反字节顺序保留下来。低字节在前的格式是一种保留数的方式,如此,最低位的字节最先出此刻十六进制数符号中。例如,相对扇区数字段的值 0x3F000000的低字节在前表示为0x0000003F。那个低字节在前的格式数的十进制数为63。

3、系统在分区时,各分区都不许诺跨柱面,即均以柱面为单位,这确实是通常所说的分区粒度。有时候咱们分区是输入分区的大小为7000M,分出来却是6997M,确实是那个缘故。偏移2H和偏移6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇区数的二进制表示。其高两位做柱面数10位中的高两位,偏移7H组成的8位做柱面数10位中的低8位。由此可知,事实上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区从1开始编号,因此最多只能表示1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。即通常的8.4GB(事实上应该是7.8GB左右)限制。事实上磁头数通常只用到255个(由汇编语言的寻址寄放器决定),即便把这3个字节按线性寻址,仍然力不从心。在后来的操作系统中,超过8.4GB的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH~偏移FH共4个字节32位线性扇区地址来表示分区所占用的扇区总数。可知通过4个字节能够表示2^32个扇区,即2TB=2048GB,目前关于大多数运算机而言,这已是个天文数字了。在未超过 8.4GB的分区上,C/H/S的表示方式和线性扇区的表示方式所表示的分区大小是一致的。也确实是说,两种表示方式是和谐的。即便不和谐,也以线性寻址为准。(可能在某些系统中会提示犯错)。超过8.4GB的分区终止C/H/S一样填充为FEH FFH FFH。即C/H/S所能表示的最大值。有时候也会用柱面对1024的模来填充。只是这几个字节是什么其实都无关紧要了。

尽管此刻的系统均采纳线性寻址的方式来处置分区的大小。但不可跨柱面的原那么仍然没变。本分区的扇区总数加上与前一分区之间的保留扇区数量仍然必需是柱面容量的整数倍。(保留扇区中的第一个扇区确实是寄存分区表的MBR或虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。若是是第一个分区,保留扇区是本分区前的所有扇区。

附:分区表类型标志如图4

3.2 扩展分区

扩展分区中的每一个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot

Record, EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包括扩展分区中每一个逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一样位于相对扇区32或63。可是,

若是磁盘上没有扩展分区,那么就可不能有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。第二项指向下一个逻辑驱动器的EBR。若是不存在进一步的逻辑驱动器,第二项就可不能利用,而且被记录成一系列零。若是有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永久都可不能被利用。

通过一幅4分区的磁盘结构图能够看到磁盘的大致组织形式。如图5

关于扩展分区,如图6所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的不同。

除扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每一个逻辑驱动器中都是重复的:第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的EBR。最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个项到第四个项被利用。

扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位移的字节数。总扇区数字段中的数是指组成该逻辑驱动器的扇区数量。总扇区数字段的值等于从扩展分区表项所概念的引导扇区到逻辑驱动器末尾的扇区数。

有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?咱们前面说到,分区是以1柱面的容量为分区粒度的,那么若是磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间确实是剩余空间了,这部份空间并非参与分区,因此一样无法利用。照道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,什么缘故会有不够一个柱面的空间呢。在我的明白得看来,本来此刻的磁盘为了更大的利用空间,一样在物理上并非是依照外围的扇区大于里圈的扇区这种治理方式,只是为了与操作系统兼容而抽象出来CHS。可能其实际空间容量不必然正好为整数个柱面的容量。

本文标签: 扇区硬盘分区引导逻辑