1:作业调度
作业调度的主要任务是: 根据JCB的信息,按照某种规则从作业后备队列中进行挑选,给选中的作业分配内存等资源,并建立响应的进程,使其投入运行。
2:作业调度算法
先到先服务 | 短作业优先 | 高优先权优先 | 高响应比优先 |
---|---|---|---|
按照作业到达系统的先后顺序进行调度。 | 总是从后备队列中挑选运行时间最短的作业作为下一个调度运行的对象。 | 优先权分为:静态优先权(作业运行期间保持不变)动态优先权(根据作业的运行可改变优先权) | 综合考虑作业/进程的等待时间和服务时间。响应比=(等待时间+服务时间)/服务时间 |
考虑等待时间长的作业,而不考虑作业运行时间。 | 效率高,容易实现。 | 非抢占式算法,只有当前运行的进程主动放弃CPU时,才需要进行调度,调度时计算所有就绪进程的相应比,选相应比最高的进程上处理机。 | |
对长作业不利,不能保证紧急的作业被处理,作业的长短由用户估计的作业执行时间而定,不一定做到真正的短作业优先。 | 等待时间相同时,服务时间段的优先,服务时间的相同时,等待时间长的优先。避免长作业饥饿。 |
3:进程调度
进程调度时机:
- 进程执行完毕
- 时间片用完
- 执行中进程提出I/O请求或者等待事件发生而暂停
- 在进程通信或进程同步中执行了某些原语操作如p操作阻塞
- 高优先者进入
进程调度任务:
- 保护处理机现场信息
- 按照某种算法选取进程
- 将处理机分配给进程
进程调度方式:
- 非抢占式:系统一旦将处理机分配出去,此进程一直执行到完成
- 抢占式:优先权原则,短进程优先,时间片原则
4:进程调度算法
轮转调度算法 | 优先级调度算法 | 多级队列调度算法 | 多级反馈队列调度算法 | 基于公平原则的调度算法 |
---|---|---|---|---|
按照先到先服务的原则,进行时间片轮转,就绪队列的每个进程每次仅运行一个时间片(紧迫性相同)。 | 把处理机分配给就绪队列中优先级最高的进程。 | 多个就绪队列,每个队列采取不同的调度算法。 | 对其他算法的折中权衡。设置多个就绪队列,为各队列设置不同的优先级。优先级由高到低,时间片由小到大。对各类进程相对公平,每个新到达的进程都可以很快得到响应,短进程只需要较少的时间就可以完成,不必实现估计进程的运行时间,可以灵活调整对各类进程偏好程度。 | 对于进程-保证调度算法 对于用户-公平分享调度算法 |
时间片太小频繁切换进程增加系统开销,时间片太大退化为先到先服务算法。 | 优先级调度算法分为抢占式和非抢占式的优先级调度。 | 当新进程到达时,按照先到先服务的方式排到第一队列的末尾,如果在第一个时间片结束时未完成,则会到第二个队列的末尾,如此下去。如果处于最低级队列则放到末尾。 | ||
优先级类型非为静态优先级和动态优先级。 | 当执行第i级的进程时,此时有新的进程到达比i高优先级的队列中,会发生抢占处理机,未执行完的进程放到i队列的末尾。 | |||
当k级队列为空才会为k+1队列分配处理机。 |