操作系统课程笔记:存储管理 — 磁盘管理

目录

磁盘(机械)的结构

物理格式

寻址方式

数据的物理地址形式 CHS

数据的逻辑地址形式 LBA

数据格式(磁盘低级格式化的格式)

磁盘访问时间

磁盘调度算法 — 减少磁盘寻道时间()

先来先服务 FFCS — 公平低效

最短寻道时间优先 SSTF — 高效不公平(易停留在中间)

扫描算法 SCAN — 每个磁道的响应频率存在差异

循环扫描算法 C-SCAN

LOOK 与 C-LOOK算法


磁盘(机械)的结构

物理格式

  1. 磁盘结构
    • 磁头:用于读写数据,通过改变磁性物质的极性来存储信息,读取时检测这些变化。
    • 盘片:金属基底涂覆磁性材料,分为多个磁道,每个磁道包含多个扇区(通常512字节)。
    • 主轴电机:驱动盘片高速旋转,影响数据传输速度。
    • 控制电路:管理磁头、电机和数据传输。
    • 缓存:临时存储数据,提升访问速度。
    • 接口:连接计算机,如SATA、SAS。
  1. 物理格式
    • 磁道:同心圆,每个磁道有多条,存储数据。
    • 扇区:磁道分割部分,固定大小(512字节或更大)。
    • 分区结构:包括主引导记录(MBR)、分区表、文件系统和数据区,管理数据存储和访问。
  1. 工作原理
    • 读写数据时,磁头移动到磁道,旋转到正确扇区,通过磁性变化读写数据。
    • 寻道时间和旋转延迟影响性能,转速快则传输快。
    • 数据存储分割成扇区,文件系统管理这些数据和访问方式。
  1. 数据存储与访问
    • 数据存储在指定扇区,文件系统提供索引和访问方式。
    • 缓存存储频繁访问数据,提升速度,缓存大小影响性能。

寻址方式

数据的物理地址形式 CHS

  • 磁道号(Cylinder):磁盘的一个圆柱形区域,沿着盘片的半径方向划分。每个磁道上存储的数据被称为一个扇区。
  • 磁头号(Head):硬盘的读写头,用于在盘面上读写数据。一块硬盘可能有多个盘面,每个盘面都有一个磁头号。
  • 扇区号(Sector):每个磁道被划分为多个扇区,是数据存储的最小单位。

例如,CHS地址为(0, 1, 1)表示磁盘的第0磁道、第1磁头、第1扇区的位置。

物理地址寻址方式已经逐渐被淘汰,因为它受到磁头寻道时间、盘片旋转延迟等物理因素的限制。

数据的逻辑地址形式 LBA

在硬盘或其他存储设备上,数据被组织成一系列的块(block),每个块有一个唯一的地址。

LBA是一种寻址方式,它将每个逻辑块映射到一个唯一的数字地址。这样,当操作系统或应用程序需要读取或写入数据时,只需要指定逻辑块的LBA地址,而不必关心物理磁道、磁头或扇区的具体位置。

  • 基本单位为块:块是一个连续的数据单元,通常大小为512字节或4KB。
  • 线性增长:逻辑块号按照线性方式增长,从0开始逐渐增大。

总的来说,LBA方式更加高效、易于管理,已经成为现代磁盘访问的主流方式。

数据格式(磁盘低级格式化的格式)

磁盘访问时间

访问时间包括

▪ 寻道(seek)时间:找到正确的磁道

▪ 延迟时间:旋转(rotation)到正确的扇区

▪ 传输(transfer)时间:读写数据

在磁盘存取时间的计算中,寻道时间与磁盘调度算法相关,下面将会介绍分析几种算法,减少寻道时间,而延迟时间和传输时间都与磁盘旋转速度相关,且为线性相关,所以在硬件上,转速是磁盘性能的一个非常重要的参数。

虽然这里给出了总平均存取时间的公式,但是这个平均值是没有太大实际意义的,因为在实际的磁盘I/O操作中,存取时间与磁盘调度算法密切相关。调度算法直接决定寻找时间,从而决定了总的存取时间。

磁盘调度算法 — 减少磁盘寻道时间()

先来先服务 FFCS — 公平低效

先来先服务(First-Come,First-Served,FCFS),顾名思义,先到来的请求,先被服务。

以这个序列为例子:

98,183,37,122,14,124,65,67

那么,磁盘的写入顺序是从左到右,如下图:

先来先服务算法总共移动了 640 个磁道的距离,这么一看这种算法,比较简单粗暴,但是如果大量进程竞争使用磁盘,请求访问的磁道可能会很分散,那先来先服务算法在性能上就会显得很差,因为寻道时间过长。

最短寻道时间优先 SSTF — 高效不公平(易停留在中间)

最短寻道时间优先(Shortest Seek First,SSF)算法的工作方式是,优先选择从当前磁头位置所需寻道时间最短的请求(处理的磁道是与当前磁头所在磁道距离最近的磁道)

以这个序列为例子:

98,183,37,122,14,124,65,67

那么,那么根据距离磁头( 53 位置)最近的请求的算法,具体的请求则会是下列从左到右的顺序:

65,67,37,14,98,122,124,183

磁头移动的总距离是 236 磁道,相比先来先服务性能提高了不少。

但这个算法可能存在某些请求的饥饿,因为本次例子我们是静态的序列,看不出问题,假设是一个动态的请求,如果后续来的请求都是小于 183 磁道的,那么 183 磁道可能永远不会被响应,于是就产生了饥饿现象,这里产生饥饿的原因是磁头在一小块区域来回移动

扫描算法 SCAN — 每个磁道的响应频率存在差异

最短寻道时间优先算法会产生饥饿的原因在于:磁头有可能再一个小区域内来回得移动。

为了防止这个问题,可以规定:磁头在一个方向上移动,访问所有未完成的请求,直到磁头到达该方向上的最后的磁道,才调换方向,这就是扫描(Scan)算法

  • 朝着某个方向移动, 直到到达另外一端,逆转方向

这种算法也叫做电梯算法,比如电梯保持按一个方向移动,直到在那个方向上没有请求为止,然后改变方向。

还是以这个序列为例子,磁头的初始位置是 53:

98,183,37,122,14,124,65,67

那么,假设扫描调度算先朝磁道号减少的方向移动,具体请求则会是下列从左到右的顺序:

37,14,0,65,67,98,122,124,183

磁头先响应左边的请求,直到到达最左端( 0 磁道)后,才开始反向移动,响应右边的请求。

扫描调度算法性能较好,不会产生饥饿现象,但是存在这样的问题,中间部分的磁道会比较占便宜,中间部分相比其他部分响应的频率会比较多,也就是说每个磁道的响应频率存在差异

循环扫描算法 C-SCAN

扫描算法使得每个磁道响应的频率存在差异,那么要优化这个问题的话,可以总是按相同的方向进行扫描,使得每个磁道的响应频率基本一致

循环扫描(Circular Scan, CSCAN )规定:只有磁头朝某个特定方向移动时,才处理磁道访问请求,而返回时直接快速移动至最靠边缘的磁道,也就是复位磁头,这个过程是很快的,并且返回中途不处理任何请求,该算法的特点,就是磁道只响应一个方向上的请求

还是以这个序列为例子,磁头的初始位置是 53:

98,183,37,122,14,124,65,67

那么,假设循环扫描调度算先朝磁道增加的方向移动,具体请求会是下列从左到右的顺序:

65,67,98,122,124,183,199,0,14,37

磁头先响应了右边的请求,直到碰到了最右端的磁道 199,就立即回到磁盘的开始处(磁道 0),但这个返回的途中是不响应任何请求的,直到到达最开始的磁道后,才继续顺序响应右边的请求。

循环扫描算法相比于扫描算法,对于各个位置磁道响应频率相对比较平均。

LOOK 与 C-LOOK算法

扫描算法和循环扫描算法,都是磁头移动到磁盘「最始端或最末端」才开始调换方向。

优化的思路就是磁头在移动到「最远的请求」位置,然后立即反向移动。

针对 SCAN 算法的优化则叫 LOOK 算法,它的工作方式,磁头在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端,反向移动的途中会响应请求

  • 沿着某个方向移动, 直到该方向没有请求,逆转方向

针对 C-SCAN 算法的优化则叫 C-LOOK,它的工作方式,磁头在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端,反向移动的途中不会响应请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值