1,FCFS
先来先服务,用队列实现,一旦某个进程占据了CPU,除非程序终止或者请求某事件的发生,否则就一直占据,即非抢占式。
2,SJF
最短作业优先,平均等待时间最优。缺点是很难预估就绪队列中进程的执行时间,可以是抢占的,也可以非抢占。
3,基于优先级的调度
进程优先级可以人为规定,可以是抢占的,也可以非抢占,有可能导致饥饿。
4,时间片轮转
专为分时系统设计,用循环队列实现,抢占式。
5,多级队列调度
将就绪队列分为若干独立队列,每个队列有自己的调度算法,队列之间一般采用固定优先级抢占,即高优先级可以抢占低优先级进程的CPU。
6,多级反馈队列调度
多级队列调度虽然开销小,但不灵活。多级反馈队列调度允许进程在队列之间移动,一般优先级越高的队列,分配的时间片越小。
当一个新进程等待调度时,先将其放在第一级队列的末尾,按照FCFS调度,若在时间片内没有完成,将其放在第二级队列的末尾,依次类推...
最后一级队列中采用时间片轮转,只有上一级队列为空,才调度下一级队列中的进程。
假设正在执行第i级中的某进程,有新进程进入高优先级队列中,那么新进程抢占CPU,把第i级的该进程放回到第i级队列的末尾。