linux硬件和设备驱动程序6:硬盘_茅坑_百度空间
如图 12-8 所示是硬件的物理结构示意图。从图中可以看出,硬盘实际是由多个“磁盘片”组成的,每个磁盘片均有两个“面”。在磁盘出厂低级格式化之前,每个面上均匀分布磁粉。经过低级格式化之后,每个面上的磁粉被组织成一圈圈的“磁道”,而磁道又被划分成为“扇区”, 扇区是真正保存数据的地方,各磁道上的扇区数是相同的。另外,硬盘还有一个术语称为“柱面”,它指的是由所有面上的同一磁道假象形成的几何柱面,该几何柱面的轴就是盘片的旋转轴。每个面对应有一个磁头,用来感应磁道上磁粉的磁极方向,经过其他电路处理可将磁粉的磁极转化为计算机能够识别的二进制数据。磁头能够沿盘片的径向移动,在盘片旋转运动的辅助下,磁头可以读取盘片上所有扇区中的数据。“磁盘控制器”完成对来自 CPU 的命令的解释,并控制磁头的移动和读写。
如果我们知道了硬盘的磁头个数、柱面个数、每磁道上的扇区个数(这些参数称为硬盘的“几何参数”)以及每扇区上可存储的字节数,就可以计算出这个硬盘的容量。例如,某计算机的磁头个数为 128,每磁道上的扇区个数为 63,一共有 788 个柱面,每扇区可容纳 512 字节,因此,该硬盘的容量为 128*63*788*512 = 3,253,469,184(字节)= 3102.75(兆字节)。

                  图 12-8 硬盘的物理结构示意图
上面所举的例子中,该硬盘一共有 128 个磁头,也就是说,它一共有 64 个磁盘片。但根据常识,薄薄的硬盘中不可能存在这样多的磁盘片。实际上,现在常见的大容量硬盘的这些参数并不对应于实际的物理参数。这样定义的原因是由于 PC 机早期 BIOS 设计上的一个缺陷。早期的 BIOS 在 CMOS RAM 中存放这些参数,由于 CMOS RAM 的容量有限,初始设计为不能存放大于 1024 的磁道个数(那时的硬盘容量一般为 40 MB)。但是,随技术的发展,硬盘的容量越来越大,这主要是磁道个数增多的原因,而不是磁头个数增加的原因。为了和原有的 BIOS 兼容,硬盘制造商仍然利用小于 1024 的磁道数定义硬盘参数,而通过增加磁头数等方法保证所定义的逻辑参数能够和物理参数匹配。同时,随着磁道数的增多,又引入了另一个问题。处于盘片中心处的磁道周长小,而处于盘片外沿的磁道周长大,这样,外沿磁道上可容纳的扇区个数比处于中心处的磁道可容纳的扇区个数要多。硬盘制造厂商为了尽量增加硬盘容量,实际所采用的也是变化的扇区数。但是,无论硬盘的实际构造如何,硬盘制造商却始终给出符合上述结构的逻辑参数,从而保证硬盘访问软件在一定程度上的一致性,而逻辑参数到物理参数的转换则由硬盘控制器完成。
上面所讲的问题主要出现在 IDE 接口的硬盘中,这种硬盘也是当今 PC 机中使用最为广泛的硬盘。SCSI 硬盘是另外一种可提供大容量、高速度数据访问的硬盘。这种硬盘没有 IDE 硬盘这样的问题,它利用顺序号定位扇区,而顺序号到物理磁头、柱面、扇区的转换由硬盘控制器完成,由于这一原因,操作系统对 IDE 和 SCSI 硬盘的驱动程序各不相同。
磁头的跨磁道读写一般因为需要径向移动而需要花费大量的时间,这一般用“平均寻道时间”来衡量。如果一个硬盘的平均寻道时间很长,则说明硬盘的速度很低。在文件系统的组织中,操作系统一般会尽量将同一个文件的数据放置在连续的扇区中,这样,磁头在读取过程中可以少一些寻道时间,从而提高硬盘的整体速度。然而,随着文件的删除和扇区的重新分配,一些文件就无法保证存储在连续的扇区中,这时,硬盘的读写速度将受到影响。这种情况一般称为“磁盘的碎片化”。许多操作系统都包含一些可通过对文件存储扇区的整理而降低碎片化程度的系统工具。
在 Linux 中,每个(IDE?)硬盘由单独的设备文件表示。通常,可有两个或四个硬盘,这一般取决于 PC 的主板和 BIOS。这些硬盘分别由 /dev/hda、/dev/hdb、/dev/hdc 和/dev/hdd 表示。而 SCSI 硬盘的个数则不受上述限制,每个 SCSI 总线上可以有 7 个 SCSI 设备,因而可最多连接 7 个硬盘,分别由 /dev/sda、dev/sdb、dev/sdc、dev/sdd、dev/sde、dev/sdf 和 dev/sdg 表示。


郑重声明:资讯 【linux硬件和设备驱动程序6:硬盘_茅坑_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——