浅入理解计算机系统(4)- 你可能不知道的磁盘存储的那些事

本文是操作系统系列的第四篇,以下是文章目录
浅入理解计算机系统(1)- 操作系统的两个基本功能和三个抽象概念
浅入理解计算机系统(2)- 程序的机器级表示
浅入理解计算机系统(3)- RAM和ROM,处理器和主存的那些事
浅入理解计算机系统(4)- 你可能不知道的磁盘存储的那些事

磁盘,日常生活中可能更常见地被称为硬盘。大多数看到这篇文章的人应该都知道机械硬盘(Hard Disk Drive , HDD)和固态硬盘(Solid State Drive, SSD)。 HDD普遍分为5400转和7200转等,价格相较于SSD更便宜,但性能比SSD要差不少。那么这是为什么呢?本文章将为大家揭秘磁盘背后的工作原理。

为了避免混淆,下文中将使用磁盘代替机械硬盘(HDD),相信阅读完后也会知道为什么会叫做磁盘。

磁盘构成

主轴(spindle)

磁盘包含一个或多个盘片,并封装在一个密封的容器内。盘片的中央有一个可以旋转的主轴,它使得盘片以固定的速率旋转,通常是5400~15000转每分钟。

盘片(platter)

每个盘片有两面或者称为表面,表面覆盖着磁性记录资料。

磁盘1

图片来源《深入理解计算机系统》

磁道(track)

每个盘片表面是由一组称为磁道的同心圆组成的,每个磁道被划分为一组扇区。

扇区(sector)

每个扇区包含相等数量的数据位(通常512字节),这些数据编码在扇区的磁性材料中,扇区之间由一些间隙分隔开。

间隙(gap)

间隙不存储数据位,而是用来标识扇区的格式化位。

磁盘2

图片来源《深入理解计算机系统》

磁盘容量

记录密度(recording density)

磁道一英寸的段中可以放入的位数。

轨道密度(track density)

从盘片中心出发半径上一英寸可以有的磁道数量。

面密度

记录密度与轨道密度的乘积。

磁盘操作

磁盘用读/写头来读写存储在磁性表面的位,而读/写头连接到一个传送臂一端,沿着半径轴前后移动这个传送臂,驱动器可以将读/写头定位到盘面的任意一个磁道上,当磁道上的每个位通过它的下面时,读/写头可以感知到这个位的值(读操作),也可以修改这个位的值(写操作)。
在有多个盘片的磁盘中,每个盘面都有一个独立的读/写头,并且这些读/写头垂直排列,一致行动,在任何时刻,所有的读/写头都位于同一个柱面上。

磁盘4

图片来源《深入理解计算机系统》

磁盘读写

寻道时间(seek time)

为了读取某个目标扇区的内容,传送臂首先将读/写头定位到包含目标扇区的磁道上。移动传送臂所需要的时间称为寻道时间。

旋转时间(rotational latency)

读/写头到达期望磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。这个步骤的性能依赖于读/写头到达目标扇区时盘面位置以及磁盘的旋转速度。
换句话说,读/写头需要从扇区的头部(第一个位)开始读,而读/写头大概率不会刚好落在头部,所以需要旋转盘面使读/写头落在头部。

传送时间(transfer time)

当目标扇区的第一个位位于读/写头下时,驱动器就开始读或者写该扇区的内容。一个扇区的传送时间取决于旋转速度和每条磁道的扇区数目。

磁盘3

图片来源《深入理解计算机系统》

逻辑磁盘块

逻辑序列

现代磁盘结构复杂,有多个盘面,这些盘面上有不同的记录区。为了对操作系统隐藏这样的复杂性,现代磁盘将它们的构造呈现为一个B个扇区大小的逻辑块的序列,编号为0, 1, …, B-1。

磁盘控制器

磁盘封装中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际(物理)磁盘扇区之间的映射关系。
当操作系统想要执行一个I/O操作时,例如读一个磁盘扇区中的数据到主存,操作系统会发送一个命令到磁盘控制器。控制器上的固件执行一个快速表查找,将一个逻辑块号翻译成一个(盘面、磁道、扇区)的三元组,这个三元组唯一标识了对应的物理扇区。

固态硬盘(Solid State Disk,SSD)

SSD基于闪存的存储技术,行为和其他硬盘一样,处理来自CPU的读写逻辑磁盘块的请求。

基本构成

一个或多个闪存芯片

用于替代传统旋转磁盘的机械驱动器。

闪存翻译层

一个硬件/固件设备,扮演磁盘控制器的角色,将CPU对逻辑块的请求翻译成对底层物理设备的访问。

闪存在操作系统系列第三篇文章中有详细介绍,感兴趣可以回头看下,此处不过多展开。

磁盘相关内容基本介绍完毕,接下来以磁盘是如何连接到CPU和主存的内容进行结尾。

I/O总线

I/O总线相比系统总线和内存总线较慢,但是它可以容纳种类繁多的第三方I/O设备。图形卡、监视器、鼠标、键盘和磁盘等输入/输出(I/O)设备,都是通过I/O总线连接到CPU和主存的。例如Intel的外围设备互联总线(Peripheral Component Interconnect,PCI)。
PS: PCI这样的I/O总线设计与底层CPU无关,这一点与系统总线和内存总线不同。例如PC和MAC都可以适用PCI总线。

通用串行总线(Universal Serial Bus,USB)

连接到USB总线的设备的中转机构。USB总线是一个广泛使用的标准,连接各种外围I/O设备,包括键盘、鼠标、调制解调器、数码相机、游戏操纵杆、打印机、外部磁盘驱动器和固态硬盘。

图形适配器

包含硬件和软件逻辑,负责代表CPU在显示器上画像素。

主机总线适配器

将一个或多个磁盘连接到I/O总线,使用的是特别的主机总线接口定义的通信协议。例如SCSI和SATA,SCSI磁盘通常比SATA驱动器更快但是也更贵。SCSI控制器支持多个磁盘驱动器,SATA只能支持一个驱动器。

其他设备

例如网络适配器,可以通过将适配器插入到主板上空的扩展槽,从而连接到I/O总线,这些插槽提供了到总线的直接电路连接。

本文内容源自《深入理解计算机系统 第三版》以及本文作者的个人理解补充,只涉及一些个人认为重要概念和协作原理的描述,并不深入剖析每一个点。
如果有不准确或者错误的地方欢迎评论指出。
感谢你的阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值