- 什么时候要进行进程调度?
1. 新进程被创建的时候
2. 当有进程退出的时候
3. 当进程由于等待信号量、等待IO或其他情况呗阻塞的时候
4. 当一个IO中断发生了,可能会产生进程调度
注:调度程序分为抢占式和非抢占式的 - 调度算法分类
3. 系统环境分为三大类:
- 批处理系统:用来处理工资表、银行利率计算、保险理赔、库存清单等周期性的任务。通常采用非抢占式调度算法或者是抢占式但是会给每个进程分配相当长的时间去运行,这样可以减少进程切换,提升性能。
- 交互式系统:通常采用抢占式。
- 实时系统 - 调度算法的目标
4. 所有系统:
- 公平性:让所有 进程公平的共享CPU时间
- 强制策略:让特定的策略能够被执行
- 平衡性:保持系统所有的部分都是一样忙的
5. 批处理系统:
- 吞吐量:最大化单位时间能完成的作业
- 周转时间:最小化作业提交到完成至今的时间(周转时间)
- CPU利用率:保持CPU一直处理忙碌状态
通常最大化吞吐量的调度算法不能够最小化周转时间,这两个条件在某种意义上是相互牵制的,这三个度量标准中CPU利用率相对意义较小
6. 交互式系统:
- 响应时间:快速响应请求
- 均衡性(比例原则):满足用户的期望(用户对操作一般有自己判断,有预期时间)
7. 实时系统:
- 满足截止时间:避免丢失数据
- 可预测性:避免在多媒体系统中质量变差(在这种系统中调度应该是可预测、有规律的,可以偶尔错过某个截止时间,但是不能长期处于不规律状态,将出现严重的抖动,质量急剧下降) - 批处理系统的调度算法
- FCFS(先来先服务)
- SJF(短作业优先)
- Shortest Remaining Time Next(最短剩余时间优先):短作业优先的抢占式版本。调度程序总是选择一个剩余运行时间最少的进程运行。运行时间必须已知。当一个新作业到达,它的总运行时间将被与当前进程的剩余运行时间相比较。如果新作业需要更少的时间,那么当前进程将被挂起,运行新作业。这种调度方法允许新的短作业获得更好的服务。
- 交互式系统中的调度算法
- RR(时间片轮转算法):关键是时间片的选取
时间片设置太短造成了太多的进程切换和低CPU利用率,但是设置的太高可能造成很差的响应时间对于短交互式请求。通常设置为20-50ms认为是合理的 - 优先级调度
- 为了避免高优先级进程无限期的运行下去,可以采取在每个时钟中断递减当前运行进程的优先级或者设定一个运行最大时间片。
- 通常将进程按优先级分类,类间使用优先级调度算法,类中使用时间片轮转。
- Multiple Queues(多队列)
- Shortest Process Next(短进程优先)
- RR(时间片轮转算法):关键是时间片的选取
- 实时系统的调度算法
- 可调度的条件
- 可调度的条件
进程-调度
最新推荐文章于 2023-07-25 08:00:38 发布