磁盘调度算法

news2024/11/15 14:04:14

磁盘调度算法

为了减少对文件的访问时间,应采用一种最佳的磁盘调度算法,以使各进程对磁盘的平均访问时间最少。由于在访问磁盘时主要是寻道时间。因此,磁盘调度的目标是使磁盘的平均寻道时间最少。

image-20230218223338628

1.先来先服务(FCFS)

算法原则: 根据进程请求访问磁盘的先后顺序进行调度。

优点: 公平简单每个进程都能依次得到处理,不会出现某一进程长时间得不到满足的情况。

缺点: 平均寻道时间会有点长,适用于磁盘I/O进程数目较少的场合。

假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。
按照FCFS的规则,按照请求到达的顺序,磁头需要依次移动到55、58、39、18、90、160、150、38、184号磁道。

image-20230218233213479

2.最短寻找时间优先(SSTF)

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

优点: 性能较好,平均寻道时间短。

缺点: 可能产生“饥饿”现象(磁头长时间在某一区域内移动)。

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

image-20230218233634875

3.扫描算法(SCAN)

算法原则: 为了防止SSTF算法的“饥饿”问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。

优点: 性能较好,平均寻道时间较短,不会产生饥饿现象。

缺点:

①只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了。
②SCAN算法对于各个位置磁道的响应频率不平均(如:假设此时磁头正在往右移动,且刚处理过90号磁道,那么下次处理9O号磁道的请求就需要等磁头移动很长一段距离;而响应了184号磁道的请求之后,很快又可以再次响应184号磁道的请求了)。

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

image-20230219000320143

4.LOOK调度算法

算法原则: 扫描算法(SCAN)中,只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了。LOOK调度算法就是为了解决这个问题,如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向(边移动边观察,因此叫LOOK)。

优点: 比起SCAN算法来,不需要每次都移动到最外侧或最内侧才改变磁头方向,使寻道时间进一步缩短。

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

image-20230219000734717

5.循环扫描算法(C-SCAN)

算法原则: SCAN算法对于各个位置磁道的响应频率不平均,而C-SCAN算法就是为了解决这个问题。规定只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。

优点: 比起SCAN来,对于各个位置磁道的响应频率很平均。

缺点: 只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了,并且磁头返回时其实只需要返回到18号磁道即可,不需要返回到最边缘的磁道。另外,比起SCAN算法来,平均寻道时间更长。

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

image-20230219001148751

6.C-LOOK调度算法

算法原则: C-SCAN算法的主要缺点是只有到达最边上的磁道时才能改变磁头移动方向,并且磁头返回时不一定需要返回到最边缘的磁道上。C-LOOK算法就是为了解决这个问题。如果磁头移动的方向上已经没有磁道访问请求了,就可以立即让磁头返回,并且磁头只需要返回到有磁道访问请求的位置即可。

优点: 比起C-SCAN算法来,不需要每次都移动到最外侧或最内侧才改变磁头方向,使寻道时间进一步缩短。

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

image-20230219001540273

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java Character 类,超详细整理,适合新手入门

目录 一、什么是Java Character 类? 二、Character类有哪些常用的静态方法? 1、将一个字符分别转换为大写字母和小写字母 2、如何判断一个字符是否是数字? 3、如何将一个字符转换为数字? 4、如何将一个字符串转换为字符数组…

【c++学习】入门c++(中)

目录一. 前言二. 函数重载1. 概念2.函数名修饰规则三 .引用(&)1. 概念2. 引用特性3.应用1.做参数2. 做返回值3. 传值、传引用效率比较4.引用和指针的区别四 . 结语一. 前言 小伙伴们大家好,今天我们继续学习c入门知识,今天的…

SQL性能优化的47个小技巧,你了解多少?

收录于热门专栏Java基础教程系列(进阶篇) 1、先了解MySQL的执行过程 了解了MySQL的执行过程,我们才知道如何进行sql优化。 客户端发送一条查询语句到服务器;服务器先查询缓存,如果命中缓存,则立即返回存…

platform 总线

驱动的分离与分层思想 分离:硬件信息分离; 在编写硬件驱动的时候,需要操作许多硬件寄存器。比如gpio 驱动,你需要知道gpio控制器 寄存器的地址,你想要哪个gpio输出?或是输入? 这些操作最终都是靠设置寄存…

19 pandas 分层索引与计算

文章目录分层设置与查询数据index 为有序index 为无序(中文)查看数据示例多层索引的创建方式(行)1、from_arrays 方法2、from_tuples 方法3、from_product 方法多层索引的创建方式(列)分层索引计算MultiIndex 参数表分…

Mybatis笔记整理

1. 相关文档地址 中文文档 https://mybatis.org/mybatis-3/zh/index.htmlMybatis可以配置成适应多种环境&#xff0c;不过每个SqlSessionFactory实例只能选择一种环境。Mybatis默认事务管理器是JDBC&#xff0c;连接池&#xff1a;POOLEDMaven仓库:下载地址<dependency>…

KVM-1、Linux 操作系统及虚拟化

1. 前言 一台计算机是由一堆硬件设备组合而成,在硬件之上是操作系统,操作系统与计算机硬件密不可分,操作系统用来管理所有的硬件资源提供服务,各个硬件设备是通过 总线 进行连接起来的: 在操作系统之上,需要一个人机交互接口,我们才能使用计算机对其发送指令,这个人机…

C语言【动态内存管理 后篇】

动态内存管理 后篇&#x1fac5;经典例题&#x1f926;‍♂️题目1&#x1f926;‍♂️题目2&#x1f926;‍♂️题目3&#x1f926;‍♂️题目4&#x1fac5;C/C程序的内存开辟前面的一篇文章动态内存管理 前篇&#xff0c;我们已经了解过了动态内存管理的相关信息&#xff0c…

数据库管理-第五十七期 多灾多难(20230218)

数据库管理 2023-02-18第五十七期 多灾多难1 网络震荡2 挂一大片3 恢复虚拟机总结第五十七期 多灾多难 2月第三周&#xff0c;怎么说呢&#xff0c;多灾多难的一周&#xff0c;一周两次严重故障&#xff0c;而且事情还都发生在24小时之内&#xff0c; 1 网络震荡 本周四一大…

不要让GPT成为你通向“学业作弊”的捷径——使用GPT检测工具来帮助你保持正确的方向

不要让GPT成为你通向“学业作弊”的捷径——使用GPT检测工具来帮助你保持正确的方向 最近&#xff0c;多所美国高校以及香港大学等都明确禁止在校使用ChatGPT等智能文本生成工具。GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种自然语言处理技术&#x…

04 C++提高编程

文件基本上是黑马程序员的文档&#xff0c;部分添加自己需要的内容&#xff0c;仅用于自己学习&#xff01;链接&#xff1a;黑马程序视频课程GitHub:源代码 C提高编程 本阶段主要针对C泛型编程和STL技术做详细讲解&#xff0c;探讨C更深层的使用 1 模板 1.1 模板的概念 模…

spring的注解

Spring的常用注解常用注解EnableWebMvcConfigurationBeanSpringBootApplication && MapperScanControllerResponseBodyRestControllerRequestMapping("robot")ResourceRequestMappingService常用注解 EnableWebMvc 在配置类中开启Web MVC的配置支持。 Con…

力扣62.不同路径

文章目录力扣62.不同路径题目描述方法1&#xff1a;暴力深搜(超时未通过)方法2&#xff1a;动态规划力扣62.不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器…

[安装] Dell电脑安装系统时看不到固态硬盘的解决方案

前言如图&#xff0c;配备NVME固态硬盘的机器在重新安装时候没有看到固态硬盘。这其实是由于安装镜像缺少IRST驱动导致的。1.硬盘模式设置为AHCI大多数戴尔机器出厂BIOS默认硬盘模式为Raid On而非AHCI&#xff0c;WIN10纯净版镜像中自带NVME驱动&#xff0c;可以识别AHCI模式下…

台积电后悔莫及,美国没有将它当成自己人,大陆市场重要性凸显

台积电对于赴美设厂可谓变了再变&#xff0c;日前台积电创始人张忠谋就发声指美国“美国认为他可以通钱来快速进入芯片市场&#xff0c;这太天真了”&#xff0c;这是在台积电获得美国的补贴少得可怜之后的表态&#xff0c;凸显出对美国的不满。台积电对于赴美设厂一开始出现截…

postman教程

一、前言 1、postman 是什么 postman 是一款 HTTP 客户端工具&#xff0c;它可以用来调试和测试接口。通过 HTTP 协议&#xff0c;将请求数据发送到服务端&#xff0c;并从服务端获取响应数据。 2、为什么要使用 postman 后端开发者写的代码在大多数情况下是要给到前端开发…

day46【代码随想录】动态规划之打家劫舍 III、买卖股票的最佳时机、买卖股票的最佳时机II

文章目录前言一、打家劫舍 III&#xff08;力扣337&#xff09;【较难】二、买卖股票的最佳时机&#xff08;力扣121&#xff09;三、买卖股票的最佳时机II&#xff08;力扣122&#xff09;前言 1、打家劫舍 III 2、买卖股票的最佳时机 3、买卖股票的最佳时机II 一、打家劫舍 …

C++——二叉树进阶oj题

目录二叉树创建字符串二叉树的分层遍历1二叉树的分层遍历2给定一个二叉树, 找到该树中两个指定节点的最近公共祖先二叉树搜索树转换成排序双向链表。根据一棵树的中序遍历与后序遍历构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树二叉树创建字符串 题目链接 思路&#x…

Python 之 Matplotlib 散点图、箱线图和词云图

文章目录一、散点图1. scatter() 函数2. 设置图标大小3. 自定义点的颜色和透明度4. 可以选择不同的颜色条&#xff0c;配合 cmap 参数5. cmap 的分类5.1 Sequential colormaps&#xff1a;连续化色图5.2 Diverging colormaps&#xff1a;两端发散的色图 .5.3 Qualitative color…

Python获取zabbix问题触发器

背景&#xff1a;阿里云的ECS服务器因为阿里云升级插件&#xff0c;导致安全防护程序重启&#xff0c;产生不同的端口。导致低自动发现注册的端口 大量报警。 解决&#xff1a;杀掉关于因为非业务 变更的端口检测的触发器。 相关文档&#xff1a; Zabbix监控之主机端口监控自…