2.4调度
计算密集型/IO密集型
何时调度:
- 在创建一个新进程后
- 再一个进程退出时
- 在一个进程IO和信号量或其他原因阻塞时
- 中断发生时
调度算法分类:
- 批处理
- 交互式
- 实时
调度算法的目标:
所有系统:
- 公平-给每个进程公平的CPU份额
- 策略强制执行-看到所宣布的策略执行
- 平衡-保存系统的所有部分忙碌
批处理:
- 吞吐量-每小时最大作业数
- 周转时间-从提交到终止间的最小时间
CPU利用率-保存CPU始终忙碌
交互式系统
- 响应时间-快速响应请求
平衡性-满足用户的期望
实时系统
- 满足截止时间-避免丢失数据
- 可预测性-在多媒体系统中避免品质降低
2.4.1 批处理系统
- 先来线服务
- 最短作业优先
运行时间可预知的批处理调度算法 - 最短剩余时间优先
相当于最短作业优先的抢占式版本,必须掌握有关程序的运行时间
2.4.2 交互式系统中的调用
- 轮转调度
每个进程分配一个时间片。唯一需要考虑的是时间片的长度。 - 优先级调度
每个进程被赋予一个优先级,允许优先级最高的可运行进程先运行。通常在不同优先级内实现优先级调度,而在同一个优先级内实现轮转调度,不过需要适时调整优先级否则低优先级的程序会饥饿。 - 多级队列
为CPU密集型设置更长的时间片,并对优先级分类。比如有四个优先级类,中断,IO,段时间片和长时间篇,每个优先级的cpu时间片不同长。 - 最短进程优先
如果可以估计当前作业的时间的话。 - 保证调度
一种完全不同的调度算法是想用户作出明确的性能保证,然后实现它,比如说必须跟踪进程子创建以来已使用了多少CPU时间,然后计算当前进程需要多少CPU,优先运行比例较低的程序,保证所有比较都互相接近 - 彩票制度
对不同的优先级分发不同的彩票数,彩票数和得到的cpu时间片比例相同。
这样做的好处是可以很快速的响应。
如果进程阻塞可以交换彩票,待阻塞结束后 - 公平分享调度
根据用户分配。
2.4.3 实时系统中的调度
硬实时/软实时
可调度的
2.4.4 策略和机制
机制位于内核,策略交给用户。由用户设定优先级
2.4.5 线程调度
用户级线程切换速度快,但是内核并不知道线程存在,进程内的一个线程可能占用该进程内的所有时间片,但是对其他进程的线程没有影响。
内核级用户切换速度慢,但是可以可以实现对线程更加精细的操作,同一个进程的各个线程都有时间片。