OS-105

ch6 CPU调度
难度和重要性:调度和同步>进程>线程、死锁
  • 进程和线程属于概念引入。调度对象需要看环境:处理器和平台。这里看调度本身,不考虑被调度对象。
  • 基础概念;优劣标准;(key关键点)算法实现:不同情况下着重不同考虑,实时?多处理器?
  • cpu和io。执行体在不同状态下进行切换--两块:执行(cpu的执行时间)和等待(io等待)(单独出就绪队列为了区别于其他)。
  • 调度目的:最大化cpu利用率。cpu or io bursts--不能预测但是可以预判--cpu区间分布图,大多数分配给执行体是很短时间内释放,概率很低的时候长时间占据cpu,多次占用cpu但每次占用时间不长,因为是多任务的cpu同时执行多个程序,在多任务情况下调度发生频率非常高--需要处理好,处理器很重要的工作--调度。
  • os需要完成分成了两个模块:调度器(核心即调度算法)和派遣器(选好后执行切换,一旦调度成功,相关联进程状态发生变化,这些变化由派遣器来做)。
  • scheduler:前提:cpu被释放--空闲:运行到等待(非),运行到就绪(抢),等待到就绪(抢,running正常时就绪队列发生变化可能会发生抢占,新进来的进程可能优先级高于正running的),进程正常执行结束(非)--都会影响调度器--调度模式和调度类型(抢占和非抢占)。抢占和非有些调度差异。
  • 从创建到就绪。时间片用完时的调度。也存在优先级(时间片是种特殊的优先级)。
  • dispatcher:三步,花费的时间:分派延迟。//派遣延迟受硬件等一些相关影响。
  • scheduling criteria:全局角度:(利用率,吞吐量)。站在进程角度(process周转时间new--complete的数量级。 从进入就绪队列到得到cpu的等待时间--求和。进程提出请求第一次得到响应的时间--for time-sharing environment。)各系统设计目的不同,这些参数将相互制约--优化权衡时考虑着重和牺牲。
  • 相对而言,等待时间比较好实际测量来compare--容易来讲,用平均等待时间--不同算法对不同进程来讲求和后的等待时间不同,以平均来考虑。
  • 算法 FCFS SJF PS RR MQ  到达时间new,花销时间,优先级定义,轮转,综合
  • 算法的五个衡量标准。--选择最好测量的标准。实时系统以响应时间为标准。
  • 不同os在四种情况中未必全部选择调度--如果是抢占式/非抢占式--101笔记的第6点
 
调度算法  依据什么来选择就绪队列的进程?--从五个标准角度来权衡,考虑工作量,code少些--开发成本。
 
  • 五种调度算法:
  1. First-comeFirst-served(成本最低,作为管理者很简单,代码容易实现--有适合的场合,但平均情况而言效果不好--例子,护航效应convoyeffect(只买一个牙膏却要等购物车里那么多物品的人付账) 不适合分时系统,使系统性能降低);
  2. Shorter-Job-First(解决护航问题,以最小化平均等待时间。fcfs公平但性能差。此法依据next CPU burst最小来选择--按照我们的标准是最好的--理想化。分为抢占式和非抢占式。例子 2/5 2/2 1 2 4 1--2+1+5=8。但是管理者很难预测到下一进程的cpuburst--可以理论上验证但是无法实际上无法精准预测--无意义。不好实现,但可以最为标准计算出最小平均等待时间);
  3. Priority Scheduling(饥饿--解决:老化,现在用的比较多);
  4. RR(round robin)--四种算法没有最好。--各有优缺。调度器不可能选择其中一种算法。
  • 多级队列调度--变种。  反馈式队列调度--可以灵活在队列中跳转。 将队列分成若干各类。

posted on 2017-09-23 20:54  satyrs  阅读(280)  评论(0编辑  收藏  举报

导航