王道操作系统-调度算法

调度分类

  • 高级调度(作业调度)对象是作业

把作业从作业后备队伍调入内存,并创建进程

(作业:用户向系统提交一个作业=用户让操作系统启动一个程序)

作业调入创建PCB,作业调出撤销PCB

  • 中级调度(内存调度)对象是进程

把进程从挂起队列调度内存

附挂起状态:就绪挂起,阻塞挂起

  • 低级调度(处理机调度,进程调度)进程

把进程从就绪状态调入处理机(CPU)

即从就绪到运行状态

  • 三者频率依次增高,低级调度最基本调度

调度时机

主动:正常/异常结束,阻塞(无IO不考虑)

被动:时间片用完,IO中断,高优先级抢占

无法调度:中断,操作系统内核临界区,原语

附①进程处于操作系统内核临界区,无法进行和进程调度与切换

②进程在临界区可以进行处理机的调度

调度指标

先算周转时间=完成时间-到达时间

带权周转时间=周转时间/实际运行时间

等待时间=周转时间-实际运行时间

响应比=(等待时间+实际运行时间)/实际运行时间

 

  • CPU利用率
  • 吞吐量
  • 等待时间

进程:等待被服务时间,等待IO不算

作业:不仅考虑创建之后的等待时间,还要考虑在后备队列等待时间(高级调度之前的时间)

  • 响应时间

进程切换与进程调度

  • 狭义的进程调度,从就绪队列中选择一个要执行的进程,这个进程可以是刚暂停执行的进程,也可以是其他进程,后者需要进程切换
  • 广义的进程调度包括选择和进程切换两个步骤
  • 进程切换主要要做①保存原来进程各种数据②恢复新进程数据。这些数据一般都在进程控制管PCB中

各调度算法思想与规则

  • 非抢占式

①考虑当前已到达且优先级别最高算法

②只有进程主动放弃处理机才会触发调度算法

如:正常或异常结束(运行态到终止态),进入阻塞状态(运行态到阻塞态)

此外,在不考虑IO等待时间就没有阻塞机会,不考虑异常结束,所以只考虑运行时间结束即正常结束触发调度算法。

③适用于早期批处理操作系统

  • 抢占式

①在上面基础上,还要考虑就绪队列发生变化时触发调度算法。即正常结束和新进程到达。

②适用于分时和实时操作系统

具体调度算法思想和规则

  • 先到先服务FCFS 短作业不利

公平,不会饥饿

时间上先到先得

对于作业就是谁先到了后备队列,对于进程就是谁先到了就绪队列

  • 非抢占式短作业优先SJF 长作业不利

追求短的平均周转时间,会饥饿

在当前已到达且服务时间(运行时间)短的优先

  • 抢占式短作业优先SRTN 
  • 高响应比优先HRRN

综合考虑等待时间和要求服务时间(运行时间),不会饥饿

响应比:(等待时间+服务时间)/服务时间

  • 时间片轮转调度RR(常用分时操作系统)

①在时间片用完、新作业进来和作业结束时候触发调度算法

②不区分紧急度,不会导致饥饿,公平

③属于抢占式(未结束但是时间片已到就会剥夺处理机使用权

④属于进程调度(只有进入处理机才会分配时间片

⑤若时间片太大,则退化成先到先服务,响应时间过长。若时间片太小,则进程切换太频繁

⑤同一时刻,新到进程在就绪队列队首,下处理机进程在队尾,优先选择新到进程

  • 非抢占式优先级调度算法

①优先数越大,优先级别越高(不同题目不同)

②选择当前已到达且优先级最高进程,只考虑进程主动放弃触发调度。

③会饥饿

  • 抢占式优先级调度算法

还要考虑就绪对列变化是是否适合调度算法

  • 多级调度反馈算法f05e31de07d54853ba449f77919d1fd6.png daa9190ba58e47c18713fa6ef00fb4c0.png

 2ad9eb57e6554303b8ed2a54888fadf4.png

  • 多级队列调度算法ffe08a881e584ba6bfcd1f2516c17ba6.png

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值