(1)使用优先数调度算法完成进程的调度 1) 采用动态优先数法确定进程的优先级别。 2) 设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。 3) 用户输入进程标识符以及进程所需要的时间,申请空间存放进程 PCB 信息。 优先数调度算法为每个进程设一个优先数,它总是把处理机分配给就绪队列中具有最高优先权 的进程。常用的算法有静态优先数法和动态优先数法。 动态优先数法使进程的优先权随时间而改变。初始的进程优先数取决于进程运行所需要的时 间,时间长则优先数低。可采取将进程优先数定为一个较大的数(比如 50)减去进程运行所需要 的时间。 随着进程的运行对优先数进行调整,每次运行时都是从就绪队列中选取优先数最大的进程运 行。以一个时间片为固定周期 T,每个周期动态调整各个进程的优先级,当前正在执行的进程优先 级降低(优先数减小),所有就绪进程优先级提升(优先数增加),每个时间片开始时,重新选择当 前优先级最高的进程投入运行。如果进程所需时间为 0,说明进程运行完毕,将其状态变为完成状 态“F”,将此进程 PCB 插入到完成队列中。重复上述过程,直到就绪队列为空,所有进程都变为 完成状态为止。
时间: 2023-06-20 09:09:14 浏览: 141
动态优先数高者优先进程调度算法C++源码.zip
这是一个关于进程调度的问题,我来简单解释一下。
进程调度是指操作系统中对不同进程分配CPU时间和执行顺序的过程。优先数调度算法是其中一种常用的算法,根据进程的优先级来决定哪个进程优先获得CPU时间。动态优先数法可以根据进程的运行情况动态地改变进程的优先级。
具体实现时,可以维护三个队列来表示运行队列、就绪队列和完成队列。用户可以输入进程标识符以及进程所需要的时间,申请空间存放进程 PCB 信息。每个进程都有一个初始的优先数,可以将其定为一个较大的数减去进程运行所需要的时间。随着进程的运行,可以动态调整各个进程的优先级,每个时间片开始时重新选择当前优先级最高的进程投入运行。如果进程所需时间为0,说明进程运行完毕,将其状态变为完成状态“F”,将此进程 PCB 插入到完成队列中。
以上就是这个问题的大致思路,需要注意的是,具体实现还需要考虑很多细节问题,比如如何处理优先级相同的进程、如何处理进程的阻塞等情况。
阅读全文