磁盘调度算法

news/2024/11/9 10:36:31/

img

1 一次磁盘读/写操作需要的时间

**寻找时间(寻道时间)**Ts:在读/写数据前,需要将磁头移动到指定磁道所花费的时间。
寻道时间分两步:

(1) 启动磁头臂消耗的时间:s。
(2) 移动磁头消耗的时间:假设磁头匀速移动,每跨越一个磁道消耗时间为m,共跨越n条磁道。

则寻道时间 Ts = s + m * n。

磁头移动到指定的磁道,但是不一定正好在所需要读/写的扇区,所以需要通过磁盘旋转使磁头定位到目标扇区。

img

延迟时间TR:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为r(单位:转/秒,或转/分),则平均所需延迟时间TR = (1/2)*(1/r) = 1/2r。

1/r就是转一圈所需的时间。找到目标扇区平均需要转半圈,因此再乘以1/2。

传输时间TR:从磁盘读出或向磁盘中写入数据所经历的时间,假设磁盘转速为r,此次读/写的字节数为b,每个磁道上的字节数为N,则传输时间TR = (b/N) * (1/r) = b/(rN)。

每个磁道可存N字节数据,因此b字节数据需要b/N个磁道才能存储。而读/写一个磁道所需的时间刚好是转一圈的时间1/r。

总的平均时间Ta = Ts + 1/2r + b/(rN),由于延迟时间和传输时间都是与磁盘转速有关的,且是线性相关。而转速又是磁盘的固有属性,因此无法通过操作系统优化延迟时间和传输时间。所以只能优化寻找时间。

2 磁盘调度算法

2.1 先来先服务算法(FCFS)

算法思想:根据进程请求访问磁盘的先后顺序进行调度。
假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。
按照先来先服务算法规则,按照请求到达的顺序,磁头需要一次移动到55、58、39、18、90、160、150、38、184号磁道。

img

磁头共移动了 45 + 3 + 19 + 21 + 72 + 70 + 10 + 112 + 146 = 498个磁道。响应一个请求平均需要移动498 / 9 = 55.3个磁道(平均寻找长度)。
优点:公平;如果请求访问的磁道比较集中的话,算法性能还算可以
缺点:如果大量进程竞争使用磁盘,请求访问的磁道很分散,FCFS在性能上很差,寻道时间长

2.2 最短寻找时间优先(SSTF)

算法思想:优先处理的磁道是与当前磁头最近的磁道。可以保证每次寻道时间最短,但是不能保证总的寻道时间最短。(其实是贪心算法的思想,只是选择眼前最优,但是总体未必最优)。

假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。

img

磁头总共移动了(100 -18)+ (184 -18) = 248个磁道。响应一个请求平均需要移动248 / 9 = 27.5个磁道(平均寻找长度)。
缺点:可能产生饥饿现象
本例中,如果在处理18号磁道的访问请求时又来了一个38号磁道的访问请求,处理38号磁道的访问请求又来了一个18号磁道访问请求。如果有源源不断的18号、38号磁道访问请求,那么150、160、184号磁道请求的访问就永远得不到满足,从而产生饥饿现象。这里产生饥饿的原因是磁头在一小块区域来回移动。

2.3 扫描算法(SCAN)

电梯算法(LOOK算法)。(扫到最大请求柱面)

假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续的访问55、58、39、18、90、160、150、38、184号磁道。

img

磁头共移动了(184 - 100)+ (184 -18) = 250个磁道。响应一个请求平均需要移动 250 / 9 = 27.5个磁道(平均寻找长度)。

扫描算法(一扫到底,然后依次扫回来去)

循环扫描算法

循环扫描(C-SCAN)调度是 SCAN 的一个变种,以提供更均匀的等待时间。像 SCAN 一样,C-SCAN 移动磁头从磁盘一端到磁盘另一端,并且处理行程上的请求。然而,当磁头到达另一端时,它立即返回到磁盘的开头,而并不处理任何回程上的请求。(一扫到底,然后迅速回到首柱面,再依次往后扫

C-SCAN磁盘调度

请求。(一扫到底,然后迅速回到首柱面,再依次往后扫

[外链图片转存中…(img-t59NNeKq-1648696162725)]


http://www.ppmy.cn/news/629743.html

相关文章

go mod tidy 提示错误 go mod tidy -go=1.16 go mod tidy -go=1.17

错误概览 执行 go mod tidy 时,提示如下错误 > go mod tidy github.com/myrepo/myproj importsgo.k6.io/k6 importsgo.k6.io/k6/cmd importsgithub.com/fatih/color loaded from github.com/fatih/colorv1.12.0,but go 1.16 would select v1.13.0To upgrade to t…

磁盘管理之动态磁盘和静态磁盘的区别

动态磁盘和静态磁盘的区别 1.更改磁盘容量 动态磁盘 :在不重新启动的情况下可更改磁盘容量大小,而且不丢失数据。 基本磁盘 :分区一旦创建,就无法更改容量大小,除非借助于特殊的磁盘工具软件。 2.磁盘空间的限制 动态…

磁盘的管理

二、实施计划(大概流程、任务分工) 1. 初始化新硬盘 2. 动态磁盘的管理 3. 管理磁盘配额 三、实施过程(步骤) 任务1. 步骤一:安装新磁盘 (1)在计算机内安装新磁盘后,必须经过初…

磁盘I/O极简总结

从物理层面上看,传统的机械磁盘一般包含有一个或多个圆形盘片,每个盘片有正反两面,称为盘面。有一根转轴(主轴) 从每个盘片的中心穿过,所有盘片都绕着转轴转动。   每个盘片的盘面在逻辑上被划分成多个同…

磁盘压力测试

磁盘压力测试 查看磁盘的IO安装iotop用dd命令模拟写入一个100G文件dd常用参数 iotop监控磁盘 iostat监控磁盘io安装iostat 模拟写入一个100G文件监控磁盘io 第三方磁盘压测工具fio安装fio示例脚本 查看磁盘的IO 每秒钟IO操作数(IOPS); sata硬盘在总线上的速度大约是6Gbps(750M…

磁盘基本知识介绍

数据库的数据存储在文件系统中。 文件系统是操作系统用来明确存储设备或分区上的文件 的方法和数据结构(存储设备常见的是磁盘,也有基于NAND Flash的固态硬盘) 磁盘上数据必须用一个三维地址唯一标示:柱面号、盘面号、块号(磁道上的盘块)。 硬盘只是磁盘…

磁盘的基础知识

文章目录 磁盘是什么磁盘图鉴详解磁盘与硬盘有什么关系两者的关系硬盘的分类 磁盘的分区分区是什么分区的实质MBR和GPT分区表MBRGPT 为什么要分区 磁盘是什么 磁盘(disk)是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质,可以存储大量的二进制数…

什么是磁盘?磁盘的组成?接口和分区?

各位博友,大家好。利用学习期间所学的知识,给大家分享一下本人的一些学习笔记心得。本章介绍一下电脑的主要硬件—磁盘。 一、磁盘介绍 磁盘、硬盘、disk都是属于一个东西。其与内存的区别是容量要远大于内存 。 机械硬盘(HDD)&am…