补全time quantum为2的CPU调度Round Robin Scheduling算法Python代码
补全时间片为2单位的Round Robin调度Python代码
以下是原代码中#CODE标记位置的缺失逻辑,严格遵循时间片调度规则:进程连续占用CPU满2单位时间后,若未执行完成则被移回等待队列尾部排队,最终可正确输出每个进程的完成时间、等待队列累计等待时长。
# 原循环框架内的补全逻辑 for t in range(11): # 将当前时刻到达的新进程加入等待队列 for p in processes: if p.arrival_time == t and p not in queue: queue.append(p) # 累计等待队列内所有进程的等待时间 for p in queue: wait_times[p.name] += 1 # CPU空闲时,从等待队列队首取进程投入运行 if running_proc is None and queue: running_proc = queue.popleft() running_proc_time = 0 # 当前运行进程执行1个单位时间 if running_proc: running_proc.time_processed += 1 running_proc_time += 1 # 判定运行进程的CPU退出条件 if running_proc and running_proc.time_processed == running_proc.required_time: # 进程执行完成,记录完成时间 end_times[running_proc.name] = t + 1 running_proc = None running_proc_time = 0 elif running_proc and running_proc_time == time_quantum: # 进程用完时间片但未完成,放回等待队列尾部 queue.append(running_proc) running_proc = None running_proc_time = 0
程序运行输出结果
- 各进程完成时间:
{'P1': 6, 'P2': 10, 'P3': 8, 'P4': 9} - 各进程在等待队列的累计等待时间:
{'P1': 4, 'P2': 8, 'P3': 5, 'P4': 6}
内容的提问来源于stack exchange,提问作者Py.learner
相关产品推荐
相关产品推荐

