5.3 磁盘和固态硬盘
5.3.1 磁盘

磁盘的每一个盘片表面都覆盖着磁性物质,信息就记录在表面上。
现代的磁盘在外围的磁道有更多的扇区。
扇区是磁盘读写的最小单位,一般为 512B。
磁盘地址“柱面号·盘面号·扇区号”
写扇区回找到一个磁道写,然后写完一个柱面才移动磁头,因为移动磁头臂时间长。
磁盘从外侧计数,所以一般情况下 C 盘读写速度最快。
磁盘逻辑格式化程序所做的工作是:
一个新的磁盘是一个空白版,必须分成盘区以便磁盘控制器能读和写,这个过程称为低级格式化(或物理格式化)。低级格式化为磁盘的每个扇区采用特别的数据结构。包括校验码。
磁盘存储器的最小读写单位为一个扇区,即磁盘按块读取。磁盘存储数据之前需要进行格式化,将磁盘分成扇区,并写入信息,因此磁盘的格式化容量比非格式化容量小。
磁盘时可共享设备(分时共享),是指某段时间内可以有多个用户进行访问。但某一时刻只能有一个作业进行访问。
5.3.2 磁盘的管理
1.磁盘初始化
2.分区
将磁盘分为由一个或多个柱面组成的分区(C 盘、D 盘)
5.3.3 磁盘调度算法
磁盘调度是对访问磁道次序的调度,如果没有合适的磁盘调度,寻找时间会大大增加。
寻找时间$T_{s}$:磁盘在读写信息前,将磁头移动到指定磁道所需的时间。磁头沿着磁盘半径移动。
其中启动磁臂时间 s 约为 2ms,跨越 n 条磁道,跨越一条磁道约为 0.2ms。
$T_{s}=m\times n+s$
平均寻找时间约为 3~15ms。而 SSD 的寻找时间就快多了,平均寻找时间约为 0.08~0.16ms。
旋转延迟时间$T_{r}$:磁头定位到某一磁道的扇区所需时间。磁头沿着同心圆转圈。就是转半圈的时间。
假设旋转速度为 5400 转/分,也就是$T_{r}$=5.55ms。
$T_{r}=\frac{1}{2r}$
传输时间
$T_{t}=\frac{b}{rN}$
b/n 个磁道,每个磁道 1/r。
总时间=扇区时间(转半圈的时间)+ 寻道时间 + 读取时间 + 延迟时间。
(1)先来先服务(FCFS)算法
磁盘请求队列中的请求顺序分别为 55,58,39,18,90,160,150,38,184。

(2)最短寻找时间优先(SSTF)算法
(3)扫描(SCAN)算法
双向进行。
需要到达磁盘端点。
(4)循环扫描(C-SCAN)算法
单向进行。
需要到达磁盘端点。
(5)LOOK 调度
双向进行。
磁头只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。
(6)C-LOOK 调度
磁头只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。
单向进行。
5.3.4 固态硬盘
固态硬盘是如今最常见的存储设备。固态硬盘比磁盘快且小。
固态硬盘基于闪存技术,没有机械部件,随机读写不需要机械操作,因此速度明显高于磁盘。缺点是容易磨损。

一个闪存由 B 块组成,每块由 P 页组成,页的大小为 512B~4KB,每块由 32~128 页组成,块的大小为 16KB~512KB。数据以页为单位读写。只有某页所在块完全擦出才能写这页。
磨损均衡
闪存擦写寿命只有几百到几千次。所以读写操作尽量均匀分在每个块中。
(1)动态磨损均衡。写入数据时,自动写入较新的闪存块。
(2)静态磨损均衡。让老闪存块存储无需写的数据,读写操作都在新闪存块中进行。