主存(RAM)
主存的大概结构如下图所示
读操作时,查询信号通过地址总线定位存储单元,然后存储单元中的数据通过数据总线返回给查询对象。
写操作时,操作信号先通过地址总线找到存储单元,然后更新数据通过数据总线更新存储单元。
所以主存的读写操作只有逻辑交换,不存在物理操作,速度比较快。
磁盘
一个磁盘有多个盘面,每个盘面都有一个磁头用来寻址。具体结构如下图所示:
逻辑结构
每个盘面会根据以盘中心为圆点的同心圆分为若干磁道,多个盘面同一位置的磁道形成一个柱面。以盘心向外散出N条射线,将每个磁道分成若干个扇区,每个扇区是固定的512K。
数据读写
操作系统要对磁盘进行读写时,先要找到数据所在的磁道,然后将磁头移动到目标磁道的上方,这个过程叫做寻道,消耗的时间称为寻道时间。
找到目标磁道后,需要选择磁盘,将磁头移动到目标扇区。这个过程叫磁盘旋转,消耗的时间称为旋转时间。
局部性原理和磁盘预读
由上可知,一次磁盘IO需要寻道和旋转,这两个操作是非常耗时的。所以为了优化查询速度,磁盘查询一般都会做数据预读。
局部性原理是指,如果当前数据被使用,那么当前数据后面的数据大概率也会被使用。所以磁盘在加载当前数据之后,会将后续的数据也加载到内存。这样应用当使用后续数据时,就不用再次左磁盘IO。