(1)使用优先数调度算法完成进程的调度 1) 采用动态优先数法确定进程的优先级别。 2) 设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。 3) 用户输入进程标识符以及进程所需要的时间,申请空间存放进程 PCB 信息。 (2)使用时间片轮转算法完成进程的调度
时间: 2023-06-16 21:02:10 浏览: 114
编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度 “简单轮转法调度算法”
5星 · 资源好评率100%
(1)动态优先数法:
动态优先数法是根据进程的行为和特征来动态地调整其优先级别,以达到合理分配 CPU 资源的目的。具体地,对于每个进程,定义一个优先数 priority,该值随着进程等待 CPU 的时间的增加而增加。例如,每等待一段时间 t,就将 priority 加上一个常数 delta。当进程获得 CPU 运行时,将其 priority 重置为一个较小的值。
算法流程如下:
1. 初始化进程队列和三个链队列:运行队列、就绪队列和完成队列。
2. 用户输入进程标识符和进程所需时间,创建进程 PCB 并加入就绪队列。
3. 进程调度器从就绪队列中选取优先级最高的进程,将其加入运行队列。
4. 运行队列中进程开始运行,每运行一个时间片,将其优先级降低一个常数 delta。
5. 如果进程运行完毕,则从运行队列中移除,并加入完成队列。
6. 如果进程未运行完毕,则重新将其加入就绪队列。
7. 如果进程被阻塞,则将其从运行队列中移除,并加入阻塞队列。
8. 如果进程解除阻塞,则将其加入就绪队列。
9. 重复步骤 3 到 8,直到所有进程都运行完毕。
(2)时间片轮转算法:
时间片轮转算法是一种基于时间片的调度算法,它将 CPU 的运行时间分成若干个时间片,每个进程在一个时间片内运行一定的时间。当时间片用完之后,进程被挂起,等待下一次调度。
算法流程如下:
1. 初始化进程队列和三个链队列:运行队列、就绪队列和完成队列。
2. 用户输入进程标识符和进程所需时间,创建进程 PCB 并加入就绪队列。
3. 进程调度器从就绪队列中选取第一个进程,将其加入运行队列。
4. 运行队列中进程开始运行,每运行一个时间片,将其优先级降低一个常数 delta。
5. 如果进程运行完毕,则从运行队列中移除,并加入完成队列。
6. 如果进程未运行完毕,则重新将其加入就绪队列的末尾。
7. 如果进程被阻塞,则将其从运行队列中移除,并加入阻塞队列。
8. 如果进程解除阻塞,则将其加入就绪队列的末尾。
9. 重复步骤 3 到 8,直到所有进程都运行完毕。
阅读全文