早期的硬盘管理工作中,设置交叉因子需要用户自己完成。用BIOS中的低级格式化程序对硬盘进行低级格式化时,就需要指定交叉因子,有时还需要设置几种不同的值来比较其性能,而后确定一个比较好的值,以期硬盘的性能较好。现在的硬盘BIOS已经自己解决这个问题,所以,一般低级格式化程序不再提供这一选项设置。
系统将文件存储到磁盘上时,按柱面、磁头、扇区的方式进行,即最先是第1磁道的第一磁头下(也就是第1盘面的第一磁道)的所有扇区,然后,是同一柱面的下一磁头,……,一个柱面存储满后就推进到下一个柱面,直到把文件内容全部写入磁盘。系统也以相同的顺序读出数据。读出数据时通过告诉磁盘控制器要读出扇区所在的柱面号、磁头号和扇区号(物理地址的三个组成部分)进行。磁盘控制器则直接使磁头部件步进到相应的柱面,选通相应的磁头,等待要求的扇区移动到磁头下。在扇区到来时,磁盘控制器读出每个扇区的头标,把这些头标中的地址信息与期待检出的磁头和柱面号做比较(即寻道),然后,寻找要求的扇区号。待磁盘控制器找到该扇区头标时,根据其任务是写扇区还是读扇区,来决定是转换写电路,还是读出数据和尾部记录。找到扇区后,磁盘控制器必须在继续寻找下一个扇区之前对该扇区的信息进行后处理。如果是读数据,控制器计算此数据的ECC码,然后,把ECC码与已记录的ECC码相比较。如果是写数据,控制器计算出此数据的ECC码,与数据一起存储。在控制器对此扇区中的数据进行必要处理期间,磁盘继续旋转。由于对信息的后处理需要耗费一定的时间,在这段时间内,磁盘已转了相当的角度。
交叉因子的确定是一个系统级的问题。一个特定硬盘驱动器的交叉因子取决于:磁盘控制器的速度、主板的时钟速度、与控制器相连的输出总线的操作速度等。如果磁盘的交叉因子值太高,就需多花一些时间等待数据在磁盘上存入和读出。如果交叉因子值太低,就会大大降低磁盘性能。
前面已经述及,系统在磁盘上写入信息时,写满一个磁道后转到同一柱面的下一个磁头,当柱面写满时,再转向下一柱面。从同一柱面的一个磁道到另一个磁道,从一个柱面转到下一个柱面,每一个转换都需要时间,在此期间磁盘始终保持旋转,这就会带来一个问题:假定系统刚刚结束对一个磁道前一个扇区的写入,并且已经设置了最佳交叉因子比值,现在准备在下一磁道的第一扇区写入,这时,必须等到磁头转换好,让磁头部件重新准备定位在下一道上。如果这种操作占用的时间超过了一点,尽管是交叉存取,磁头仍会延迟到达。这个问题的解决办法是以原先磁道所在位置为基准,把新的磁道上全部扇区号移动约一个或几个扇区位置,这就是磁头扭斜。磁头扭斜可以理解为柱面与柱面之间的交叉因子,已由生产厂设置好,用户一般不用去改变它。磁头扭斜的更改比较困难,但是,它们只在文件很长、超过磁道结尾进行读出和写入时才发挥作用,所以,扭斜设置不正确所带来的时间损失比采用不正确的扇区交叉因子值带来的损失要小得多。交叉因子和磁头扭斜可用专用工具软件来测试和更改。更具体的内容这里就不再详述,毕竟现在很多用户都没有见过这些参数。
扇区号存储在扇区头标中,扇区交叉因子和磁头扭斜的信息也存放在这里。最初,硬盘低级格式化程序只是行使有关磁盘控制器的专门职能来完成设置任务。由于这个过程可能破坏低级格式化的磁道上的全部数据,也极少采用。
扇区交叉因子由写入到扇区头标中的数字设定,所以,每个磁道可以有自己的交叉因子。在大多数驱动器中,所有磁道都有相同的交叉因子。但有时因为操作上的原因,也可能导致各磁道有不同的扇区交叉因子。如在交叉因子重置程序工作时,由于断电或人为中断,就会造成一些磁道的交叉因子发生了改变,而另一些磁道的交叉因子没有改变。这种不一致性对计算机不会产生不利影响,只是有最佳交叉因子的磁道要比其他磁道的工作速度更快。
1.3 硬盘的逻辑结构(3)
1.4 硬盘的容量
硬盘的容量由盘面数(磁头数)、柱面数和扇区数决定,其计算公式为:
硬盘容量=盘面数×柱面数×扇区数×512字节
关于硬盘容量的大小,经常有人感到迷惑,为什么同一块硬盘,有时显示40GB,有时却只有37GB,这主要是表示方法不标准造成的,如1MB到底代表1 000 000字节还是代表1 048 576字节。有些软件把1 000 000字节作为1MB,如DM等,硬盘上标称容量一般也按1MB=1000000字节计算;而在另一些软件中,1MB是1 048 576字节,如Fdisk等。一些书籍或报刊杂志上发表的论文,硬盘容量的单位也不统一,有以1 000 000字节为1MB的,也有把1 048 576字节作为1MB的。依据计算机表示数据的特点、数制的表示方式及计算机本身的发展,硬盘容量单位应该以2的多少次方表示比较符合实际情况,即以KB(Kilobyte),MB(Megabyte),GB(Gigabyte),TB(Terabyte),PB(Petabyte),EB(Exabyte)为单位,各种单位之间的换算关系如下:
1KB=210 B=1024 Byte
1MB=210 KB =220 B=1048576 Byte
1GB=210 MB=220 KB=230 B =1073741824 Byte
1TB=210 GB=220 MB=230 KB=240 B =1099511627776 Byte
1PB=210 TB=220 GB=230 MB=240 KB =250 B =1125899906842624 Byte
1EB=210 PB=220 TB=230 GB=240 MB =250 KB =260 B =152921504606846976 Byte
1.5 数制与码制
用数字量表示物理量的大小时,一位数码往往不够用。因而,必须用进位计数的方法组成多位数码使用。通常把多位数码中每一位的构成方法以及从低位到高位的进位规则称为数制。常用的数制有以下4种。
1. 十进制
十进制是日常生活和工作中最常使用的进位计数制。在这种进位计数制中,每一位有0~9十个数码,所以,计数的基数是10。超过9的数必须用多位数表示,其中低位数和相邻高位数之间的关系是“逢十进一”,故称为十进制。例如:
143.75=1×102+4×101+3×100+7×10–1+5×10–2
所以,任意一个正的十进制数D均可展开为:

其中ki是第i位的系数,它可能是0~9十个数码中的任何一个。若整数部分的位数是n,小数部分的位数是m,则i包含从n–1到0的所有正整数和从–1到–m的所有负整数。
若以N取代式(1-1)中的10,即可得到任意进制(N进制)数展开式的普遍形式:

式中i的取值范围与式(1-1)中的规定相同,N称为计数的基数,ki为第i位的系数,N i称为第i位的权。
2. 二进制
在数字电路中应用最广的是二进制。在二进制数中,每一位仅有0和1两个可能的数码,所以,计数基数为2。低位和相邻高位之间的进位关系是“逢二进一”,故得名二进制。
根据式(1-2),任何一个二进制数均可展开为:

例如:
101.11=1×22+0×21+1×20+1×2–1+1×2–2
3. 八进制
在八进制数中,每一位用0~7这八个数码表示,所以,计数基数为8。低位与相邻高位之间的进位关系是“逢八进一”。
任何一个八进制数都可以按式(1-2)展开为:

例如:
37.41=3×81+7×80+4×8–1+1×8–2
由于同一个数用八进制写出来的结果要比用二进制写出来的结果简单得多,而且二进制与八进制之间的互相转换又极为方便,所以,有时在书写计算机程序时使用八进制。
4. 十六进制
十六进制数的每一位有十六种可能的状态,分别用0~9,A(10),B(11),C(12),D(13),E(14)和F(15)表示。因此,任意一个十六进制数均可展开为:

例如:
2A.7F=2×161+A×160+7×16–1+F×16–2
=2×161+10×160+7×16–1+15×16–2
由于目前在微型计算机中普遍采用八位和十六位二进制并行运算,而八位和十六位二进制数可以用两位和四位十六进制数表示,因而用十六进制符号书写程序十分方便。同时,十六进制数和二进制数之间的转换又非常简单,这就使得十六进制数的应用比八进制数更加广泛。