44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
先来先服务调度算法 (FCFS)
|
|
First Come First Served
|
|
"""
|
|
|
|
from typing import List, Dict
|
|
|
|
from base import (
|
|
Process,
|
|
ProcessScheduler,
|
|
generate_random_processes,
|
|
print_processes
|
|
)
|
|
|
|
|
|
class FCFSScheduler(ProcessScheduler):
|
|
"""先来先服务调度 (First Come First Served)"""
|
|
|
|
def schedule(self) -> Dict:
|
|
"""FCFS 调度算法"""
|
|
# 按到达时间排序
|
|
ready_queue = sorted(self.processes, key=lambda p: (p.arrival_time, p.pid))
|
|
|
|
current_time = 0
|
|
for p in ready_queue:
|
|
if p.arrival_time > current_time:
|
|
current_time = p.arrival_time
|
|
|
|
p.start_time = current_time
|
|
current_time += p.burst_time
|
|
self.calculate_metrics(p, current_time)
|
|
self.results.append(p)
|
|
|
|
return self.print_results("FCFS (先来先服务)")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
processes = generate_random_processes(n=5, seed=42)
|
|
print_processes(processes, "测试数据")
|
|
|
|
scheduler = FCFSScheduler(processes)
|
|
scheduler.schedule()
|