处理器调度
什么是处理器调度
我们知道现如今的CPU往往是多核多线程的,拿作者的电脑举例子:总共4个核心,每个核心可以处理4个线程。也就是说同时能提供16个线程的并行处理。
但是如今的系统非常复杂,再加上各种大型软件,线程需要被创建,执行,销毁等,所需线程数远大于16,所以就需要cpu在不同的程序线程中来回切换,这就称为处理器调度。
调度准则
- 资源利用率
- 平衡资源:应保证所有资源都处于繁忙状态,不应该存在有些闲置,而有些很忙
- 响应时间:交互式的进程的响应时间应尽可能的短
- 周转时间:一个进程从提交到完成所需时间叫做周转时间,周转时间应该尽可能的短
- 吞吐率:应尽量保证每个单位时间内完成的进程数最多
- 公平性:确保每个用户都可以合理的获取系统资源份额
处理器调度层次
长程调度
长程调度发生在新进程的创建中,他决定了一个进程能否被创建,或者创建后是否被置成就绪态,来参加处理器资源的竞争。
中程调度
主要负责内存和外存之间的进程对换,解决内存紧张的问题。
短程调度(重点)
短程调度决定哪一个就绪的线程去占用CPU资源进行执行。
- 短程调度功能:
- 保护当前正在执行进程的现场
- 根据算法策略从就绪进程中选择一个,将CPU分配给他
- 恢复被调度到的进程的原来现场,从上次放弃的地方继续执行
- 短程调度的方式:
- 剥夺式,抢占式:优先级原则,短进程原则,时间片原则
- 非剥夺式,非抢占式:这种方式下,除非当前正在执行的线程主动让出CPU,否则其他线程没有机会执行
短程调度算法
短程调度决定哪一个就绪的线程去占用CPU资源进行执行。为了方便理解思想,我们讨论“单核单线程”的情况。
先来先服务调度
正如名字,“先来先服务”。先进入队列的线程,优先获得CPU的使用权。
缺点:不适合实时操作系统
时间片轮转法
系统将所有的就绪进程按顺序排成一个队列,每次调度 时,按照顺序把 CPU 分配给全部线程,并令其执行相同的时间片。
缺点:容易频繁切换上下文,CPU有效时间比例降低
最短进程优先调度
所需要CPU时间最短的线程优先获取CPU的使用权。
缺点:可能会产生饥饿情况
优先级调度
根据线程的优先级分配CPU。
缺点:难以确定各个线程的优先级。
多级反馈队列轮换法
上述各种调度方法都有一定的缺陷和偏向方面。 多级反馈队列调度算法是一种根据先来先服务原则给就绪队列排序,为就绪队列赋予不同的优先级数,不同的时间片,按照优先级抢占CPU的调度算法。 是一种相对公平,且高效的调度算法。