调度准则

为了比较CPU调度算法,分析员提供了许多准则,用于比较的特征对确定最佳算法有很大影响。这些准则包括:

·CPU使用率:需要使CPU尽可能忙。

·吞吐量:一个时间单元内完成进程的数量。

·周转时间:从进程提交到进程完成的时间。

·等待时间:进程在就绪队列中等待所花时间之和。

·响应时间:对于分时系统,从提交请求到第一次响应的时间。

调度算法

·先来先服务调度(FCFS)

采用这种方案,先请求CPU的进程先分配到CPU。FCFS策略可以用FIFO队列来容易的实现。

缺点:
1.周转时间与响应时间无法保证
2.对短作业不利
对于那些执行时间较短的作业或进程来说,如果它们在某些执行时间很长的作业或进程之后到达,则它们将等待很长时间。

·最短作业优先调度(SJF)

当CPU空闲时,它会赋给具有最短CPU区间的进程。如果两个进程具有相同长度,那么可以使用FCFS调度来处理。

虽然SJF算法最佳,但它不能在短期CPU调度层次上加以实现。因为没办法知道下一个CPU区间的长度。一种方法是近似SJF调度。虽然不知道下一个CPU区间的长度,但是可以预测它。认为下一个CPU区间的长度与以前的相似。因此,通过计算下一个CPU区间的长度的近似值,能选择具有最短预测CPU区间的进程来运行。下一个CPU区间通常可预测为以前CPU区间的测量长度的指数平均。

SJF算法可能是抢占的或非抢占的。

抢占:可抢占当前运行的进程。----也叫最短剩余时间优先调度(SRT)

非抢占:允许当前运行的进程先完成其CPU区间。

·最高响应比调度(HRP)

FCFS 强调的在系统的等待时间。
SJF 强调运行的时间;由此,考虑下面比值(W为在系统中等待时间,T为执行时间):

式中R既考虑了在系统的等待时间,又考虑了作业自身所需的运行时间,综合了FCFS与SJP各自特点。在进行进程调度时,从中选择响应比高者的进程投入运行。

·优先级调度

每一个进程都有一个优先级与之关联,具有最高优先级的进程会分配到CPU。具有相同优先级的进程按照FCFS顺序调度。

优先级调度可以是抢占的或非抢占的。

优先级调度算法的一个主要问题是无穷阻塞饥饿。可以运行但缺乏CPU的进程可认为是阻塞的,它在等待CPU。

低优先级进程无穷等待问题的解决办法之一是老化。老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先级。

·轮转法调度(RR)

该调度算法是专门为分时系统设计的。它类似于FCFS调度,但是增加了抢占以切换进程。定义一个较小的时间单元,成为时间片。时间片通常为10~100ms。将就绪队列作为循环队列。CPU调度程序循环就绪队列,为每个进程分配不超过一个时间片的CPU。

调度契机:

(1)进程完成:调度另一个进程运行。
(2)进程未完成:进程的执行被时钟中断,排到就绪队列尾部,调度另一个进程运行。
(3)进程因I/O等原因而被阻塞:排在阻塞队列中,调度另一个进程。当被解封后,进程的PCB表从阻塞队列摘下,排到就绪队列尾部。

算法评价:
优点:
占用CPU先后及时间长短公平
缺点:
时间片过短时,上下文切换造成系统开销大
时间片过长时,对短作业不公平

改进方法:
根据不同的工作时段根据进程数的多少计算出不同时间片。 -----减少系统开销
根据进程优先级的不同给以不同的时间片,通常优先级高的给以较小的时间片(I/0进程),优先级低的给以较大的时间片。 -----均衡各进程的周转时间

·多级队列调度

进程可容易地分成不同组的情况下,可以使用该调度算法。多级队列调度算法将就绪队列分成多个独立队列。根据进程的属性,如内存大小、进程优先级、进程类型,一个进程被永久分配到一个队列。每个队列有自己的调度算法。

·多级反馈队列调度

由于使用多级队列调度时,进程是被永久分配到一个队列中。这种设置的优点是低调度开销,缺点是不够灵活。

与之相反,多级反馈队列调度算法允许进程在队列之间移动。主要思想是根据不同CPU区间的特点以区分进程。如果进程使用过多CPU时间,那么它会被转移到更低优先级队列。这种方案将I/O约束和交互进程留在更高优先级队列。此外,在较低优先级队列中等待时间过长的进程会被转移到更高优先级队列。这种形式的老化阻止饥饿的发生。

通常,多级反馈队列调度程序可用下列参数来定义:

·队列数量

·每个队列的调度算法

·用以确定何时升级到更高优先级队列的方法

·用以确定何时降低到更低优先级队列的方法

·用以确定进程在需要服务时应进入哪个队列的方法

周转时间 = 作业完成时刻 - 作业到达时刻;-------不具有区分实际运行时间长短的性质

平均周转时间 = 作业周转总时间 / 作业个数;-----可以衡量不同调度算法对相同任务流的调度性能

带权周转时间 = 周转时间 / 实际运行时间;-------衡量长短任务的差别

平均带权周转时间 = 带权周转总时间 / 作业个数;

多处理器调度

上面主要集中讨论了单处理器系统内CPU调度问题。如果有多个CPU,则使得负载分配成为可能,但调度问题也相应变得复杂。

·多处理器调度方法

非对称多处理:让一个处理器(主服务器)处理所有的调度决定、I/O处理以及其他系统活动,其他处理器只执行用户代码。---实现简单,一个处理器访问系统数据结构,减轻了数据共享的需要。

对称多处理(SMP):每个处理器自我调度。所有进程可能处于一个共同的就绪队列中,或每个处理器都有它自己的私有就绪进程队列。无论如何,调度通过每个处理器检查共同就绪队列并选择一个进程来执行。

[OS] CPU调度的更多相关文章

  1. s5-1 CPU调度

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

  2. 操作系统学习笔记:CPU调度

    CPU调度的目的在于提高CPU利用率,不让CPU闲着.CPU是宝贵的资源,如果有一个进程,本来在CPU中运行,忽然因为要使用IO资源,于是转而请求IO,这边CPU挂起,造成就绪队列中的其他进程等待,这 ...

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

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

  4. 【转】CPU调度

    转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度   用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把 ...

  5. 操作系统概念学习笔记 10 CPU调度

    操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...

  6. CPU调度

    概念 1.控制,协调进程对CPU的竞争,按一定的调度算法从就绪队列中选择一个进程把CPU的使用权交给被选中的进程, 如果没有就绪进程,系统会安排一个系统空闲进程或idle进程 cpu调度要解决的三个问 ...

  7. 6.CPU调度

    总论:所有的程序都是CPU和I/O等待交替执行 CPU调度器的操作时机 调用CPU调度器的时机,通常发生在 某一进程从执行状态转化为等待状态 某一进程从执行状态转化为就绪状态 某一进程从等待状态转为就 ...

  8. 操作系统(五)CPU调度

    CPU调度是多道程序操作系统的基础.

  9. OS之进程管理---实时CPU调度

    引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...

随机推荐

  1. Java语法糖 : try-with-resources

    先了解几个背景知识 什么是语法糖 语法糖是在语言中增加的某种语法,在不影响功能的情况下为程序员提供更方便的使用方式. 什么是资源 使用之后需要释放或者回收的都可以称为资源,比如JDBC的connect ...

  2. pascal 的字符串操作

    1.ord 将字符转为 ascii码 2.chr 将ascii码转为字符 3.trunc 求整数部分 4.random , randomize 5.copy(s,i,l)从s串中截取第i个字符开始后长 ...

  3. HTML基础part1

    HTML基础 Web的本质就是利用浏览器访问socket服务端,socket服务端收到请求回复数据提供给浏览器进行渲染显示. import socket def main(): sock = sock ...

  4. 深圳Uber司机本周(7.13-7.19凌晨4:00)的奖励政策

    本周(7.13-7.19凌晨4:00)的奖励政策为: 佣金返还: 车费的20%适用于所有产品(不包括Tesla)无获取条件 翻倍补贴: 每周一到周四07:00-10:00/17:00-22:00:车费 ...

  5. 设置cell高度的两种方法(label高度的可变引起cell高度可变的情况)

    第一种:(iOS8以后可用) 在Xib或stroyboard中(代码也可以) 利用AutoLayout设置好label的约束(比如可以设置四个边都距离屏幕50等方式,必须四个边都要固定好). 在代码部 ...

  6. 如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染

    7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. Unity大中华区技术经理 ...

  7. JS dataTables

    原文地址: http://www.cnblogs.com/haogj/archive/2011/03/04/1971328.html   数据来源有四种: 1. 网页DOM对象 $(document) ...

  8. hdu2553N皇后问题(dfs,八皇后)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. Qt-第一个QML程序-4-自定义按钮类,动画,状态

    上篇中,我们写到了自己定义了一个按钮,但是呢,按照这样的写法,要写一个程序出来,那要累死了,所以,qml给我的感觉就是各种随便调用,所以了,可以自己写一个自己Button的qml,这样在以后用到了,就 ...

  10. Linux命令应用大词典-第8章 日期和时间

    8.1 cal:显示日历信息 8.2 date:显示和设置系统日期和时间 8.3 hwclock:查看和设置硬件时钟 8.4 clock:查看和设置硬件时钟 8.5 clockdiff:主机之间测量时 ...