1、批处理系统:没有太多用户操作,目标是保证吞吐量和周转时间
-
先到先服务:FCFS是非抢占式的调度算法,在就绪队列中选择最先进入队列的进程,为之分配资源,直到它执行结束/因阻塞而放弃占用CPU时,才再次重新调度。有利于长作业,但后边有短作业时只有等前边的长作业结束了才能执行。
-
短作业优先:SJF是非抢占式的调度算法,根据运行时间最短优先的顺序调度。缺点是长作业可能会饿死,如果短作业一直有加入将会一直在等待短作业结束。
-
最短剩余时间优先:短作业优先的抢占式版本,按照剩余运行时间进行排序,新作业的运行时间小于正在运行进程的剩余时间时将挂起原进程,运行新的进程。
2、交互式系统:**有大量用户操作,目标是快速进行响应
-
时间片轮转:所有的就绪进程按照FCFS原则排队,每次调度时把CPU时间分配给队首,当前进程的时间片用完之后由计时器发出时钟中断,调度程序停止该进程的执行并将之送到就绪队列尾,之后再次分配CPU时间。
该算法的效率和时间片的大小有很大关系,太小就会进程切换频繁在切换过程中浪费时间,太长就失去响应实时性。
-
多级反馈队列:克服以上几种算法的缺点,既能让优先级高的作业得到响应又能让短作业快速完成。如果一个进程需要100个时间片的话使用时间片轮转需要交换100次,多级队列设置了很多个队列,每个队列的时间片大小不同(如1、2、4、8)进程在第一个队列的一个时间片还没执行完就进入下一个队列,大大减少了交换次数。
-
优先级调度:为每个进程分配优先级,有相同优先级的进程以FCFS方式执行。
3、实时调度: 实时任务的处理要求最高优先级,通常预先规定开始/完成的截止期限。
参考🔗:https://blog.csdn.net/weixin_39793360/article/details/80731737
-
硬实时任务:必须在最后期限内开始或完成
-
软实时任务:时间限制较弱
-
非周期实时任务:不定期发生
-
周期实时任务:在每T时间单位内发生一次