磁盘
磁盘管理
1. 磁盘初始化
一个新的磁盘只是一个磁性记录材料的空白盘。在磁盘可以存储数据之前,必须将它分为扇区,一遍磁盘控制器能够进行读写操作。
这个过程称为低级格式化(物理格式化)。低级格式化为每个扇区使用特殊的数据结构,填充磁盘。每个扇区通常由头部、数据区域和尾部组成。头部和尾部包含了一些磁盘控制器的使用信息。大多数磁盘在出厂时就已经被低级初始化。
2. 分区
在使用磁盘存储文件之前,操作系统首先需要对磁盘进行分区,并且将每个分区的其实扇区和大小都记录在磁盘主引导记录的分区表中。完成分区后,需要对每个分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储在磁盘上,这些数据结构包扣空闲空间、已分配的空间以及一个初始为空的目录。
3. 引导块
计算机启动时需要运行一个初始化程序,它初始化CPU和内存等,接着启动操作系统。为此,初始化程序找到磁盘上的操作系统内核,将它加载到内存,并转到起始地址,从而开始操作系统的运行。
初始化程序通常存放在ROM中,为了避免初始化程序改变而需要改变ROM硬件的问题,通常只在ROM中保留很小的初始化程序,而将完整功能的引导程序保存在磁盘的启动块上,启动块位于磁盘的固定位置。具有启动分区的磁盘称为启动磁盘或系统磁盘。
以实际系统引导过程为例,操作系统将磁盘分为多个分区,引导代码被存储在磁盘的第0号扇区,称为主引导分区(MBR)。引导首先运行ROM中的代码,这个代码指示系统的从MBR中读取引导代码(bootloader)。当系统找到bootloader时,bootloader会识别并加载操作系统的核心的所在分区并加载操作系统内核。核心一旦被加载并开始执行,它会继续初始化系统、加载设备驱动、启动系统服务,最终为用户提供一个可操作的界面或环境。
4. 坏块
随着时间的推移,物理磁盘上可能会出现无法读写的区域,这些区域被称为坏块。坏块可以是出厂时就存在的,也可以是由于磁盘的长期使用和磨损导致的。
对坏块的处理实质上就是使用某种机制使系统不去使用坏块。
机械硬盘调度算法
在磁盘性能指标我们知道 磁盘数据读取时间 包含寻道时间、旋转延迟以及传输时间。在一个时刻,磁盘可能有多个数据读写请求,这些数据可能分布在不同的磁道上,如何分配处理这些读写请求的顺序,也很大程度上影响了磁盘的性能。
磁道的编号顺序:
在磁盘驱动器中,磁道编号通常是从外到内的。磁盘表面被划分为同心圆,这些同心圆称为磁道。最外面的磁道通常被赋予最小的编号(例如,0号磁道),随着磁道向内圈逐渐增加,编号递增。这种编号方式允许磁盘的读写头更容易地定位到磁道的起始位置,因为磁盘的旋转通常是从外缘开始。
磁盘寻道调度算法包含以下几种:
FCFS
FCFS 即 First Come First Service,先来先服务算法。
按照请求进入队列的顺序来服务请求。
SSTF
SSTF 即 Shortest Seek Time First,最短寻道时间优先算法。
磁盘进行调度时每次都选择 距离当前磁头位置最近的请求 进行服务。
SCAN
SCAN 即 电梯调度算法。
磁头从一个方向开始移动,直到该方向上没有更多的请求或达到边界,然后磁头改变方向并继续服务请求。因为磁头移动规律与电梯运行类似,所以这种算法也称为电梯调度算法。
C-SCAN
C-SCAN 即 Cycle Scan,循环扫描算法。
和SCAN相似,但当磁头达到一个方向的边界时,它会立即跳回到另一边开始,并继续同一方向的移动。
算法 | 优点 | 缺点 |
---|---|---|
FCFS | 公平 简单 | 可能不是最优的,磁盘臂移动距离可能很长 |
SSTF | 通常比FCFS更高效 最小化磁盘臂的移动 | 可能导致某些请求长时间延迟或饿死 |
SCAN | 避免长时间等待 | 磁盘两端可能经历不公平的等待时间 |
C-SCAN | 提供更均匀的等待时间 | 中间部分的请求可能会被经过两次而不进行服务,直到磁头再次回来 |