调度算法

一、先来先服务FCFS (First Come First Serve)

  1.思想:

    选择最先进入后备/就绪队列的作业/进程,入主存/分配CPU

  2.优缺点

    优点:对所有作业/进程公平,算法简单稳定

    缺点:不够灵活,对紧急进程的优先处理权限不够,在相同时限下处理任务数量可能更少

二、短作业优先SJF (Shortest Job First)

  1.思想:

    可分为抢占式和非抢占式(执行时间越短,优先级越高)

    抢占式优先权,若队列后续作业/进程的优先级更高,则它抢占CPU资源,之前运行的作业/进程暂停,开始执行优先级更高的作业/进程,总结就是当前在CPU中的作业/进程总是执行时间最短,能够最快完成的

    非抢占式优先权,若当前CPU中已经有正在执行的作业/进程,则不会打断其执行过程,当后备队列中有多个进程时,下一个会先执行优先级高的作业/进程,入主存/分配CPU,总结就是下一个执行的作业/进程总是在后备队列中执行时间最短的 

  2.优缺点

    优点:灵活性高,相同时限下能处理更多的任务

    缺点:不够稳定,算法更复杂

PS:优先级调度算法与此算法类似,只不过额外指明了作业/进程的优先级以确定执行先后顺序,在此不再赘述

三、举例

  周转时间 = 完成时刻 - 进入时刻

  等待时间 = 完成时刻 - (进入时刻 + 执行时间)

  1.FCFS

    调度顺序:P1 -> P2 -> P3 -> P4

    画个Gantt图助于理解

    

    下方为不同进程进入队列次序及时间,上方为CPU中进程执行顺序表

    平均周转时间:Ta = (8 + 11 + 19 + 23) / 4 = 15.25s

    平均等待时间:Tw = (0 + 7 + 10 + 18) / 4 = 8.75s

  2.抢占式优先权调度

    调度顺序:P1 -> P2 -> P4 -> P2 -> P3 -> P1

    

      平均周转时间:Ta = (26 +  9 + 17 + 5) / 4 = 14.25s

    平均等待时间:Tw = (18 + 5 + 8 + 0) / 4 = 7.75s

  3.非抢占式SJF

    调度顺序:P1 -> P2 -> P4 -> P3

    

    平均周转时间:Ta = (8 +  11 + 24 + 14) / 4 = 14.25s

    平均等待时间:Tw = (0 + 7 + 15 + 9) / 4 = 7.75s

调度算法FCFS、SJF和优先权调度的介绍和例题的更多相关文章

  1. k8s调度器介绍(调度框架版本)

    从一个pod的创建开始 由kubectl解析创建pod的yaml,发送创建pod请求到APIServer. APIServer首先做权限认证,然后检查信息并把数据存储到ETCD里,创建deployme ...

  2. FCFS,SJF,HRN

    1.编写并调试一个单道处理系统的作业等待模拟程序. 作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF).响应比高者优先(HRN)的调度算法. 对每种调度算法都要求打印每个作业开始运行 ...

  3. 短作业优先调度算法(SJF)

    假设有n项作业位于就绪队列中,这些作业的提交时间用数组requestTimes按照提交时间的先后顺序存储,对应的作业服务时间(持续时间)用数组durations存储.采用SJF算法,计算n项作业的平均 ...

  4. Go调度器介绍和容易忽视的问题

    本文记录了本人对Golang调度器的理解和跟踪调度器的方法,特别是一个容易忽略的goroutine执行顺序问题,看了很多篇Golang调度器的文章都没提到这个点,分享出来一起学习,欢迎交流指正. 什么 ...

  5. C语言模拟实现先来先服务(FCFS)和短作业优先(SJF)调度算法

    说明 该并非实现真正的处理机调度,只是通过算法模拟这两种调度算法的过程. 运行过程如下: 输入进程个数 输入各个进程的到达事件 输入各个进程的要求服务事件 选择一种调度算法 程序给出调度结果:各进程的 ...

  6. Linux 常见的进程调度算法

    1.在介绍进程调度之前,先对进程的状态的概念应该有所了解,下面是关于进程状态的一些基本概念:进程的状态分为三种,分别为: 1).运行态:该状态表明进程在实际占用CPU 2).就绪态: 该状态下进程可以 ...

  7. 操作系统常用调度算法(转载https://www.cnblogs.com/kxdblog/p/4798401.html)

    操作系统常用调度算法   在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用.下面介绍几种常用的调度算法. 先来先服务(FCFS)调度算法 ...

  8. 操作系统学习笔记(五)--CPU调度

    由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...

  9. 0422 Step2-FCFS调度

    一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行, ...

随机推荐

  1. Redis混合存储-冷热数据识别与交换

    Redis混合存储产品是阿里云自主研发的完全兼容Redis协议和特性的混合存储产品. 通过将部分冷数据存储到磁盘,在保证绝大部分访问性能不下降的基础上,大大降低了用户成本并突破了内存对Redis单实例 ...

  2. 《ES6标准入门》(阮一峰)--3.变量的解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; l ...

  3. mysql IF-IFNULL和IF-ISNULL同样逻辑的运行差别

    首先,目标记录是存在的 SELECT * FROM d_device_user_bind dub WHERE dub.`uid`='222222222221' 其次, SELECT dub.uid,d ...

  4. Git提交出现error: src refspec master does not match any的问题

    在本地与远程分别新建了一个仓库并且关联后,想要把本地的文件提交到github上面, 输入下方命令后没有成功,而是出现了报错:error: src refspec master does not mat ...

  5. Bulma CSS - 模块化

    Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 Bulma框架 ...

  6. UVA - 10886 Standard Deviation (标准差)(数论)

    题意:下面是一个随机数发生器.输入seed的初始值,你的任务是求出它得到的前n个随机数标准差,保留小数点后5位(1<=n<=10000000,0<=seed<264). 分析: ...

  7. 使用packstack安装pike版本的openstack

    最近由于工作需要,需要调研安装pike版本的gnocchi.由于ceilometer与gnocchi版本的强相关性,所以需要部署一个同一版本的openstack环境,在同事的推荐下使用了packsta ...

  8. html特殊字符的写法

    符号 写法 (空格)   <(小于号) < >(大于号) > " " ®(已注册) ® ©(版权) © ™(商标) ™ (半方大的空白)   (全方大的空白 ...

  9. monkey命令详解《转载》

    monkey命令详解: https://blog.csdn.net/a136332462/article/details/76014412

  10. springboot + shiro+登录 微信登录 次数验证资料

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助,点击查看教程. 1.https://blog.csdn.net/xtiawxf/article/details/5 ...