* 系统运行并不一定存在高级调度 批处理需要 分时实时不需要
进程调度:
1)非抢占方式(Non-preemptive Mode)
一旦处理机分配给某进程,该进程一直执行。决不允许其他进程抢占已分配运行进程的处理机。
2)抢占方式(Preemptive Mode)
允许调度程序根据某种原则,暂停某个正在执行的进程,将处理机重新分配给另一进程。
挑选调度算法:
1、面向用户
2、面向系统
周转时间=等待时间+运行时间
带权周转时间=周转时间 / 运行时间
平均则除以作业数
常用调度算法
1、FCFS 先来先服务: 默认非抢占
有利于CPU繁忙型的作业,而不利于I/O繁忙的作业(进程)。
不利于短作业
2、SJF/SPF 短作业优先
平均周转时间、平均带权周转时间都有明显改善。
SJF/SPF调度算法能有效的降低作业的平均等待时间,提高系统吞吐量。
不足:
1. 对短作业有利,但同时造成了对长作业的不利。
2.由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。
3.未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)的及时处理。
3、HPF 高优先权先调度
非抢占式优先权算法 抢占式优先权算法
静态、动态优先权
4、HRRN 高响应比优先
HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高
优先权 =(等待时间+要求服务时间) / 要求服务时间
抢占的时间:1、新作业来临 2、作业阻塞 3、作业完成;
5、RR 基于时间片的轮转调度算法
将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
在一个时间片结束时,发生时钟中断。 调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前就绪的队首进程。
硬实时任务:必须满足任务对截止时间的要求
软实时任务:联系着一个截止时间,但不严格,可偶尔错过,不会对系统造成大的影响。 实时系统的任务往往带有某种程度的紧迫性,因而实时系统的调度有某些特殊要求。