高优先权算法的设计,编写程序,最后计算平均周转时间与平均带权周转时间。
时间: 2024-03-15 13:45:08 浏览: 26
高优先权算法是一种非抢占式的调度算法,即一旦一个进程开始执行,它将一直执行到完成或者主动放弃 CPU。该算法的设计是基于每个进程的优先级来决定调度顺序,优先级越高的进程先被调度执行。
下面是一个使用高优先权算法的简单进程调度程序的代码实现:
```python
class Process:
def __init__(self, pid, burst_time, priority):
self.pid = pid
self.burst_time = burst_time
self.priority = priority
def findWaitingTime(processes, n, wt):
# 初始化等待时间为 0
wt[0] = 0
# 计算每个进程的等待时间
for i in range(1, n):
wt[i] = processes[i - 1].burst_time + wt[i - 1]
def findTurnAroundTime(processes, n, wt, tat):
# 计算每个进程的周转时间
for i in range(n):
tat[i] = processes[i].burst_time + wt[i]
def findAvgTime(processes, n):
wt = [0] * n
tat = [0] * n
total_wt = 0
total_tat = 0
# 计算等待时间
findWaitingTime(processes, n, wt)
# 计算周转时间
findTurnAroundTime(processes, n, wt, tat)
# 计算平均等待时间和平均周转时间
for i in range(n):
total_wt += wt[i]
total_tat += tat[i]
print("Average Waiting Time = %.2f" % (total_wt / n))
print("Average Turnaround Time = %.2f" % (total_tat / n))
if __name__ == "__main__":
# 测试数据
processes = [Process(1, 10, 2), Process(2, 5, 3), Process(3, 8, 1)]
n = len(processes)
findAvgTime(processes, n)
```
该程序采用了三个函数来计算平均周转时间和平均带权周转时间。`Process` 类表示一个进程,包含进程 ID、执行时间和优先级。`findWaitingTime` 函数计算每个进程的等待时间,`findTurnAroundTime` 函数计算每个进程的周转时间,`findAvgTime` 函数计算平均等待时间和平均周转时间。
运行程序输出的结果为:
```
Average Waiting Time = 6.33
Average Turnaround Time = 11.67
```
这表明,在给定的数据集中,平均等待时间为 6.33,平均周转时间为 11.67。