- 作业调度是外存与内存之间的调度,发生频率很低,使进程从创建态到就绪态的过程;
而进程调度是从内存到CPU的调度,发生频率很高,使进程从就绪态到运行态的过程。
- 先来先服务算法
- 短作业优先算法
- 高响应比优先算法
- 时间片轮转算法
- 优先级调度算法
- 多级反馈队列算法
- 先来先服务(FCFS): 按照到达顺序,非抢占式,不会饥饿
- 短作业/进程优先(SJF): 抢占/非抢占,会饥饿
- 高响应比优先(HRRN): 综合考虑等待时间和要求服务事件计算一个优先权,非抢占,不会饥饿
- 时间片轮转(RR): 轮流为每个进程服务,抢占式,不会饥饿
- 优先级: 根据优先级,抢占/非抢占,会饥饿
- 多级反馈队列: 设置多个就绪队列,每个队列的进程按照先来先服务排队,然后按照时间片轮转分配时间片 若时间片用完还没有完成,则进入下一级队尾,只有当前队列为空时,才会为下一级队列分配时间片。 抢占式,可能会饥饿
- 先进行作业调度,从waitQueue中查询到达的作业,若作业到达则判断系统的资源是否满足该作业需求(磁带机、内存), 若满足则分配资源,转换为就绪态进程放入readyQueue中供processExecute调用
- 在每一个进程调度执行之前,先查询等待队列得到下一个进程到达的时间作为nextCriticalTime,同当前进程的burstTime进行比较, 取较小的值作为下一次时钟中断的值(就是交给进程调度的时间),时间到回到作业调度中,若进程调度执行完则返回作业号在作业调度中释放其资源。