调度准则

为了比较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. 自定义view实现圆角图片

    前两天想实现一个圆角图片的效果,通过网络搜索后找到一些答案.这里自己再记录一下,加深一下自己的认识和知识理解. 实现圆角图片的思路是自定义一个ImageView,然后通过Ondraw()重绘的功能,将 ...

  2. 优步UBER司机全国各地奖励政策汇总 (2月8日-2月14日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. 成都Uber优步司机奖励政策(3月26日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. JDBC事务机制

    package com.jdbc.test; import java.sql.*; /** * 数据库的引擎必须是innodb */ public class Demo02 { PreparedSta ...

  5. dsp5509的中断系统

    1. DSP5509有32个中断,中断分为软件中断和硬件中断,同时软件中断不可以屏蔽.软件中断由指令触发.55x在中断时DSP会自动保存ST0_55.ST1_55.ST2_55三个寄存器. 2. 其中 ...

  6. IAR环境下编译CC2640入门开发

    1. 安装SDK包,之后导入AIR里面,编译报错 看样子似乎是xdc工具的路径配置不对,进入路径配置对话窗 开始配置 配置完之后,重新编译 Fatal Error[Pe1696]: cannot op ...

  7. CC3200-LAUNCHXL仿真器驱动异常(未完成)

    1. 测试中发现,跳线帽J2和J3连接的情况下,驱动不正常如图2,不连接的情况下,驱动正常,VCC_LDO_3V3给仿真器FT2232供电,VCC_BRD这个电源很奇怪,用途不清晰,VBAT_CC是给 ...

  8. L010小结后自考题

    . 查询2号分区的inode和block的数量和尺寸 . 在lcr文件夹下创建一个a文件夹,然后进入文件夹中,创建3个3层目录,5个1层目录,5个文件 . 滤出a文件夹下的所有一级目录(4种方法) . ...

  9. mysql using filesort Using temporary

    using filesort 一般人的回答是: “当行数据太大,导致内存无法容下这些数据产生的临时表时,他们就会被放入磁盘中排序.”  很不幸,这个答案是错的 ,临时表在太大的时候确实会到磁盘离去,但 ...

  10. E2E test protractor selenium

    E2E Test和传统的Unit Test不同的是:(1)不涉及代码层面,不会去测试某段代码是否正确或者某行代码是否被覆盖(2)它是从用户的角度出发,用来测试一个应用的流程是否符合预期. 一 Sele ...