保护模式内容太多,一时半会消化不完,慢慢体会清楚了再继续写吧。仍是先把读写软盘搞清楚吧,今天弄清楚磁盘的物理结构。工具
涂上磁性材料、用来存储数据的圆形盘片,就叫磁盘片,简称盘片,也叫碟片。为了保护盘片,防止盘片表面被划伤,通常都把盘片装到一个密封盒子里,这个装有盘片的密封盒子就叫磁盘(Disk)。若是盘片是软的(塑料的),就叫软盘(Floppy Disk)。若是盘片是硬的(铝合金的或玻璃的),就叫硬盘(Hard Disk)。通常软盘只有一张盘片,硬盘能够有一张或多张盘片。盘片分正反两面,每一面即为一个盘面。全部盘面都涂有磁性材料,这层磁性材料就叫磁层,磁层就是存储数据的介质。所谓磁层存储数据,说白了,就是那些磁性材料以特殊方式被磁化成不一样的状态。spa
电脑经过磁盘驱动器(Disk Drive)从磁盘取得数据,即为读磁盘(Read Disk),或把数据存储到磁盘,即为写磁盘(Write Disk)。软盘的驱动器叫软驱(Floppy Disk Drive,简写 FDD),软盘和软驱是分离设计的。硬盘的驱动器叫硬驱(Hard Disk Drive,简写HDD),硬驱和硬盘是一体设计的,被封装在一块儿,因此硬驱就是硬盘,硬盘就是硬驱,不管是硬盘仍是硬驱都是指两者结合在一块儿所造成的设备。设计
磁盘驱动器经过一个针状的磁性部件接触盘片的磁层来读写数据,这个接触盘片的磁层来读写数据的磁性部件就叫磁头(Head)。磁盘存储数据的过程就是磁头把电信号转化为磁信息,再把盘片上的那些磁性材料以特殊方式磁化成一个个磁化单元的过程,一个磁性单元存储一个位(bit,简称 b)的数据,位是计算机内部数据储存的最小单位。每个盘面都有一个磁头对应,磁盘上全部磁头共用同一个传动轴。磁头数量和实际存储数据的盘面数量是相等的。it
下面是一个硬盘的拆开图,只标出了程序设计涉及的部件:程序设计
实际操做的时候,盘片高速转动,磁头保持在一个位置不动,在磁层上进行磁化操做,数据就被记录在磁层上。磁头会在盘片表面上画出一个与盘片同心的圆形轨迹,这个圆形轨迹就叫磁道(Track),磁盘上的信息就是沿着磁道存放的。若是这个磁道存满了,磁头就会移动到下一个位置,继续造成下一个磁道。相邻磁道之间并非紧挨着的,由于磁化单元距离太近时磁性会相互影响,另外磁头的移动也有精密度的限制。很明显,越接近圆心,圆就越小,即外圈的磁道周长比内圈的磁道要长,包含的磁性单元也多。磁道是从外往里、从 0 开始依次编号的,即盘面边缘最外圈的磁道是第 0 号磁道。百度
因为磁盘上全部的磁头共用同一个传动轴,全部磁头是同时移动的,这就致使全部盘面的磁道划分是彻底一致的。全部盘片上同一长度半径的位置上的磁道组成的一个圆柱面叫柱面(Cylinder)。磁道是一个平面概念,每一个磁道只在一个盘面的某个圆圈上;柱面是一个立体概念,组成柱面的若干个磁道分布在各个盘面上(每一个盘面一个,而且在同一个半径位置上)。磁道是物理上真实存在的,柱面是虚拟的、是想象的。柱面的数量和任一个盘面的磁道的数量是相等的,而且和磁道编号方式相同,也是从外往里、从 0 开始编号,即磁盘边缘的最外圈的柱面是第 0 号柱面。柱面是一个难懂的概念,看图比较形象(百度扒来的):程序
一圈磁道能记录不少信息,若是按照一整圈磁道为单位读写的话,数据量太大;而若是按照一个磁性单元为单位读写的话,又过小了。所以把每一个磁道都分为若干个弧段。这样就能够一个弧段一个弧段的读写数据,这些弧段就叫扇区(Sector)。每一个磁道上的扇区编号都从 1 开始(和柱面、磁头从 0 开始不一样)。磁盘驱动器读写磁盘的时候,以扇区为单位。软盘的全部磁道,无论外圈的、内圈的,都是等分红一样数量的扇区;而硬盘为了得到了更多的存储空间,会把周长较长的外圈磁道划分出较多的扇区,而周长较短的内圈磁道划分出较少的扇区。im
下面是磁道、扇区示意图:
技术
磁头和盘片是制造的时候就装好的,即磁头数和每柱面磁道数固定了。磁盘在出厂前,生产商将空白的磁盘划分出柱面和扇区,并将扇区编号,即所谓低级格式化(实际上低级格式化还包括其余内容,用户也能够用特殊工具再次低级格式化)。用户还能够进行高级格式化,即清空磁盘,从新划分柱面和扇区,并将扇区编号。数据
显然,能够用柱面号 - 磁头号 - 扇区号(即 CHS 编号)来惟必定位磁盘上每个区域,或者说 CHS 与磁盘上每个扇区有一一对应关系,这种 CHS 定位的扇区称为“绝对扇区”,又叫“物理磁盘地址”(扇区是磁盘驱动器的最小读写单位),这种 CHS 寻址的方式称“绝对扇区表示法“。
随着磁盘技术的进步,出现了更加简便的 LBA 寻址模式(Logical Block Address),即逻辑扇区寻址模式(也叫线性寻址),用来取代 CHS 寻址模式。LBA 寻址方式把磁盘上全部物理扇区的 CHS 编号经过必定的规则转换成一个线性的编号(说白了就是从 0 开始的一个数字)。在访问磁盘时,由磁盘内部的控制器把逻辑地址转换为实际的物理地址来定位。
设 NH 为磁头数,NS 为每磁道扇区数,C、H、S 表示柱面号、磁头号和扇区号,LBA 表示逻辑扇区号,div 表明整除计算,mod 表明求余计算,则 LBA 与 CHS 之间的转换公式以下:
LBA = ( NH × C + H ) × NS + S - 1;
C = ( LBA div NS ) div NH;
H = ( LBA div NS ) mod NH;
S = ( LBA mod NS ) + 1