调度程序采用什么算法选择一个进程(作业)?

如何评价调度算法的性能?

调度准则

CPU利用率 – 使CPU尽可能的忙碌
吞吐量 – 单位时间内运行完的进程数
周转时间 – 进程从提交到运行结束的全部时间
等待时间 – 进程在就绪队列中等待调度的时间片总和

响应时间 – 从进程提出请求到首次被响应的时间段[在分时系统环境下不是输出完结果的时间]

调度算法影响的是等待时间,而不能影响进程真正使用 CPU 的时间和 I/O 时间

调度算法

• 先来先服务(FCFS)
• 短作业优先(SJF)
• 优先权调度(Priority Scheduling)
• 时间片轮转(Round Robin)
• 多级队列调度(Multilevel Queue)
• 多级反馈队列调度算法(Multilevel Feedback Queue)

5-2 先来先服务(FCFS)

First-Come, First-Served (FCFS) Scheduling

最简单的调度算法
可用于作业或进程调度
算法的原则是按照作业到达后备作业队列(或进程进入就绪队列)的先后次序来选择作业(或进程)

FCFS 算法属于非抢占方式: : 一旦一个进程占有处理机 , 它就一直运行下去,直到该进程完成或者因等待某事件而不能继续运行时才释放处理机 。 

FCFS 算法易于实现,表面上很公平,实际上有利于长作业,不利于短作业;有利于 CPU 繁忙型,不利于 I/O 繁忙型

Convoy effect  护航效应
假设有一个CPU进程和许多I/O型进程
当CPU进程占用CPU运行时, I/O型进程可能完成了其I/O操作,回到就绪队列等待CPU, I/O设备空闲
CPU进程释放CPU后, I/O型进程陆续使用CPU,并很快转为 I/O操作,CPU空闲

5-3 短作业优先(SJF)

(关联到每个进程下次运行的 CPU 脉冲长度,调度最短的进程)

两种情况:

非抢占式调度 – – 一旦进程拥有 CPU , 它的使用权限只能在该 CPU 脉冲结束后让出

抢占式调度 – – 发生在有比当前进程剩余时间片更短的进程到达时,也称为最短剩余时间优先调度

SJF 是最优的 – – 对一组指定的进程而言 , 它给出了最短的平均等待时间

采用SJF有利于系统减少平均周转时间,提高系统吞吐量。

一般情况下SJF调度算法比FCFS调度算法的效率要高一些, 但实现相对要困难些。

如果作业的到来顺序及运行时间不合适,会出现饥饿现象,例如,系统中有一个运行时间很长的作业JN,和几个运行时间小的作业,然后,不断地有运行时间小于JN的作业的到来,这样,作业JN就因得不到调度而饿死。 另外,作业运行的估计时间也有问题。

5-4 优先级和RR 时间片轮转

优先权调度(Priority Scheduling)

每个进程都有自己的优先数[整数]

CPU分配给最高优先级的进程[假定最小的整数最高的优先级]

SJF是以下一次CPU脉冲长度为优先数的优先级调度

1. 静态优先权在进程创建时确定,且在整个生命期中保持不变

2. 静态优先权的问题 Problem=Starvation – low priority processes may never execute
(问题饥饿 – 低优先级的可能永远得不到运行).
一个很有意思的例子:当MIT的IBM7094机器于1973年关掉时,人们发现一个于1967年提交的一个低优先权的进程还没有得到运行。
Solution=Aging – as time progresses increase the priority of the process
(解决方法=老化 – 视进程等待时间的延长提高其优先数)

动态优先权是指进程的优先权可以随进程的推进而改变,以便获得更好的调度性能

改变优先权的因素

  1. 进程的等待时间
  2. 已使用的时间处理机
  3. 资源使用情况

时间片轮转(Round Robin)

每个进程将得到小单位的 CPU 时间[时间片], 通常为 10 - 100 毫秒 。时间片用完后 , 该进程将被抢占并插入就绪队列末尾

一般来说,RR的平均周转时间比SJF长,但响应时间要短一些

1. q large –> FCFS
2. q small –> q q must be large with respect o to context switch, otherwise overhead s is too high (q 相对于切换上下文的时间而言足够长,否则将导致系统开销过大 ).

一组进程的平均周转时间并不一定随着时间片的增大而降低。一般来说,如果大多数(80%)进程能在一个时间片内完成,就会改善平均周转时间

5-5 多级队列、多级反馈队列

多级队列调度(Multilevel Queue)

多级队列
按进程的属性来分类,如进程的类型、优先权、占用内存的多少,每类进程组成一个就绪队列,每个进程固定地处于某一个队列,如
Ready queue is partitioned into separate queues(就绪队列分为):
     foreground (interactive)(前台)[交互式]
     background (batch) (后台) [批处理]
Each queue has its own scheduling algorithm(每个队列有自己的调度算法)
   foreground – RR
   background – FCFS
Scheduling must be done between the queues(调度须在队列间进行).

固定优先级调度,即前台运行完后再运行后台。有可能产生饥饿

给定时间片调度,即每个队列得到一定的 CPU 时间,进程在给定时间内执行;如,80% 的时间执行前台的 RR 调度,20% 的时间执行后台的 FCFS 调度

多级反馈队列调度算法(Multilevel Feedback Queue)

存在多个就绪队列,具有不同的优先级,各自按时间片轮转法调度

各个就绪队列中时间片的大小各不相同,优先级越高的队列时间片越小。

允许进程在队列之间移动

当一个进程执行完一个完整的时间片后被抢占处理器,被抢占的进程优先级降低一级而进入下级就绪队列,如此继续,直至降到进程的基本优先级。而一个进程从阻塞态变为就绪态时要提高优先级

最后会将I/O型和交互式进程留在较高优先级队列

进程能在不同的队列间移动;可实现老化

多级反馈队列调度程序由以下参数定义):
number of queues ( 队列数 )
scheduling algorithms for each queue ( 每一队列的调度算法 )
method used o to determine when o to upgrade a a process ( 决定进程升级的方法 )
method used o to determine when o to demote a a process ( 决定进程降级的方法 )
method used o to determine which queue a a process will enter when that process needs service ( 决
定需要服务的进程将进入哪个队列的方法

s5-2 Cpu调度算法相关推荐

  1. 操作系统:Java模拟CPU调度算法(非抢占短进程优先、可抢占优先权调度、多级反馈队列调度)

    本人是个普通学生,写下博客用于自我复习.自我总结. 本人编写算法水平不高,仅供各位参考. 首先,先简述一下各个算法的定义.因为我个人在查阅算法相关信息时,发现这些算法在某种程度上来说,可能会存在一些歧 ...

  2. 虚拟服务器cpu算法,一种灵活高效的虚拟CPU调度算法

    I/O虚拟化[是虚拟化技术的一个核心部分, 使得虚拟机[可以共享服务器I/O资源.目前, I/O虚拟化技术的发展仍然相对滞后, 出于安全性的考虑, 虚拟机监控器[会干预虚拟机的I/O操作, 同时, 虚 ...

  3. CPU调度算法——FCFS算法/SJF算法/优先级调度算法/RR算法

    文章目录 一.先来先服务(FCFS)调度算法 二.最短作业优先(SJF)算法 1. 非抢占式SJF 2. 抢占式SJF 三.优先级调度算法 1. 非抢占式优先级调度算法 2. 抢占式优先级调度算法 四 ...

  4. 操作系统CPU调度算法

    前言 什么是调度算法 在操作系统中调度是指一种资源分配的过程,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法.对于不同的的系统和系统目标,通常采用不同的调度算法 为什么需要调度算法 计算 ...

  5. 进程调度算法java,CPU调度算法 - 计算机札记大全 - JavaEye技术网站

    两种进程调度算法:1)优先数调度:2)循环轮转调度 ①本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态. ②为了便于处理,程序中的某进程运行时间以时间片为单位计算.各 ...

  6. 腾讯云五年CVM云服务器配置价格表(S5标准型/CPU内存/带宽/节点/系统盘)

    腾讯云五年CVM云服务器,这次五年时长的优惠服务器提供的是标准型S5云服务器,采用Intel® Xeon® Cascade Lake或者Intel® Xeon® Cooper Lake处理器,主频2. ...

  7. 操作系统原理第五章:CPU调度

    目录 1 CPU调度基本概念 1.1 基本概念 1.2 CPU调度的时机 1.3 CPU调度方案 2 CPU调度算法 2.1 先来先服务(FCFS) 2.2 短作业优先(SJF) 2.3 优先级 2. ...

  8. CPU调度(CPU Scheduling)

    Basic Concepts Scheduling Criteria(调度标准) CPU利用率(CPU utilization) --keep the CPU as busy as possible ...

  9. s5-1 CPU调度

    基本概念 通过多道程序设计得到 CPU 的最高利用率 (CPU-- I/O 脉冲周期 - - 进程的执行包括进程在 CPU 上执行和等待 I/O ) 进程的执行以 CPU 脉冲开始,其后跟着 I/O ...

最新文章

  1. 在Foreda8上安装libaio-0.3.105-2.i386.rpm
  2. linux文件一列加1,Linux命令(1)-创建文件
  3. 谈一谈 MPU6050 姿态融合(转)
  4. 为什么AI感知与人类感知很难直接比较?
  5. python flask框架教程_Flask框架从入门到实战
  6. leetcode题库1314-- 矩阵区域和
  7. JAVAWeb开发之Servlet-19.Filter
  8. 2022年推荐算法效率开发必备工具榜单
  9. 2022年下半年深圳地区数据分析师认证(CPDA),[进入查看]
  10. android dts播放器下载,安卓dts音效apk安装包
  11. SAP S4 OP/Cloud大乱斗(转载)
  12. 交易日节假日查询API接口规范
  13. 【第二届PHP全球开发者大会】惠新宸(鸟哥):PHP7性能之源
  14. XSS安全漏洞修复解决方案
  15. 如何解决zt210打印标签机问题,状态灯和耗材灯都变为红色,打印空白 打印不全 且偏了
  16. BootLoader这个玩意
  17. 拼多多店铺被投诉出现降权怎么办?【淘宝erp、打单发货接口】
  18. 链路追踪工具 skywalking
  19. K8S(Kubernetes)
  20. 第三空间与第四空间的幻想(序言篇)

热门文章

  1. c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例
  2. 接口隔离原则_是时候深入学习一下“接口隔离原则”了
  3. 过年装X神器,快速获取 wifi 密码!
  4. 天津大学张梅山老师要招NLP方向的研究生啦!
  5. GitHub 4.6 万星:Windows Terminal 预览版开放下载!
  6. MySQL编程技巧_MySQL编程中的6个重要的实用技巧
  7. android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解
  8. 正则不能全为某个值_TensorFlow学习Program1——补充附录(7)线性回归、逻辑回归与正则化...
  9. 如何做相册_腾讯相册管家再创相册管理软件新纪元
  10. hive 百分比_HIVE短期内再次突破前高