一战成硕
- 5.3 磁盘固态硬盘
- 5.3.1 磁盘
- 5.3.2 磁盘的管理
- 5.3.3 磁盘调度算法
5.3 磁盘固态硬盘
5.3.1 磁盘
磁盘是表面涂有磁性物质的物理盘片,通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中,磁头固定,磁盘在下面高速旋转。磁盘盘面上的数据存储在一组同心圆中,称为磁道。每个磁道与磁头一样宽,一个盘面有上千个磁道,磁道又划分为几百个扇区,每个扇区固定存储大小,一个扇区称为一个盘块,相邻磁道及相邻扇区通过一定间隙分割开来,以避免精度错误。由于扇区固定圆心角度划分,所以密度从最外道向里道增加,磁盘的存储能力受限于最内道的最大记录密度。
磁盘安装在一个磁盘驱动器中,它由磁头臂,用于旋转磁盘的主轴和用于数据输入输出的电子设备组成,多个盘片垂直堆叠,组成磁盘组,每个盘面对应一个磁头,所有磁头固定在一起,与磁盘中心距离相同且一起移动,所有盘片相对位置相同的磁道组成柱面,扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数,磁道数及磁盘面数决定,磁盘地址用柱面号·盘面号·扇区号。
磁盘按不同的方式可分为若干类型,磁头相对盘片的途径方向固定的,称为固定头磁盘,每个磁道一个磁头,磁头可移动的,称为活头磁盘,磁头臂可来回伸缩定位磁道,磁盘永远固定在磁盘驱动器中,称为固定盘磁盘,可移动和替换的,称为可换盘磁盘。
5.3.2 磁盘的管理
- 磁盘的初始化
一个新的磁盘只是一个磁性记录材料空白盘,在磁盘可以存储数据之前,必须将他分成扇区,以便磁盘控制器进行读写操作,这个过程称为低级格式化(或物理格式化)低级格式化为每个扇区使用特殊的数据结构,填充磁盘,每个扇区的数据结构通常由头部,数据区域(通常为512B)和尾部组成,头部和尾部包含了一些磁盘控制器的使用信息。 - 分区
在可以使用磁盘存储文件之前,操作系统还要将自己的数据结构记录到磁盘上,分为两部,第一步是将磁盘分为一个或多个柱面组成的分区(即我们熟悉的c盘d盘等形式的分区),每个分区的起始扇区的大小都记录在磁盘主引导记录的分区表中,第二步是,对物理分区进行逻辑格式化(创建文件系统),操作系统将初识的文件系统数据结构存储到磁盘上,这些数据结构包括空闲空间和已分配空间以及一个初识为空目录。
因扇区单位太小,为了提高效率,操作系统将多个相邻扇区组合在一起,形成一簇,为了更高效地管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只能是簇的整数倍,如果文件大小小于一簇(甚至是0字节),也要占用一簇的空间。 - 引导块
计算机启动时需要运行一个初始化程序(自举程序),它初始化cpu,寄存器,设备控制器和内存等,接着启动操作系统,为此,自举程序找到磁盘上的操作系统内核,将他加载到内存,并转到起始地址,从而开始操作系统的运行。
自举程序通常存放在ROM中,为了避免改变自举代码需要改变ROM硬件的问题,通常只在ROM中保留很小的自举程序装入程序,而将完整功能的引导程序保存在磁盘启动块上,启动块位于磁盘固定位置,具有启动分区磁盘称为启动磁盘或系统磁盘。
- 坏块
5.3.3 磁盘调度算法
一次磁盘读写操作时间由寻找(寻道)时间,旋转延迟时间和传输时间决定。
1)寻道时间Ts。活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间,这个时间除跨越n条磁道时间外,还包括启动磁臂的时间s。即:
Ts=m*n+s。
m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂启动时间约为2ms。
2)旋转延迟时间Tr。磁头定位到某一磁道扇区所需要时间,设磁盘的旋转速度为r,则:
Tr=1/2r
对于磁盘,典型的旋转速度为5400转/分,相当于一周11.1ms,则Tr为5.55ms,对于软盘,则其旋转速度为300到600转每分,则Tr为50到100ms。
3)传输时间Tt。从磁盘读出或向磁盘写入数据所经历时间,这个时间取决于每次读写的字节数b和磁盘旋转速度。
Tt=b/rN
r为磁盘每秒的转数,N为一个磁道的字节数。
在磁盘存取时间的计算中。寻道时间与磁盘调度算法相关,而延迟时间的传输时间都与磁盘旋转速度相关,且为线性相关,所以在硬件上,转速是磁盘性能的一个非常重要的参数,总平均存取时间Ta可以表示为:
Ta=Ts+1/2r+b/rN
注意,该平均存取时间公式,但该平均值没有多大意义,因为在实际磁盘IO操作中,存取时间与磁盘调度算法密切相关。
目前常用的磁盘调度算法:
(1)先来先服务(FIFS)
根据进程请求访问磁盘的贤惠顺序进行调度。
公平,若只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有望达到较好的性能,若有大量进程竞争使用磁盘,则这种算法在性能上往往接近于随机调度,所以实际磁盘调度中会考虑一些更为复杂的调度算法。
(2)最短寻找时间优先(SSTF)
选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,所在磁道距离最近的磁道,以便使每次的寻找时间最短,但是这种算法会产生饥饿现象。
(3)扫描算法(电梯调度算法)
在当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。
(4)循环扫描算法
在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。
(5)LOOK算法
磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。