先来先服务算法python
时间: 2023-12-08 12:03:33 浏览: 64
先来先服务(FCFS)算法是一种非抢占式的调度算法,按照作业到达的时间顺序依次执行。下面是一个使用Python实现先来先服务算法的例子:
```python
# 定义进程类
class Process:
def __init__(self, pid, arrival_time, burst_time):
self.pid = pid # 进程ID
self.arrival_time = arrival_time # 到达时间
self.burst_time = burst_time # 执行时间
# 先来先服务算法
def fcfs(processes):
n = len(processes)
waiting_time = 0 # 等待时间
turnaround_time = 0 # 周转时间
for i in range(n):
if i == 0:
waiting_time = processes[i].arrival_time
else:
waiting_time += processes[i].burst_time
turnaround_time += waiting_time + processes[i].burst_time - processes[i].arrival_time
avg_waiting_time = waiting_time / n
avg_turnaround_time = turnaround_time / n
print("平均等待时间:", avg_waiting_time)
print("平均周转时间:", avg_turnaround_time)
# 测试
if __name__ == "__main__":
processes = [Process(1, 0, 5), Process(2, 1, 3), Process(3, 2, 8)]
fcfs(processes)
```
上述代码中,我们首先定义了一个进程类Process,包含进程ID、到达时间和执行时间三个属性。然后定义了一个fcfs函数,接收一个进程列表作为参数,计算出平均等待时间和平均周转时间并输出。最后在主函数中定义了三个进程,并调用fcfs函数进行测试。