6.CPU调度
总论:所有的程序都是CPU和I/O等待交替执行
CPU调度器的操作时机
调用CPU调度器的时机,通常发生在
某一进程从执行状态转化为等待状态
某一进程从执行状态转化为就绪状态
某一进程从等待状态转为就绪状态
某一进程终止
注意,调度时机不限于此4种情况,有非抢占式调度,和抢占式调度
CPU调度器
决定了将CPU分配给谁
后续操作就是, CPU分配器将CPU控制权交给该进程,操作内容通常包括
上下文切换
从内核态转移至用户态
跳转至用户程序中PC寄存器所指示的位置
分配延迟
CPU分配暂停前一进程,启动后一进程所经历的时间
CPU调度追求的指标

线程调度算法
1.First-Come,First-Served(FCFS)

2.Shortest-Job-First(SJF)调度算法
算法要求:
进入就绪队列的进程预告需要多长CPU时间才能完成本次执行
算法思想:
选取就绪队列中,需要CPU时间最短的进程


3.Highest response Ratio Next

从甘特图中可以得到这个结果.以上几个算法不好实现或者效果不太好
4.优先权法(Priority Scheduling)
每个进程都有一个优先数,通常是整型数,选取就绪队列中,优先权最高的进程
当优先权定义为进程"需要的CPU时间"时,SJF算法就是有优先权法

5.轮转法(Round Robin,RR)
每个就绪进程获得一小段CPU时间(时间片,time quantum),通常10ms-100ms
时间片用完,这个进程被迫交出CPU,重新挂回到就绪队列
当然,进程在时间片用毕之前其Burst Cycle结束,也主动交出CPU
假设n个就绪进程,时间片q,每个就绪进程得到1/n的CPU时间.任何就绪进程最 多等待(n-1)q单位时间.

多层队列
把就绪队列拆分成几个队列
列入:
要求交互的进程,在前台队列
可以批处理的进程,在后台队列每个队列有其自己的调度算法
前台就绪队列 -- RR
后台就绪队列--FCFS

设计多层队列
就绪队列进入就绪队列时,决定去哪儿?
CPU怎么在队列间分配?
固定优先权法.列如,先前台队列,再后台队列
时间片办法.列如,80%的CPU时间给前台队列,20%的CPU时间给后台进 程
多层反馈队列示例
三层队列
Q0 - 用RR算法,时间片8ms
Q1 - 用RR算法,时间片16ms
Q2 - 用FCFS算法
多层反馈队列示例

调度场景
一个就绪进程进入Q0层.当它分配到CPU,可执行8ms.如果它8s后没有执行完毕,则迁移至Q1层.否则,它离开就绪队列,该干嘛干嘛.
在Q1层,当它分配到CPU,可执行16ms.如果16ms后没有执行完毕,则迁移至Q2层.否则离开就绪队列,该干嘛干嘛.
设计多层反馈队列
队列个数
每层队列它自己的调度算法
一个算法,将就绪进程升级至高层次队列
一个算法,将就绪进程降级至低层次队列
一个算法,决定当一个就绪进程进入就绪队列时,去那层
实时调度
硬实时系统 - 调度机制能够确保一个关键任务在给定的时间点前完成(必须的)
软实时计算 - 调度机制尽量给与关键任务最高优先级,尽量在预定时间点钱完 成 (尽量完成)
6.CPU调度的更多相关文章
- 操作系统学习笔记(五)--CPU调度
由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...
- 【转】CPU调度
转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度 用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把 ...
- 操作系统概念学习笔记 10 CPU调度
操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...
- s5-1 CPU调度
基本概念 通过多道程序设计得到 CPU 的最高利用率 (CPU-- I/O 脉冲周期 - - 进程的执行包括进程在 CPU 上执行和等待 I/O ) 进程的执行以 CPU 脉冲开始,其后跟着 I/O ...
- [OS] CPU调度
调度准则 为了比较CPU调度算法,分析员提供了许多准则,用于比较的特征对确定最佳算法有很大影响.这些准则包括: ·CPU使用率:需要使CPU尽可能忙. ·吞吐量:一个时间单元内完成进程的数量. ·周转 ...
- CPU调度
概念 1.控制,协调进程对CPU的竞争,按一定的调度算法从就绪队列中选择一个进程把CPU的使用权交给被选中的进程, 如果没有就绪进程,系统会安排一个系统空闲进程或idle进程 cpu调度要解决的三个问 ...
- 操作系统学习笔记:CPU调度
CPU调度的目的在于提高CPU利用率,不让CPU闲着.CPU是宝贵的资源,如果有一个进程,本来在CPU中运行,忽然因为要使用IO资源,于是转而请求IO,这边CPU挂起,造成就绪队列中的其他进程等待,这 ...
- 操作系统(五)CPU调度
CPU调度是多道程序操作系统的基础.
- OS之进程管理---实时CPU调度
引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...
随机推荐
- 数据库之Case When
近期几天的工作本来组长是安排我用mindfocion画几个图,本来以为难点是这个控件的使用,可是开发的时候才发现由于数据量有点多,所以在开发的时候汇总这些信息倒是费了我许多的功夫,最后总结一下就是写了 ...
- 【源代码】将一个整数的每位数分解并按逆序放入一个数组中(用递归算法)(C语言实现)
帮朋友做的,好像是一个面试题.假设不过考察递归的话.应该是够了,程序的健壮性和通用性都非常一般的说-- #include <stdio.h> #include <stdlib.h&g ...
- C++继承中析构函数 构造函数的调用顺序以及虚析构函数
首先说说构造函数.大家都知道构造函数里就能够调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就能够调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...
- cocos2d-x_AnchorPoint锚点
锚点是定位和变换操作的一个重点.锚点我们能够看成用一根图钉将一张纸或者相片钉在墙上的那个点. 节点的位置是由我们设置的position和anchor point一起决定的. 值得一提的是,anchor ...
- BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp
1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑 ...
- bzoj4519: [Cqoi2016]不同的最小割(分治最小割)
4519: [Cqoi2016]不同的最小割 题目:传送门 题解: 同BZOJ 2229 基本一样的题目啊,就最后用set记录一下就ok 代码: #include<cstdio> #inc ...
- iOS定义静态变量、静态常量、全局变量
静态变量 当我们希望一个变量的作用域不仅仅是作用域某个类的某个对象,而是作用域整个类的时候,这时候就可以使用静态变量. staticstatic修饰的变量,是一个私有的全局变量.C或者Java中sta ...
- 51nod 1096 距离之和最小 思维题,求中位数
题目: 在一条直线上,与两个点距离之和最小的点,是怎样的点? 很容易想到,所求的点在这两个已知点的中间,因为两点之间距离最短. 在一条直线上,与三个点距离之和最小的点,是怎样的点? 由两个点的规律,我 ...
- Uncaught TypeError: undefined is not a function
index.html <script src="resources/sap-ui-core.js" id="sap-ui-bootstrap" data- ...
- 关联对象 AssociatedObject 完全解析
我们在 iOS 开发中经常需要使用分类(Category),为已经存在的类添加属性的需求,但是使用 @property 并不能在分类中正确创建实例变量和存取方法. 不过,通过 Objective-C ...