计算机操作系统
7种算法+2种实时
4个任务 :A、B、C、D
调度的7种算法
1) FCFS先来先服务
算法基本思想:按照作业进入系统的先后次序来挑选作 业,先进入系统的作业优先被挑选。
优缺点 :
- 算法容易实现;
- 适用于作业调度和进程调度;
- 效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短;
- 不利于短作业和I/O型作业。
2)&3) SJF短作业(进程)优先
2 非抢占式 :从后备队列中选择一个或若干个估计运行时间最短的作业(进程),将它们调入内存运行。
3 抢占式 :从后备队列中选择一个或若干个估计剩余运行时间最短的作业(进程),将它们调入内存运行。
优缺点 :
- 算法容易实现;
- 适用于作业调度;
- 能有效降低作业的平均等待时间;
- 对长作业和紧迫作业不利,有可能导致长作业(进程)长期不被调度(出现饥饿现象);
- 要精确知道一个作业的运行时间比较困难的。
4) 高响应比优先
在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成; 或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。
优缺点 :
- 算法适用于作业调度;
- 既考虑作业等待时间,又考虑作业的运行时间 ;
- 既照顾短作业又不使长作业的等待时间过长 ;
- 计算响应比需要耗费时间。
5) 时间片轮转
所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片,时间片用完时,送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程。
优缺点 :
- 算法主要针对分时系统,适用于进程调度;
- 对用户的响应及时、快速;
- 时间片的长度确定比较困难;
- 进程切换开销比较大。
6)&7) 多级反馈队列
1、非抢占式 :应设置多个就绪队列,并为各个队列赋予不同的优先级。 第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。
当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,直到最后一个队列按时间片轮转执行。
2)抢占式 :如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。
实时系统2种
1)最早截至时间EDF
1 )非抢占式
任务1、2、3、4陆续到来,其开始截止时间3<2,则先执行任务3,此时任务4到达,开始截止时间任务4<2,则任务执行顺序为1、3、4、2。
2 )抢占式
采用最早截止时间优先算法的时间图。
- 在t = 0时,A1 和B1同时到达,由于A1的截止时间比B1早,故调度A1执行。
- 在t =10时,A1完成又调度B1执行。
- 在t = 20时, A2到达,由于A2的截止时间比B2早,B1被中断而调度A2执行。
- 在t = 30时,A2完成, 又重新调度B1执行。
- 在t = 40时,A3又到达,但B,的截止时间要比A3早,仍应让B1继续执行直到完成(t = 45),然后再调度A3执行。
- 在 t = 55时,A3完成又调度B2执行。
2)最低松弛度LLF
只有当松弛度变为0时才开始抢占,而不是任务一到来就抢占。
松弛度 = 必须 —当前 —用时
必须 :该任务的截至时间
当前:当前时间
用时:该任务执行的用时
周期性任务A、B
A:每20执行一次,执行时间10
B:每50执行一次,执行时间25
需要对每一个周期计算松弛度
LLF算法执行结果