进程调度分为高级、中级、低级调度:
高级调度通常也称作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,准备执行;
中级调度大多针对于分时系统,是按一定的算法在内存和外存之间进行进程对换,目的在于缓和内存的紧张;
低级调度用于将内存中就绪队列中的作业分配处理机,使其执行。
进程调度通常有以下两种方式:
(1)非剥夺方式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。
(2)剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。
进程调度分功能:
(1)记录系统中所有进程的执行情况;
(2)选择占有处理机的进程;
(3)进行进程上下文切换。
那么什么时候会需要进行进程调度呢?
1.时间片到,即每个进程所分配的时间片用完后,要跳转到调度程序;
2.占用CPU的当前运行进程提出I/O操作,发起对内核的系统调用时,在系统调用结束后,跳转到调度程序;
3.当前运行进程对所有内核系统调用的结束时都要跳转到调度程序,根据当前的调度信息来决定下一个可以占用CPU的进程.
进程调度算法:
1.先来先服务调度算法:选择一个最先进入队列的进程,把处理机分配给它,让它进入执行状态。
2.短进程优先调度算法:从就绪队列中选择一个CPU执行时间预期最短的进程,将处理器分配给它是指对执行时间短的进程优先调度的算法。
3.高优先级优先调度算法:分配给就绪进程队列中优先级最高的进程。
4.时间片轮转法:将CPU的处理时间分成固定大小的时间片,让每个进程在就绪队列中的等待时间与享受服务的时间成比例。
5.多级反馈队列调度算法:系统按优先级设置N个就绪进程队列,第一级队列的优先级最高,其余队列的优先级逐个降低,第N级队列的优先级最低。