暗网下载 项目1 认识硬盘物理结构
首先来看下硬盘物理结构,硬盘物理上总体是由盘片、机械手臂、磁头以及主轴等构成的。在盘片逻辑划分方面,又被分为磁道、扇区,比如像下面这张图这样。 盘片磁道、扇区磁道,当硬盘盘片进行旋转的时候,要是磁头维持在一个位置上,那么磁头就会在盘片表面划出一个圆形的轨迹,这些圆形轨迹就被称作磁道。以盘片中心作为圆心,依此能够划分出许多磁道来,这些磁道用肉眼根本是看不到的,因为它们仅仅是盘面上以特殊方式磁化了的一些磁化区域,硬盘上面的信息就是沿着这样的轨道存放的,盘片上的磁道由外向内依次从“0”开始进行编号。 柱面,因为硬盘是可以由好多盘片组成的,不同盘片的相同磁道就组成了柱面,就如同图1所展示的那样。 磁头,假定有由N个盘片组成的硬盘,那么就会有2N个盘面,一个盘片有2面,如此磁头也就有2N个,也就是每个盘面有一个磁头。 扇区,早期的硬盘盘片的盘面从圆心开始向外呈放射状把磁道切割成等分的弧段,这些弧段就是硬盘的扇区,就像图2那样。每个扇区一般规定大小是512byte,这里大家应该会比较感到疑惑,外圈周长明显比内圈要长,怎么可能每个扇区都是512byte?其实答案是早期硬盘外圈存储比内圈存储密度低一些,所以外圈很长但仍然只能存储512byte,所以要是我们知道了柱面数磁道数Cylinders、磁头数Heads、扇区数Sectors,基本上硬盘的容量我们是能够计算出来的,硬盘总容量就等于Cylinders乘以Heads乘以Sectors乘以512byte。不过由于早期硬盘外圈密度低,致使盘片利用率不高,现在的硬盘盘片则采用内外存储密度一致的方式,每个磁道都被划分成以512byte大小的弧段,这样也就造成了内外磁道上扇区数量会不同,外圈上的扇区数要比内圈扇区数多。 硬盘寻址方式,硬盘存取、读取数据,首先要做的就是寻址,也就是定位到数据所在的物理地址,在硬盘上就要找到对应的柱面、磁头以及对应的扇区,那么究竟怎么寻址?有一种方式是CHS和LBACH暗网下载,CHS模式呢,它也被叫做3D模式,是硬盘最先采用的寻址方式,这是在硬盘容量比较小的情况下产生的。硬盘的C/H/S 3D参数能够算出硬盘的容量,与此同时还能确定数据所在的准确位置。这是由于扇区的三维物理地址跟硬盘上的物理扇区是一个对应一个的,也就是三维物理地址能够完全确定硬盘上的物理扇区。三维物理地址通常按照C/H/S的顺序来书写,要是C/H/S是0/1/1,那么第一个数字0指的是0柱面,第二个数字1指的是1磁头,也就是盘面,第三个数字1指的是1扇区,这表明该数据处在硬盘1盘面上的0磁道1扇区。现在定位已经完成了,硬盘内部的参数跟主板BIOS之间进行协议,正确地发出寻址信号,进而准确地道位数据位置。早期的硬盘在一个磁道上划分63个扇区,物理磁头最多有16个,这里说的是8个盘片,盘片多了硬盘就真得加厚了。采用8位寻址方式,8位二进制位的最大值是256,也就是0到255,它能够表示磁头数,而扇区只有63个,也就是1到63,只需要其中6个二进制位就能够表示,剩下2位用来表示柱面,柱面数用10位来表达,也就是8加2,能达到1024个柱面,也就是0到1023,所以总扇区数是1024乘以16乘以63。前面提到一个扇区大小是512byte,这也就意味着,如果以C/H/S寻址模式来寻址,那么IDE硬盘的最大容量只能是1024乘以16乘以63乘以512B,大概是500MB。可以想一想,在8位寻址模式下,实际上可以寻址的硬盘最大容量是1024乘以256乘以63乘以512B等于8G,那为什么CHS模式硬盘只支持到500MB呢?理由十分单纯,咱们的硬盘盘片绝无可能使得128片盘片堆叠在一起呀,那将会有多厚呢??倘若采用28位寻址方式,那便能够寻址137G,然而盘片不可能持续堆叠下去。LBA(Logical Block Addressing),常去买硬盘的人均知晓,当下硬盘经常提及单碟、双碟,实际上其意思是说硬盘盘片仅有1个或者2个,并且都仅用一面,单碟便是一个磁头罢了,可是硬盘容量却是几百G,而且硬盘柱面往往大于1024个柱面,CHS无法将这些硬盘容量寻址利用殆尽。另外,因老硬盘的扇区划分方式对硬盘利用率不高,所以出现了如今的等密度盘,外圈的扇区数要比内圈多,原来的3D寻址方式无法适应这般情况,故而出现了新的寻址方式LBA,这是一种以扇区为单位进行的线性寻址方式,即从最外圈柱面0起始,依次把扇区号编为0、1等等。举个例子,假定硬盘有1024个柱面,由于是等密度硬盘,柱面0(最外圈)假设有128个扇区,依次编号为0 - 127,柱面1有120个扇区,则依次编号为127 - 246,依次最内圈柱面127仅有扇区64个,则编号至末尾。所以要定位到硬盘某个位置,只需给出LBA数就行,这便是逻辑数。在LBA模式下,为了留存原先CHS时的概念,也可设置柱面、磁头、扇区等参数,但是它们并非实际硬盘的物理参数,只是为了计算便利而生出的一个概念,1023之前的柱面号都一一物理对应,而1023以后的所有柱面号都记录成1023,磁头最大数可设为255,而扇区数一般是每磁道63个,硬盘控制器会把由柱面、磁头、扇区等参数确定的地址转换为LBA数。在此我们再次明确两个概念:物理扇区号:一般我们把CHS模式下的扇区号称作物理扇区号,扇区编号起始位置是1;逻辑扇区号:LBA下的编号,扇区编号是从0起始。CHS模式转换到逻辑扇区号LBA计算公式:LBA(逻辑扇区号) = 磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1。例如:CHS = 0 / 0 / 1,则按照公式LBA = 255 × 63 × 0 + 63 × 0 + 1 – 1 = 0,也就是说物理0柱面0磁头1扇区,是逻辑0扇区。硬盘分区,我们清楚,一般而言使用硬盘,我们首先会对硬盘进行分区,接着对分区运用某种文件系统格式(NTFS、FAT、ext2 / ext3)进行分区格式化,之后才能正常使用。那么分区究竟是怎么回事呢?平日里我们常常会见到的,在windows当中被提及的,那所谓的c、d、e盘,究竟是凭借怎样的方式划分出来的呢?实际上,于安装windows系统阶段,通常来讲我们仅仅需填明每个分区的大小,没办法看出分区进程的实际工作状况,然而我们能够从linux系统分区进程反倒能够反映底层实际分区情形。柱面是分区的最小单元,也就是说分区是以某一个柱面号起始一路到某一个柱面号终止的。像下图所呈现,柱面1至200我们可划分成一个区,柱面201至500再划分成一个区,501至1000再划分为一个区,依此类推。大家能够瞧见,柱面0未处于任何分区之中,这是为什么呢?这里说一说,前面讲硬盘从外圈也就是柱面零到内圈扇区是依次编号的,表面上各个扇区好像没什么不同,然而这里硬盘柱面零的第一个扇区也就是逻辑扇区零,用CHS表示应该是零/零/一,却是最为重要的,这是因为硬盘的第一个扇区记录了整个硬盘的关键信息,第一个扇区也就是五百一十二字节主要记录了两部分内容,其一为MBR也就是主引导记录,主引导程序就放置于此,主引导程序是引导操作系统的一个系统,不过这一部分只占四百四十六字节。其二是DPT也就是硬盘分区表,硬盘分区表也在这儿,分区表是用于记录硬盘分区状况的,比如c盘是第一至二百个柱面,d盘是二百零一至五百个柱面,分区表总共仅占六十四字节,可以明白,分区实际上挺简便的,就是在这个表里面改动一下记录就实现重新分区了,但是由于仅有六十四字节,而一条记录要占用十六字节,这个分区表最多只能记录四个分区信息,为了能够继续划分出多数分区,于是引入了扩展分区这个概念,也就是说,在这四个分区里,可以运用其中一条记录来记录扩展分区的信息,接着在扩展分区中再持续划分逻辑分区,而逻辑分区的分区记录则记录在扩展分区的第一个扇区中,如此便能够像链表那样划分出许多分区来。但要留意,一个分区表中可以有一至四条主分区,然而最多只能有一个扩展分区。作一示例,主分区可以是P1:一至二百,扩展分区P2:二至一千四百,扩展分区起始的第一个扇区是能够用来记录扩展分区里划分出来的逻辑分区的。分区表链子分区表之间究竟是如何予以关联的,详细地讲述一下,分区表是一个单向链表,第一个分区表,也就是处在硬盘第一个扇区中的DPT,可以有一项用于记录扩展分区的起始位置柱面,类似于指针那种概念,指向扩展分区,也就是图三,依据这项记录我们能够找到扩展分区的某柱面零磁头一扇区,也就是CHS,而这个扇区里又存放着第二个分区表,第二个分区表第一项记录通常表述的是当前身处的逻辑分区的起始以及终止柱面,第二项记录表述的是下一个逻辑分区分所在的零磁头一扇区,也就是CHS,第三以及第四项记录不存放任何信息,也就是图四。请看下面这个图,主引导记录以及分区表所在的是硬盘第一个分区,基本分区一、基本分二、基本分割区三皆是主分区、扩展内有二个逻辑分区,每个逻辑分区的第一个扇区全是分区表,至于引导扇区也就是DBR,在系统启动那一节中将会提及。系统启动,之前说起MBR中所安装的引导加载程序,它的作用究竟是什么呢?①提供开机菜单选项,其能够供用户去选择启动哪一个操作系统,此为多重引导功能。②加载操作系统内核,每个操作系统均有自身的内核,需引导程序来予以加载。③转交给其他引导程序,能够把工作移交给其他引导程序去开展上述操作。其实引导加载程序除了能够安装在MBR中之外,还能够直接安装在每个分区的引导扇区(DBR)中,留意下,每个分区(主分区、逻辑分区)都存在一个自己的启动扇区,专门用以安装引导加载程序,像上图标3结构图那般。系统启动过程先是BIOS启动后,读取硬盘第一个扇区MBR中的引导加载程序(有可能是windows或者linux的grub),MBR中的引导程序提供开机菜单,这儿可以选择1)直接加载windows内核2)将工作转交给windows分区内的引导扇区中的加载程序,使其自行去加载内核3)转交给linux分区内引导扇区,让其去加载linux 。再依据用户所选选项和引导加载程序中记录的分区,到分区表找对应的分区柱面号等分区信息,启动内核或者分区加载程序。Window安装时默认会自动把MBR和windows所在分区的引导扇区都装上引导程序,而不会给用户提供任何选项以供选择,所以若之前装过其他操作系统,之后再另外装一个windows,就会把公用的MBR覆盖掉,这样一来,原来的操作系统便无法启动了。要是先装windows,随后装linux,linux会覆盖MBR,并让用户选择是否把windows等其他操作系统的启动项添加进来,要是选择了添加进来,那么开机时就会有两个选项供用户进行选择了。后记是这儿讨论的全部是与硬盘相关联的东西,光盘不在此范畴内,并且光盘的磁道并非从外圈到内圈编号,而是从内圈开始编号,这点要注意,硬盘第一个扇区是由MBR和分区表占据,因而0柱面0磁头上剩下的62个扇区通常会空出来予以保留(这部分保留称作隐藏扇区,因为操作系统读取不到这部分扇区,这部分扇区是提供给BIOS读取的),而系统分区则从0柱面1磁头1扇区开始,折算成LBA=255×63×0 + 63×1 + 1 –1 = 63,即从LBA 63号扇区开始分区。不过查阅有的资料提到另外一种说法,就是有的硬盘可能0柱面全部空下来,如果确实如此,那浪费可就真的大了。对于扩展分区的分区表我们清楚也是由扩展分区的第一个扇区开始写,而且是写到每个逻辑驱动器的第一个扇区,同样,扩展分区内的第一个扇区所在的磁道剩余的扇区也会全部空余出来,这些保留的扇区操作系统同样无法读取,留意在扩展分区的第一个扇区里面是没有引导加载记录的。引导加载记录都是放置在隐藏扇区后面的。可以看图3,图4。
鲁ICP备18019460号-4
我要评论