3.2 进程调度

一、调度准则

  • CPU 使用率:需要使 CPU 尽可能忙。

  • 吞吐量:一个时间单元内完成的进程数量。对于长进程,吞吐量可能为每小时一个进程;对于短进程,吞吐量可能为每秒 10 个进程。

  • 周转时间:从进程提交到进程完成的时间段称为周转时间。

  • 等待时间:进程在就绪队列中等待所花费的时间之和。

  • 响应时间:从提交请求到产生第一响应的时间。

    进程调度准则就是要:①使 CPU 使用率和吞吐率最大化,②周转时间、等待时间和响应时间最小化。这两个准则是互相矛盾的,不可能同时满足,所以要综合考虑。

二、CPU 调度算法

2.1 FCFS(先到先服务)

​ **思路:**从就绪队列中选择一个最先进入该队列的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度。

优点:编码简单,容易理解

缺点:平均周转时间与平均等待时间一般都会较长;CPU 利用率和 IO 利用率可能都会很低:当 CPU 约束型任务与 IO 约束型任务同时执行时,IO 任务执行完 IO 需要等待 CPU,这时 IO 空闲,当 CPU 约束型任务执行完之后,此时 IO 约束型任务可以访问 CPU,但它们很快就用完 CPU 了,此时 CPU 空闲,这样,由于有一个大的进程占用 CPU,就会导致 IO 和 CPU 利用率都变低。

2.2 SJF(最短作业优先)

思路:当 CPU 空闲时,它会赋给具有最短 CPU 区间的进程,注意这里指的是最短的 CPU 区间长度,而不是总长度。

优点:平均等待时间和周转时间都最低,从而提高吞吐量。

缺点:对长进程不利

难点:没有办法知道下一个 CPU 区间的长度,一个解决办法是使用上一个区间的长度来预测下一个区间的长度。

2.3 优先级调度

思路:每个进程都有一个优先级与其关联,具有最高优先级的进程会分配到 CPU。

问题:可能会导致饥饿,即低优先级的进程可能会等待很长时间,甚至永远不会被执行,一个解决办法是老化,随着进程在系统中等待的时间加大其优先级。

2.4 轮转法调度

思路:按照时间片,将就绪队列中的进程轮流执行。

优点:平均响应时间短。

缺点:不利于处理紧急作业;时间片对性能的影响很大;平均周转时间会因为时间片太小而变大,因为增加了上下文切换。

确定时间片考虑的因素

​ 1. 系统对相应时间的要求

​ 2. 就绪队列中进程的数目

​ 3. 系统的处理能力

2.5 多级队列调度

思路:把就绪队列按照进程的类型分成多个队列,每个队列有不同的优先级和调度策略
在这里插入图片描述

缺点:一个进程进入系统时会被安排在永久地安排在一个队列中,不够灵活;低优先级队列中的进程可能永远不会被执行,导致饥饿。

2.6 多级反馈队列调度

思路:允许进程在队列之间移动。主要思想是根据 CPU 区间的特点来区分进程,如果进程使用过多的 CPU 时间,就把它移动到低优先级的队列;在低优先级中的队列如果等待时间过长,就把它移动到高优先级的队列,避免饥饿。

多级反馈队列可由下列参数来定义

​ 1、队列数量

​ 2、每个队列的调度算法

​ 3、用以确定何时升级到更高优先级队列的方法

​ 4、用以确定何时降级到耕地优先级队列的方法

​ 5、用以确定进程在需要服务时应进入哪个队列的方法

​ 可以看到,多级反馈队列调度可以综合上述提到的所有调度方法,所以它是最通用的调度方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值