>>在什么时候进程调度有意义:当系统负载很高,时时刻刻都有 N 多个进程处于可运行状态,等待被调度运行时进程调度程序为了协调这 N 个进程的运行,必然得做非常多工作。如果当系统长时间都没有一个进程要运行,那么进程调度就没多大用处了。
>>进程的几种状态:
创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行
执行状态:进程处于就绪状态被调度后,进程进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
>>进程调度方式:
这里按照是否剥夺的方式分为两种调度方式。
1. 非剥夺方式(非抢占方式)
分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。
2. 剥夺方式(抢占方式)
当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程、优先原则、时间片原则。
>>进程调度算法:
先来先服务(FCFS):属于不可剥夺算法。算法每次从后备作业队列中选择最先进入该队列的一个或几个作业进行处理。特点:算法简单,效率低,对长作业有利,对短作业不利。
短作业优先:时间片短的任务先处理特点:有效降低作业的平均等待时间和提高系统的吞吐量。
优先级:可分为非剥夺式和剥夺式;其中优先级可分为:静态优先级和动态优先级。
时间片轮转:定义了一个的时间单元,称为时间片(或时间量)。一个时间片通常在1~100 ms之间。当正在运行的进程用完了时间片。后,即使此进程还要运行,操作系统也不让它继续运行,而是从就绪队列依次选择下一个处于就绪态的进程执行,而被剥夺CPU使用的进程返回到就绪队列的末尾,等待再次被调度。
高响应比优先调度算法:(响应比)Rp=(等待时间+预计执行时间)/执行时间=响应时间/执行时间