总论:所有的程序都是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调度的更多相关文章

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

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

  2. 【转】CPU调度

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

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

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

  4. s5-1 CPU调度

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

  5. [OS] CPU调度

    调度准则 为了比较CPU调度算法,分析员提供了许多准则,用于比较的特征对确定最佳算法有很大影响.这些准则包括: ·CPU使用率:需要使CPU尽可能忙. ·吞吐量:一个时间单元内完成进程的数量. ·周转 ...

  6. CPU调度

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

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

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

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

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

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

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

随机推荐

  1. Chrome的JSON View插件

    Chrome的JSON View插件 学习了:http://www.cnplugins.com/zhuanti/five-chrome-json-plugins.html 下载了:http://www ...

  2. 2016 ICPC CAMP Recording

    等了好久终于等到今天 马上能和群巨们一起学习了 希望不要暴露我太弱的本质............ 北京不冷,就是风大~~~ 1.24 8点准时起床了,准备下楼吃早饭 (这个宾馆好多美美的空姐对面就是东 ...

  3. OpenGL ES 3.0 Graphics Pipeline

    一:OpenGL ES 3.0 Graphics Pipeline  渲染管道如下图 1.Vertex Buffer/Arrays Objects的数据由应用程序传进来 2.由上图可以看到Textur ...

  4. bzoj4547: Hdu5171 小奇的集合(矩阵乘法)

    4547: Hdu5171 小奇的集合 题目:传送门 题解: 做一波大佬们的坑...ORZ 不得不说,我觉得矩阵很简单啊,就一个3*3的(直接看代码吧) 给个递推柿纸:f[i]=f[i-1]+max1 ...

  5. 计算label

    func getCGSize(size:CGSize,fontSize:CGFloat,text:String)->CGSize{ let attributes = [NSFontAttribu ...

  6. Kettle的改名由来

    不多说,直接上干货! 当时啊,因为很多开源项目到最后都成了无人管的项目,为了避免这种情况的发生,要尽快为Kettle项目构建一个社区.这就意味着,在随后的几年可能需要回答上千封的电子邮件和论坛帖子.幸 ...

  7. git工作中常用命令-工作中踩过的坑

    踩坑篇又来啦,这是我在工作中从git小白进化到现在工作中运用自如的过程中,踩过的坑,以及解决办法. 1.基于远程develop分支,建一个本地task分支,并切换到该task分支 git checko ...

  8. Mysql表引擎的切换

    转换MYSQL表的引擎 1.方法一:Alter table 将1个表的引擎修改为另一个引擎最简单的方法是使用Alter table语句. 下面的语句将myTable的引擎修改为InnoDB mysql ...

  9. 【参考】Linux下的Memcache安装

    服务器端主要是安装memcache服务器端.下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外,Memcache用到了lib ...

  10. HDU 3015 Disharmony Trees 【 树状数组 】

    题意:给出n棵树,给出横坐标x,还有它们的高度h,先按照横坐标排序,则它们的横坐标记为xx, 再按照它们的高度排序,记为hh 两颗树的差异度为 abs(xx[i] - xx[j]) * min(hh[ ...