最高优先数算法基本思想
进程调度每次是把CPU分配给就绪队列中优先数最高的进程。进程优先数的设置可以是静态的也可以是动态的。
静态优先数是在进程创建时根据进程初始特性或用户要求确定的,并在整个进程运行期间不能再改变。
动态优先数是指在进程创建时先确定一个初始优先数, 以后在进程运行中随着进程特性的改变(如等待时间增长),不断修改优先数,这样,由于开始优先数很低而得不到CPU的进程,就能因为等待时间的增长而优先数变为最高而得到CPU运行。
在实际系统中,调度模式是几种算法的结合
具有相同优先数的进程:
按先进先出的算法
按时间片轮转法
时间片轮转算法基本思想
所有就绪进程按 FCFS的原则排成一个队列,将新来的进程加到就绪对列的末尾,每当执行进程调度时,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。也就是说CPU的处理时间划分成一个个相同的时间片,就绪队列的所有进程轮流运行一个时间片。
当一个时间片结束时,如果运行进程用完它的时间片后还未完成,就强迫运行进程让出CPU,就把它送回到就绪队列的末尾,等待下一次调度。同时,进程调度又去选择就绪队列中的队首进程,分配给它一时间片,以投入运行。直至所有的进程运行完毕。
多级反馈队列调度实现思想
允许进程在队列之间移动。
在系统中设置多个就绪队列,每个队列对应一个优先级,第一个队列的优先级最高,第二队列次之。以下各队列的优先级逐步低。
各就绪队列中的进程的运行时间片不同,高优先级队列的时间片小,低优先级队列的时间片大。
进程并非总是固定在某一队列中,新进程进入系统后,被存放在第一个队列的末尾。如果某个进程在规定的时间片内没有完成工作,则把它转入到下一个队列的末尾,直至进入最后一个队列。
系统先运行第一个队列中的进程。当第一队列为空时,才运行第二个队列中的进程。依此类推,仅当前面所有的队列都为空时,才运行最后一个队列中的进程。
当处理器正在第i个队列中为某个进程服务时,又有新进程进入优先级最高的队列(第1―(i-1)中的任何一个对列),则此新进程要抢占正在运行进程的处理器,即由调度程序把正在运行的进程放回第i队列的末尾,把处理器分配给新到的高优先级进程。
除最低优先权队列外的所有其他队列,均采用相同的进程调度算法,即按时间片轮转的FIFO(先进先出)算法。
最后一个队列中的进程按按时间片轮转或FCFS策略进行调度。
它是综合了FIFO、RR和剥夺式HPF的一种进程调度算法
实验方法
设计相应的数据结构建立进程控制块(PCB)和进程队列
每个进程用一个进程控制块PCB来代表
进程控制块PCB
在进程控制块中保存进程状态、进程标识符,处理机状态。程序和数据的内存地址等内容。