磁盘存储
磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节,而基于RAM的存储器只能有几百或几千兆字节。不过,从磁盘上读信息的时间为毫秒级,比从DRAM读慢了10万倍,比从SRAM读慢了100万倍。
1. 磁盘构造
磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),它使得盘片以固定的旋转速率 (rotational rate)旋转,通常是 5400~15000 转每分钟(Revolution Per Minute,RPM)。磁盘通常包含一个或多个这样的盘片,并封装在一个密封的容器内。
下图中展示了一个典型的磁盘表面的结构。
每个表面是由一组称为磁道(track)的同心圆组成的。每个磁道被划分为一组扇区(sector)。每个扇区包含相等数量的数据位(通常是512 字节),这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开, 这些间隙中不存储数据位。间隙存储用来标识扇区的格式化位。
盘是由一个或多个叠放在一起的盘片组成的,它们被封装在一个密封的包装里,如下图所示。整个装置通常被称为磁盘驱动器(d1sk drive),通常简称为磁盘(disk)。
2. 磁盘容量
一个磁盘上可以记录的最大位数称为它的最大容量,或者简称为容量。磁盘容量是由以下技术因素决定的:
记录密度(recording density)(位/英寸):磁道一英寸的段中可以放入的位数。
磁道密度(track density)(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁道数。
面密度(areal density)(位/平方英寸):记录密度与磁道密度的乘积。
下面的公式给出了一个磁盘的容量:
3. 磁盘操作
磁盘用读/写头(read/write head)来读写存储在磁性表面的位,而读写头连接到一个传动臂(actuator arm)—端,如图 所示。
传动臂沿着半径轴前后移动称之为寻道(seek)。
磁盘以扇区大小的块来读写数据。对扇区的访问时间(access time)有三个主要的部分:
寻道时间(seek time):为了读取某个目标扇区的内容,传动臂首先将读/写头定位到包含目标扇区的磁道上。移动传动臂所需的时间称为寻道时间。
旋转时间(rotational latency):一旦读/写头定位到了期望的磁道,驱动器等待目标扇区的第一个位旋 转到读/写头下。这个步骤的性能依赖于当读/写头到达目标扇区时盘面的位置以及 磁盘的旋转速度。
最大旋转延迟(以秒为单位)是:
传送时间(transfer time):当目标扇区的第一个位位于读/写头下时,驱动器就可以开始读或者写该扇区的内容了。一个扇区的传送时间依赖于旋转速度和每条磁道的扇区数目。
一个扇区以秒为单位的平均传送时间如下:
4. 逻辑磁盘块
由于现代磁盘构造复杂,有多个盘面,这些盘面上有不同的记录区。为了对操作系统隐藏这样的复杂性,现代磁盘将它们的构造呈现为一个简单的视图,一个B个扇区大小的逻辑块的序列,编号为0,1,…,B—1。磁盘封装中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际(物理)磁盘扇区之间的映射关系。
5. 连接 I/O设备
例如图形卡、监视器、鼠标、键盘和磁盘这样的输人/输出(I/O)设备,都是通过 I/O 总线,例如Intel 的外围设备互连(Peripheral Component Interconnect, PCI)总线连接到 CPU 和主存的。系统总线和内存总线是与CPU相关的,与它们不同,诸如PCI这样的I/0总线设计成与底层CPU无关。例如,PC和Mac都可以使用PCI总线。
虽然I/O总线比系统总线和内存总线慢,但是它可以容纳种类繁多的第三方I/O设 备。例如,在图中,有三种不同类型的设备连接到总线。
通用串行总线(Universal Serial Bus, USB)控制器是一个连接到 USB总线的设备的中转机构,USB总线是一个广泛使用的标准,连接各种外围I/O设备,包括键盘、鼠标、调制解调器、数码相机、游戏操纵杆、打印机、外部磁盘驱动器和固态硬盘。
图形卡(或适配器)包含硬件和软件逻辑,它们负责代表CPU在显示器上画像素。
主机总线适配器将一个或多个磁盘连接到I/O总线,使用的是一个特别的主机总线接口定义的通信协议。
6. 访问磁盘
CPU使用一种称为内存映射I/O(memory-mapped I/O)的技术来向 I/O设备发射命令(如下图)。在使用内存映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的。每个这样的地址称为一个I/O端口(I/O port)。当一个设备连接到总线时,它与一个或多个端口相关联(或它被映射到一个或多个端口)。