调度算法仿真程序
- 实验要求
编程完成对先来先服务、短作业优先和高响应比优先三种作业调度算法。
- 代码
import threading
import datetime
import time
import numpy as np
import random
import argparse
class Job(threading.Thread):
def __init__(self, id, name,arrive):
super(Job,self).__init__()
self.id = id
self.name = name
self.arrive = arrive
self.wait = datetime.timedelta(seconds=0)
self.runtime = datetime.timedelta(seconds=np.random.rand()*\
np.random.randint(1,100))
self.isfinish = False
def run(self):
print("Start job:",self.name,'at',self.arrive,'wait',self.wait)
end_t = self.arrive + self.runtime
print("Exit job:",self.name,'at',end_t)
print()
self.isfinish = True
return end_t
def average_turnaround(jobs):
return sum([job.wait/datetime.timedelta(seconds=1)+\
job.runtime/datetime.timedelta(seconds=1)\
for job in jobs])/len(jobs)
def weighted_turnaround(jobs):
return sum([(job.wait/datetime.timedelta(seconds=1)+\
job.runtime/datetime.timedelta(seconds=1))/(job.runtime/\
datetime.timedelta(seconds=1)) for job in jobs])/len(jobs)
def FCFS(start_t,jobs):
end_t = start_t
for job in jobs:
if end_t<job.arrive:
end_t = job.run()
else:
job.wait = end_t - job.arrive
end_t = job.run