[OS] CPU调度
调度准则
为了比较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调度的更多相关文章
- s5-1 CPU调度
基本概念 通过多道程序设计得到 CPU 的最高利用率 (CPU-- I/O 脉冲周期 - - 进程的执行包括进程在 CPU 上执行和等待 I/O ) 进程的执行以 CPU 脉冲开始,其后跟着 I/O ...
- 操作系统学习笔记:CPU调度
CPU调度的目的在于提高CPU利用率,不让CPU闲着.CPU是宝贵的资源,如果有一个进程,本来在CPU中运行,忽然因为要使用IO资源,于是转而请求IO,这边CPU挂起,造成就绪队列中的其他进程等待,这 ...
- 操作系统学习笔记(五)--CPU调度
由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...
- 【转】CPU调度
转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度 用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把 ...
- 操作系统概念学习笔记 10 CPU调度
操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...
- CPU调度
概念 1.控制,协调进程对CPU的竞争,按一定的调度算法从就绪队列中选择一个进程把CPU的使用权交给被选中的进程, 如果没有就绪进程,系统会安排一个系统空闲进程或idle进程 cpu调度要解决的三个问 ...
- 6.CPU调度
总论:所有的程序都是CPU和I/O等待交替执行 CPU调度器的操作时机 调用CPU调度器的时机,通常发生在 某一进程从执行状态转化为等待状态 某一进程从执行状态转化为就绪状态 某一进程从等待状态转为就 ...
- 操作系统(五)CPU调度
CPU调度是多道程序操作系统的基础.
- OS之进程管理---实时CPU调度
引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...
随机推荐
- c语言实现通讯录管理系统(c课程设计)
工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...
- 清华大学《C++语言程序设计进阶》线上课程笔记06---继承、派生、多态性
类的继承 保持已有类的特性而构造新类的过程称为继承; 实现设计与代码的重用. 在已有类的基础上新增自己的特性而产生新类的过程称为派生 当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程 ...
- Vue.js核心概念
# 1. Vue.js是什么? 1). 一位华裔前Google工程师(尤雨溪)开发的前端js库 2). 作用: 动态构建用户界面 3). 特点: * 遵循MVVM模式 * 编码简洁, 体积小, 运行效 ...
- MYSQL和ORACLE的一些区别
有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情况:连接很慢甚至宕机,于是就有把数据从MYSQL迁到ORAC ...
- [WebService] 使用httpWebrequest 调用并调试WebService
使用httpWebrequest 调用并调试WebService. 首先 使用httpWebrequest 调用WebService 代码: using System.Net; ...
- 北京Uber优步司机奖励政策(1月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Redis系列三 Redis数据类型
一 .Redis的五大数据类型 1.String(字符串) string是redis最基本的数据类型,可以理解成与 Memached一模一样的数据类型,一个key对应一个value. string 类 ...
- 绝地求生大逃杀BE启动失败,应用程序无法正常启动
今日更新绝地求生大逃杀后部分客户反馈绝地求生点击启动提示BE安装,应用程序无法启动 问题原因:经过排查发现,客户开启过超级工作站运行过游戏,在系统镜像包中保留了旧版的BE服务,致使新版BE无法安装,冲 ...
- android 学习四 ContentProvider
1.系统自带的许多数据(联系人,本地信息等)保存在sqllite数据库,然后封装成许多ContentProvider来供其他程序访问. 2.对sqllite数据库的操作,可以在命令行通过adb工具登录 ...
- div布局方案整理
实际项目开发过程中遇到页面 DIV 左右布局的需求:左侧 DIV 固定宽度,右侧 DIV 自适应宽度,填充满剩余页面,由此引申出本文的几种解决方案 1 左侧 DIV 设置 float 属性为 left ...