4.容量计算
存储容量 = 磁头数(盘面数)* 磁道数(柱面数)* 每个磁道的扇区数 * 每个扇区的字节数
- 以前的硬盘每个磁道的扇区数是一样的,外圈扇区的密度小,内圈扇区的密度大。
- 现在的硬盘内外圈扇区的密度一致,这样磁道的长度越长,扇区就越多,存储的数据量就越大。
5.簇或块
从硬盘的物理结构来看,数据存取信息的最小单位是扇区,一个扇区可能为 512 字节
或者是 4K
。
由于扇区的容量小且数量众多,在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个整体,这个整体就是操作系统对硬盘进行存取的最小单位,在 Windows 下称为簇
(Cluster
),在 Linux 等系统中称为块
(Block
)。每个簇或块可以包含 2, 4, 8, 16, 32
等,2 的 n 次方个扇区
。
Windows 系统上通过管理员身份运行 fsutil fsInfo ntfsInfo C:
命令,会得到以下信息:
这台设备使用的文件系统是 NTFS
,默认的簇大小为 4096 字节
。
6.访盘过程
当需要从硬盘读取数据时,操作系统会将数据的逻辑地址发送给硬盘,硬盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读取的数据在哪个磁道,哪个扇区。
为了读取这个扇区的数据,需要将磁头移动到这个扇区的上方,为了实现这一点:
- (1)首先必须找到对应的柱面,即磁头需要移动到对应的磁道上,这个过程叫做寻道,所耗费的时间叫做
寻道时间
。 - (2)然后目标扇区旋转到磁头下,这个过程耗费的时间叫做
旋转时间
。 - (3)接下来磁头读取该扇区的信息,然后就需要进行数据传输,即数据从硬盘传输到内存。
可以看到,进行一次读写硬盘所需要的时间可以概括为:寻道时间
、旋转时间
和传输时间
。目前硬盘的平均寻道时间在 3ms
到 15ms
之间,普通硬盘的转速一般为 5400 rpm
或 7200 rpm
。
7.局部性原理与磁盘预读
由于存储介质的特性,硬盘本身的存取速度就比主存慢很多,再加上磁头的机械运动,存取速度就更慢了。
为了提高硬盘的效率,尽量减少磁盘 I/O
,硬盘往往不是严格的按需存取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序地向后读取一定长度的数据放入内存,这样做的理论依据是计算机科学中著名的空间局部性原理
:
当一个数据被用到时,其附近的数据通常也会马上被用到。
程序在运行期间,一段时间内所需要的数据通常都比较集中,由于磁盘的顺序读取效率很高(不需要寻道时间,只需要很少的旋转时间),因此预读一般都可以提高磁盘 I/O 的效率
。
磁盘预读的长度一般为 页
(Page
)的整数倍。由于操作系统经常与内存和硬盘这两种设备进行通信,为了屏蔽底层物理存储结构的设计细节,需要抽象出一种逻辑上的存储单位。
当与硬盘打交道时,操作系统使用簇或者块
;当与内存打交道时,操作系统使用页
。
当程序要读取的数据不在内存中时,会触发一个缺页异常,此时操作系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置然后连续读取一页或者几页的数据放入内存,然后异常返回,程序继续执行。
分类
硬盘按数据接口不同,大致分为 ATA
和 SATA
(可参阅IDE界面)以及 SCSI
和 SAS
。
-
ATA,全称
Advanced Technology Attachment
,是用传统的40-pin
并口数据线连接主板与硬盘的,外部接口速度最大为133Mb/s
。- 因为并口线的抗干扰性太差,且排线占空间,不利计算机散热,将逐渐被 SATA 所取代。
SATA
于2002
年推出后,原有的ATA
改名为 PATA(Parallel ATA
)。
-
SATA,全称
Serial ATA
,也就是使用串口的ATA
接口。 -
SCSI,全称为
Small Computer System Interface
(小型机系统接口)。 -
SAS(
Serial Attached SCSI
)是新一代的SCSI
技术。- 和
SATA
硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到3Gb/s
。 - 此外也透过缩小连接线改善系统内部空间等。
- 和
TIPS:硬盘转速以每分钟多少转来表示,单位表示为 RPM
,RPM
是 Revolutions Per minute
的缩写,是 转/每分钟。RPM
值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。