前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >磁盘调度

磁盘调度

作者头像
shysh95
发布2021-10-26 13:30:07
9940
发布2021-10-26 13:30:07
举报
文章被收录于专栏:shysh95shysh95

Hi~朋友,关注置顶防止错过消息

为什么需要磁盘调度算法?

磁盘调度算法是为了提高磁盘的访问性能,一般是通过优化磁盘的访问请求顺序来做的。其中寻道是磁盘较为耗时的部分,因此如果请求顺序得当,可以节省一些不必要的寻道时间。

寻道算法有几种?

  • 先来先服务算法
  • 最短寻道时间优先算法
  • 扫描算法
  • 循环扫描算法
  • LOOK与C-LOOK算法

假设磁头的初始位置在53磁道。

先来先服务算法

如果请求的顺序如下:

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

那么磁盘的写入顺序如下图:

大量应用进程竞争使用磁道,访问的磁道一般比较分散,这种算法性能低下,寻道时间过长。

最短寻道算法

该算法优先选择从当前磁头位置所需寻道时间最短的请求,

如果请求的顺序如下:

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

那么磁盘的写入顺序为:65,67,37,14,98,122,如下图:

该算法相对于先来先服务寻道时间会减少很多,但是会造成饥饿现象,因为我们的磁盘的请求随时都可能产生,假设后续的请求都是小于183磁道,那么183磁道的请求永远不会被响应,于是就产生了饥饿现象。

扫描算法

扫描算法(电梯算法)规定:磁头在一个方向上移动,访问所有未完成的请求,直到磁头到达该方向上的最后的磁道才调换方向。

如果请求的顺序如下:

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

假设前进的方向是磁道号减少的方向,那么处理请求的顺序是37,14,0,65,67,98,122,124,183,如下图:

扫描算法虽然不会产生饥饿,但是对于中间部分的磁道来说响应较快,边缘部分响应较慢。

循环扫描算法

循环扫描算法规定:磁头只能朝某个方向移动,返回时直接复位磁头(这个很快),并且返回过程中不处理任何请求。

如果请求的顺序如下:

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

假设磁头先朝磁道增加的方向移动,处理请求顺序则是:65,67,98,122,124,183,199,0,14,37,如下图:

循环扫描算法相比于扫描算法,每个磁道的响应频率比较平均。

LOOK与C-LOOK算法

LOOK算法和C-LOOK算法分别是对扫描算法和循环扫描算法的优化,优化的思路就是:磁头在移动到最远的请求位置,然后立刻向反方向移动。

  • LOOK算法反向移动途中会响应请求
  • C-LOOK反向移动途中不响应请求
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员修炼笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档