概述
程序员应该更加深入的理解一个计算机系统,包括它的硬件系统和软件系统。今天一起看看计算机内部的硬盘(我们主要看的是传统的磁盘)的构造以及它与主板的接口主要有哪些。这里主要是介绍一下硬件系统,不涉及与磁盘息息相关的文件系统(file system)。
磁盘的构造
A hard disk drive (HDD) is a data storage device used for storing and retrieving digital information using one or more rigid ("hard") rapidly rotating disks (platters) coated with magnetic material. The platters are paired with magnetic heads arranged on a moving actuator arm, which read and write data to the platter surfaces.Data is accessed in a random-access manner, meaning that individual blocks of data can be stored or retrieved in any order rather than sequentially. HDDs retain stored data even when powered off.
一图胜千言,这张图找了半天,上图:
硬盘是由盘片、机械手臂、磁头、主轴马达组成。实际的数据都是写在具有磁性物质的盘片上,读写则是通过机械手臂的上的读取头(head)完成。实际运行时,主轴马达让盘片转动,机械手臂通过伸展,使得读取头在盘片上进行读写的操作。且由于单一的盘片的存储量有限,因此,有的硬盘内部会有两个以上的盘片。
盘面上的数据的具体的存储方式是怎样的呢 ?这个就得深入到细节了,如下图所示,整个盘面上, 可以看做是多个同心圆绘制出的饼形图,由圆星以发射状的方式分割出磁盘的最小的存储单位,即扇区(sector),其大小为512bytes.其中第一个扇区最重要,因为第一个扇区包含了两个重要的记录,1.主引导分区(Master Boot Record,MBR),446字节,The MBR holds the information on how the partitions, containing file systems, are organized on that medium. The MBR also contains executable code to function as a loader for the installed operating system—usually by passing control over to the loader's second stage, or in conjunction with each partition's volume boot record (VBR). This MBR code is usually referred to as a boot loader.;2.分区表(partition table),64字节,记录了整块硬盘的分区的状态。而扇区组成一个圆就成了磁道(track);在多盘硬盘上,所有的盘面上的磁道可以组成一个柱面(cylinder)。图中的实例上有8个读写头,4个盘面。因此,直观上就可以知道,硬盘存储量的计算公式:head*cylinder/head*sector/cylinder*512bytes/sector.即,每一个无限划分的sector的存储量的总和。也可以理解成每个head所能伸缩到的cylinder上的所有的sector上的存储容量之和。
早期系统就是直接使用磁头柱面和扇区来对硬盘进行寻址(这称为CHS寻址),这需要分别存储每个区域的三个参数(这称为3D参数),使用时再分别读取三个参数,然后再在送到磁盘控制器去执行。由于系统用8b来存储磁头地址,用10b来存储柱面地址,用6b来存储扇区地址,而一个扇区共有512B,这样使用CHS寻址一块硬盘最大容量为256 * 1024 * 63 * 512B = 8064 MB
磁盘与主板之间的接口
硬盘与主机系统的系统总线通过特定的传输接口相连。
IDE and SATA are different types of interfaces to connect storage devices (like hard drives) to a computer's system bus. SATA stands for Serial Advanced Technology Attachment (or Serial ATA) and IDE is also called Parallel ATA or PATA. SATA is the newer standard and SATA drives are faster than PATA (IDE) drives. For many years ATA provided the most common and the least expensive interface for this application. But by the beginning of 2007, SATA had largely replaced IDE in all new systems.
The ATA interface (ATA stands for AT attachment where "AT" refers to IBM's PC/AT for which it was originally built) evolved in stages from Western Digital's original Integrated Drive Electronics (IDE) interface. After the introduction of Serial ATA in 2003, the original ATA was retroactively renamed Parallel ATA.
SATA的数据线占用的空间更小,散热性能更优。SATA3.0传输数据的能力远远优于PATA(IDE),达到了600MB/s;且支持热插拔,即使主机正在运转,也可以拆卸旧的的硬盘,安装新的硬盘。如下图,左边的是PATA(IDE)传输接口的硬盘,右边的是SATA接口的硬盘。硬盘都需要适配器与主板相连接,来屏蔽掉底层的硬件细节,从而使得两种硬盘可以适配到不同的主板上,但是需要注意的是,同样的主板一次只能选择其中一种规格的硬盘而不能混搭使用。这是由于系统读写文件时需要一致的步调来驱动机械臂和数据传输接口,混搭使用显然是不符合要求的。现在大多数的PC机的硬盘使用的是SATA规格的数据传输接口。值得指出的是,USB这种规格的数据传输接口也是一种类似于上面介绍的硬盘与主板之间的接口类似的接口,比如说,当U盘连接到电脑时,可以将这个U盘视为一个普通的磁盘,只是容量和存储、读写机制不一样而已。
磁盘分区
磁盘分区的重要性在于
保证数据的安全性,由于每个分区的数据是分开的,相对处在一种比较独立的状态下,因此,当需要对某个分区的数据重整时,如,重装系统,你只需要将装载系统的那个磁盘里的重要文件事先备份到其他分区。
分区后系统性能会更好。由于分区会将数据集中在某个柱面(cylinder)的特定的区段,当读写特定分区的数据的时候,只用搜寻对应的柱面范围即可,而不必全盘检索,这就大大提高了数据读取的速度和性能。
固态硬盘
现在大家最喜爱的硬盘是固态硬盘。那么固态硬盘与我上面说的,构造有些不同。
SSDs have no moving (mechanical) components. This distinguishes them from traditional electromechanical magnetic disks such as hard disk drives (HDDs) or floppy disks, which contain spinning disks and movable read/write heads.固态硬盘的价格更高,抛开价格因素不谈,固态硬盘的性能更优,只是由于闪存的次数是有限的,因此,固态盘的寿命对于那些发烧级的电脑用户来说有点遗憾,不过,现在的固态硬盘的技术都足以确保大多数情况下,你的硬盘还好好的,你却已经爱上了别的一款性能更优的超极本。