磁盘调度算法简述

一 丶意义:良好的调度算法,能减少IO读取时间(磁盘读取(最慢)+读取+传输)  磁盘访问时间=寻道时间+旋转延迟时间+数据传输时间,

磁盘读写顺序:由上直下(柱面磁道),由外到里(柱面排序,外磁道速度最快),依次访问对应扇区(512bytes)

计算机中,各存储区域访问速度为  寄存器约等号≈cache>内存>>磁盘>其他外接物理设备

系统每进行一次IO中断,进行数据读写,首先要进行命中测试,若不在register,cache,memory中,则进行磁盘读取,先寻址,再进行io读入内存,读入后才能被cpu使用。

由磁盘中读写数据占用时间公式可知,其最主要的是寻道时间,旋转延迟时间,良好的磁盘调度算法,能减少IO读写时间,从而减少进程等待io时间,增加cpu利用率,防止磁臂黏着现象的发生。

参考资料:https://blog.csdn.net/hguisu/article/details/7408047

二丶名词解释:

1)磁臂粘着--------程序对某些磁道频繁访问,如多次访问同一磁道,则io队列中,多次对同一磁道进行频繁的读取,导致其他磁道的请求被搁置,即为磁臂黏着现象(类似于进程饿死)

2)寻道时间:移动磁臂到对应磁道(一般全部磁臂同时移动,部分可以分别移动),最慢

3)旋转延迟时间:磁盘旋转到对应扇区,对应磁柱进行读写

4)数据传输时间:读取数据,使用IO总线传入内存供cpu使用

三丶算法简述

1.先来先服务算法(FCFS)----FirstComeFirstServer

可使用链表(若有数量上限则单设头结点记录请求数,超出则拒绝)和数组(数组长度限制为请求数量,防止越界),依据请求时间先后,对io请求进行队列排列,依次出队

优劣:公平、简单;平均寻道时间可能较长

2.最短寻道算法(SSTF)

其访问规则为距离当前磁头最近的io请求进行服务,由“最近”一词和磁盘读写顺序可知,其可能会返回对一个柱面的磁道进行多次读写,造成磁盘黏着现象

基本实现:动态处理IO请求,可使用链表(双向链表,避免越界和前置判空操作)或者数组(内存允许则最好用数组,减少寻址时间)实现,使用插入排序算法,对IO请求进行动态排序,

指针p指向磁头的当前磁道和扇区对应的线形距离数字,对前置后驱元素进行判定,以距离较短者作为下次磁盘访问对象。

优劣:平均寻道时间比FCFS算法短,但可能会出现“饥饿现象”和“磁臂粘着”现象。

3.扫描算法(电梯算法SCAN)

原理:将各磁道请求映射为线形地址,进行单向线形扫描,一方为空,则反向,直至该磁道请求为空,切换下一磁道

算法实现:外嵌for对各柱面请求进行扫描,内嵌while包含俩个for循环,对选择的柱面进行来回扫描(一个增,一个减,双向),请求空则break。

优劣:消除了“饥饿”现象,但可能会出现“磁臂粘着”现象

4.循环扫描算法(CSCAN)

原理:改进SCAN,不改变方向,单方向扫描,若无则返回到最外层需要访问的磁道(没就0)

算法实现:参考SCAN,while去除内置为单个for,设为单向

优劣: 改进了对于边缘区磁道访问的不公平,但可能会出现“磁臂粘着”现象。

5.NStepScan

原理:为避免磁臂黏着现象发生,算法将磁盘请求队列分成若干个长度为N的子队列,磁盘调度按FCFS算法依次处理这些子队列。而每处理一个子队列时又是按照SCAN算法。

当处理某子队列时,又有新的磁盘I/O请求,便将新请求进程放入其他队列中,从而避免了粘臂现象。(逻辑上依然为SCAN算法,但是限制了队列数量,强制跳出某一柱面,减少了频繁访问同一磁道带来的黏着现象)

算法实现:依据原理,设置大小为N的指针数组(取余访问,实现循环),循环访问各个队列

6.FSCAN算法,

算法思想是,在扫描的过程中所有新产生的序列放在另外的一个队列中,当访问完当前队列之后,再访问新产生的一个队列。这种算法可以有效防止磁壁粘着现象。

实现:略

四丶其他策略

缓冲区策略:缓解高速读写设备与低速io设备带来的长时间数据等待,设立多缓冲,双缓冲等策略进行处理。

https://product.pconline.com.cn/itbk/software/dnyw/1707/9613894.html

算法处理策略:尽量减少IO中断次数,对可批量请求读写的数据进行批量请求,而不是一个个数据进行请求读写

(如在大数据排序处理中,使用分治策略,分批处理数据,在内存允许的情况下,直接读一批数据进行处理(多文件IO读入),处理后在缓冲区保存,满后才写入,减少中断次数)

原文地址:https://www.cnblogs.com/jing19960917/p/10727144.html

时间: 2024-10-22 02:50:09

磁盘调度算法简述的相关文章

设备管理之磁盘调度算法

[百度百科] 磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求.由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:[1] 先来先服务算法(FCFS), 最短寻道时间优先算法(SSTF), 扫描算法(SCAN), 循环扫描算法(CSCAN)

磁盘调度算法

磁盘优点 容量很大 每位的价格非常低 当关掉电源后存储信息不丢失 物理特性 ?? 磁盘表面覆盖着磁性物质,信息记录在磁表面上.固定头磁盘的每个磁道单独有一个磁头,这样就能使得计算机可以很快地从一个磁道转换到另一个磁道.但是这需要大量的头,设备成本很高.更通用的方式是每个盘面只有一个头,让它从一道移向另一道.这种动头设备需要硬件设备移动头. ?? 磁盘一般用于文件存储,设计原则是:成本低.容量大.速度高.扩大存储容量:a.增加每英寸磁道数目; b. 双面记录. ?? 存取盘块中的信息一般要有三部分

浅谈磁盘调度算法

在去年的操作系统考试和今年的软考中,多次提到磁盘调度问题,在此做个总结: 磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求.由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:         1.先来先服务算法(FCFS),         2.最短寻道时间优先算法(SSTF),         3.扫描算法(SCAN),         4.循环扫描算法(CSCAN) 例

磁盘调度算法FCFS、SSTF、SCAN、CSCAN详解

常见的磁盘调度算法有: 1.FCFS:先来先服务算法: 2.SSTF:最短寻道时间算法: 3.SCAN:扫描算法(也叫电梯调度算法): 4.CSCAN:循环扫描算法 算法的详细介绍: FCFS:算法思想非常简单,就是不论初始磁头在什么位置,都是按照服务队列的先后顺序依次处理进程,可以类比队列的先进先出.优点是进程处理起来非常简单,但缺点显而易见,就是平均寻道长度会很长. Java实现: public class fcfs {     Scanner x=new Scanner(System.in

电梯调度算法简述

0x00 简述 该算法基于BUS算法的结构,增加了在中间楼层是否停靠的判断和在顶.底层时下一个停靠点的寻找: 1.如果电梯在顶层,遍历请求队列中的所有请求,记录在运行方向上的:最近的同方向外部请求.最近的同方向内部请求.最远的反方向外部请求: 调度时,增加对电梯是否满员的判断,如果满员,则只满足内部请求,下一个停靠点定为最近的同方向内部请求:如果电梯未满,同时存在同方向的外部请求和内部请求时停靠在最近的请求楼层,不存在同方向请求时停靠在最远反方向外部请求楼层: 在底层时同理: 2.在中间楼层时,

FreeRTOS 学习笔记 5 —— 调度算法.简述

优先级抢占式调度: 1. 每个任务都赋予了一个优先级. 2. 每个任务都可以存在于一个或多个状态. 3. 在任何时候都只有一个任务可以处于运行状态. 4. 调度器总是在所有处于就绪态的任务中选择具有最高优先级的任务来执行. 这种类型的调度方案被称为"固定优先级抢占式调度".所谓"固定优先级"是指每个任务都被赋予了一个优先级,这个优先级不能被内核本身改变(只能被任务修改)."抢占式"是指当任务进入就绪态或是优先级被改变时,如果处于运行态的任务优先级

操作系统常用调度算法

一.先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度.当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源.创建进程,然后放入就绪队列.在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行.该进程一直运行到完成或发生某事件而阻塞后才放弃处理机. 优缺点:FCFS调度算法的特点是算法简单,但效率低:对长

调度算法

虚拟内存调度算法: 页面置换:在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断(page fault).当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间. OPT:最佳替换算法(optional replacement).替换下次访问距当前时间最长的页.opt算法需要知道操作系统将来的事件,显然不可能实现,只作为一种衡量其他算法的标准. LRU:最近最少使用(Least Recently Used).替换上次使用距离当前最远的页 F

操作系统核心原理-6.外存管理(上)磁盘基础

计算机是处理数据的机器,而数据就需要有地方存放.在计算机中,可供数据存放的地方并不太多,除了内存之外,最主要的存储数据的媒介就是磁盘.对于大多数计算机领域的人来说,磁盘通常被看做是一种外部设备.可是,对于现代操作系统来说,磁盘是不可或缺的.虽然早期的操作系统可以基于磁带,但由于操作系统复杂性和性能的不断提升,用磁带作为操作系统的载体已经不合时宜,取而代之的是磁盘.由于操作系统需要存放在磁盘上,且操作系统内的文件系统也是基于磁盘,所以,从某种程度来说,磁盘是操作系统不可分割的一部分,理解磁盘将对理