王道操作系统 5.3 磁盘和固态硬盘
5.3 磁盘和固态硬盘
5.3.1 磁盘
磁盘是可共享设备,但每个时刻至多能由一个作业启动它

磁盘结构


磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据
磁道:磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道
扇区:一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”各个扇区存放的数据量相同
最内侧磁道上的扇区面积最小,因此数据密度最大
盘面:磁盘有多个盘片”摞”起来,每个盘片有两个盘面。
柱面:所有盘面中相对位置相同的磁道组成柱面。
如何在磁盘中读/写数据

磁盘的物理地址:磁盘地址用“柱面号•盘面号•扇区号”表示,可根据该地址读取一个“块”

磁盘的分类
磁头是否移动

根据盘片是否可更换

5.3.2 磁盘管理

磁盘的操作系统引导扇区产生在 对硬盘进行高级格式化的时候
磁盘初始化
一个新的磁盘只是一个磁性记录材料的空白盘。在磁盘可以存储数据之前,必须将它分成扇区,以便磁盘控制器能够进行读写操作,这个过程称为低级格式化(或称物理格式化)。
低级格式化为每个扇区使用特殊的数据结构,填充磁盘。每个扇区的数据结构通常由头部、数据区域(通常为512B大小)和尾部组成。头部和尾部包含了一些磁盘控制器的使用信息(包含管理扇区需要的数据结构和校验码)。

扇区号是在低级格式化的时候产生的
分区
在可以使用磁盘存储文件之前,操作系统还要将自己的数据结构记录到磁盘上,分为两步:
- 第一步是,将磁盘分为由一个或多个柱面组成的分区(即我们熟悉的C盘、D盘等形式的分区),每个分区的起始扇区和大小都记录在磁盘主引导记录的分区表中
- 第二步是,对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲空间和已分配的空间以及一个初始为空的目录。
因扇区的单位太小,为了提高效率,操作系统将多个相邻的扇区组合在一起,形成一簇(在Linux中称为块)。为了更高效地管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只能是簇的整数倍;如果文件大小小于一簇(甚至是0字节),也要占用一簇的空间。

引导块

自举程序通常存放在ROM中,为了避免改变(更新)自举代码而需要改变ROM硬件的问题,通常只在ROM中保留很小的自举装入程序,而将完整功能的引导程序保存在磁盘的启动块上,启动块位于磁盘的固定位置。具有启动分区的磁盘称为启动磁盘或系统磁盘(C:盘)。

即自举装入程序很小,复杂度低,可以保证不出错,如果需要修改自举程序的话,就只需要改引导块中的固定位置,而不需要改ROM,会让自举程序的更新变得更加简单。
Windows允许将磁盘分为多个分区,有一个分区为引导分区,它包含操作系统和设备驱动程序。
Windows系统将引导代码存储在磁盘的第0号扇区,它称为主引导记录(MBR)。
引导首先运行ROM中的代码,这个代码指示系统从MBR中读取引导代码。
除了包含引导代码,MBR还包含:一个磁盘分区表和一个标志(以指示从哪个分区引导系统)
当系统找到引导分区时,读取分区的第一个扇区,称为引导扇区,并继续余下的引导过程,包括加载各种系统服务。
坏块
由于磁盘有移动部件且容错能力弱,因此容易导致一个或多个扇区损坏。

对坏块的处理实质上就是用某种机制使系统不去使用坏块。
5.3.3 磁盘调度算法
注意,如果没有特殊说明,可以默认SCAN算法和C-SCAN算法是LOOK调度和C-LOOK调度(真题2010年第二问,王道书P351页)
在磁盘读取数据的实践中,影响最大的是寻道时间
磁盘调度算法是为了减少寻道时间,扇区数据的处理时间主要影响传输时间,旋转延迟的大小和文件的物理结构(磁盘空间的分配方式)有关
先来先服务算法不会导致磁头臂黏着,SSTF,SCAN,C-SCAN都会导致磁头臂黏着


只有寻道时间是操作系统可以优化的
先来先服务(FCFS)

最短寻找时间优先(SSTF)

扫描算法(SCAN)

LOOK调度算法

循环扫描算法(C-SCAN)
C-LOOK 调度算法

减少磁盘延迟时间的方法


磁盘地址结构的设计:



还有是因为高位地址不容易发生改变,一般连续存储的都是低位地址的加加减减,所以才把柱面号,也就是磁道号放在高位,一般就不动这个磁道号,也就节省了磁头移动时间
方法
- 交替编号
- 具体做法:让编号相邻的扇区在物理上不相邻

- 错位命名
- 具体做法:让相邻盘面的扇区编号”错位”
- 原理:与”交替编号”的原理相同。“错位命名法”可降低延迟时间


- 交替编号
文件的访问速度是衡量文件系统性能最重要的因素,提高的措施:
- 改进文件的目录结构及检索目录的方法,以减少对目录的查找时间
- 选取好的文件存储结构,以提高对文件的访问速度
- 提高磁盘I/O速度,以实现文件中的数据在磁盘和内存之间快速传送
提高磁盘IO速度的方法
1.采用磁盘高速缓存。
2.调整磁盘请求顺序(磁盘调度算法)。
3.提前读。在读磁盘当前块时,将下一磁盘块也读入内存缓冲区。
4.延迟写。仅在缓冲区首部设置延迟写标志,然后释放此缓冲区并将其链入空闲缓冲区链表的尾部,当其他进程申请到此缓冲区时,才真正将缓冲区信息写入磁盘块。
5.优化物理块的分布。除了上面介绍的扇区编号优化,当文件采用链接方式和索引方式组织时,应尽量将同一个文件的盘块安排在一个磁道上或相邻的磁道上,以减少寻道时间。另外,将若干盘块组成簇,按簇对文件进行分配,也可减少磁头的平均移动距离。
6.虚拟盘。是指用内存空间去仿真磁盘,又叫RAM盘。常用于存放临时文件。
7.采用磁盘阵列RAID。由于可采用并行交叉存取,因此能大幅提高磁盘I/O速度。
5.3.4 固态硬盘

静态磨损均衡算法通常比动态磨损均衡算法的表现更优秀。
固态硬盘的特性
原理:固态硬盘(SSD)是基于闪存技术Flash Memory,属于电可擦除ROM,即EEPROM
组成:

- 闪存翻译层:负责翻译逻辑块号,找到对应页(Page)
- 存储介质:多个闪存芯片(Flash Chip);每个芯片包含多个块(block);每个块包含多个页(page)。
读写性能特性:
- 数据是以页为单位读写的。相当于磁盘的“扇区”
- 以块(bock)为单位“擦除“,擦干净的块,其中的每页都可以写一次,读无限次。
- 支持随机访问,系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应的物理地址
- 读快、写慢,但都比机械磁盘要快(因为没有机械操作)。要写的页如果有数据,则不能写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页
与机械硬盘对比
- SSD读写速度快,随机访问性能高,用电路控制访问位置;机诚硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟
- SSD安静无噪音、耐摔抗震、能耗低、造价更贵
- SSD的一个”块”被擦除次数过多(重复写同一个块)可能会坏掉,而机械硬盘的扇区不会因为写的次数太多而坏掉
磨碎均衡
思想:将“擦除”平均分布在各个块上,以提升使用寿命
- 动态磨损均衡:写入数据时,优先选择累计擦除次数少的新闪存块。
- 静态磨损均衡:SSD监测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的储存任务,让较新的闪存块承担更多的写任务
静态比动态更优秀

以下无聊的时候看看了解一下
使用机械硬盘的设备:
- 台式电脑:许多台式电脑仍然使用机械硬盘作为主要的存储设备,特别是对于那些对存储容量有较高要求但对速度要求不是极高的用户。机械硬盘以其大容量和相对较低的成本成为台式电脑中的常见选择。
- 服务器和数据中心:在企业服务器和数据中心中,机械硬盘也得到了广泛应用。虽然固态硬盘在速度和可靠性方面具有优势,但机械硬盘的大容量和低成本使得它们在需要海量数据存储和长时间运行的服务器环境中仍然具有竞争力。特别是在进行批量读写和长时间存储数据的场合,机械硬盘的性价比更高。
- 安防监控系统:安防监控系统通常需要长时间连续录制视频,并存储大量的视频数据。由于这些系统对存储容量的需求远大于对速度的需求,因此机械硬盘成为了一个理想的选择。
- 特定用途的笔记本电脑:虽然大多数现代笔记本电脑都倾向于使用固态硬盘,但一些特定用途的机型,如某些工作站或图形设计电脑,可能会选择使用机械硬盘来提供额外的存储空间,同时结合固态硬盘来提高系统性能。
使用固态硬盘的设备:
- 笔记本电脑:随着固态硬盘技术的不断发展和价格的逐渐下降,越来越多的笔记本电脑开始采用固态硬盘作为主硬盘。固态硬盘能够显著提高系统的启动速度、文件传输速度和整体性能,使笔记本电脑更加轻薄、高效。
- 超薄本和二合一设备:这类设备对体积和重量有严格的要求,因此固态硬盘成为了首选的存储设备。固态硬盘的小巧体积和低功耗特性使得这些设备能够实现更长的续航时间和更轻薄的机身设计。
- 服务器和数据中心:虽然机械硬盘在服务器和数据中心中也有应用,但固态硬盘凭借其高速的读写能力和出色的稳定性,正在逐渐取代机械硬盘成为这些领域的新宠。固态硬盘能够大大提高服务器和数据中心的性能和效率,提升用户体验和运营效率。
- 移动设备:随着移动设备的普及和性能要求的提高,固态硬盘也逐渐被应用于智能手机、平板电脑等移动设备中。固态硬盘的快速读写速度和低功耗特性能够提高移动设备的运行效率和续航能力。
- 工业控制领域和航空航天领域:这些领域对设备的可靠性和稳定性要求非常高,固态硬盘能够提供更加稳定和可靠的存储服务。同时,固态硬盘具有较长的使用寿命和较低的维护成本,也更加适合这些领域的使用需求。
5.3.5 本节小结
1)在磁盘上进行一次读/写操作需要哪几部分时间?其中哪部分时间最长?
在磁盘上进行一次读/写操作花费的时间由寻道时间、延迟时间和传输时间决定。其中寻道时间是将磁头移动到指定磁道所需要的时间,延退时间是磁头定位到某一磁道的扇区(块号)所需要的时间,传输时间是从磁盘读出或向磁盘写入数据所经历的时间。一般来说,寻道时间因为要移动磁头臂,所以占用时间最长。
2)存储一个文件时,当一个磁道存储不下时,剩下部分是存在同一个盘面的不同磁道好还是存在同一个柱面上的不同盘面好?
上一问经说到,寻道时间对于一次磁盘访问的影响是最大的,若存在同一个盘面的不同磁道,则磁头臂势必要移动,这样会大大增加文件的访问时间,而存在同一个柱面上的不同盘面就不需要移动磁道,所以一般情况下存在同一个柱面上的不同盘面更好。
错题总结或需要注意的点
1.只能顺序:磁带
可以按任意次序读写:光盘,U盘,磁盘
2.磁盘调度中对读写时间影响最大的是寻道时间(这个是机械运动,耗时)
3.硬盘的操作系统引导扇区产生在对硬盘进行高级格式化时
4.静态磨损均衡算法比动态的算法表现更加优秀













