⾮抢占式的意思就是,当进程正在运⾏时,它就会⼀直运⾏,调度程序必须等待进程执行结束,即使该进程由于IO阻塞住了
⽽抢占式调度,顾名思义就是进程正在运⾏的时,可以被打断,使其把 CPU 让给其他进程。
衡量调度算法的好坏的准则
其中周转时间 = 等待时间(在就绪队列中等待被执行的时间) + 执行时间(实际被CPU执行的时间
响应比 = 1 + 等待时间 / 执行时间
优点: 很好地权衡了长作业和短作业
缺点: 每次调度前,需要计算每个进程的响应比,增加系统开销
[参考资料] 操作系统导论
多级反馈队列不需要事先知道进程所需要的执行时间,还可以保证
长工作之间可以公平地分享CPU,又能给短工作或交互型工作很好的响应时间
缺点: 有可能导致饥饿
所谓多级:
就是设置多个就绪队列,并为每个就绪队列设置不同的优先级,第一个队列优先级最高,第二个其次,其余队列优先级逐个降低,优先级越高的,时间片越小,相同优先级使用RR;
所谓反馈
就是可以实时调整进程的优先级,进程等待时间越长,优先级会越来越高,进程执行时间越长,优先级会越来越低
当进程执行IO操作时,也就是交互操作,此时时间片没有使用完,就会放弃对CPU的使用,此时应该保证优先级不变,目的当在进程完成IO后,CPU能及时调度该进程
当进程是CPU密集型,即需要很多时间片,即一个时间片不能执行完成,此时可以降低进程的优先级,放到下一级队列的末尾,即减少CPU的占用时间