短作业优先调度算法编写建作业队列的程序段和作业调度函数
时间: 2023-11-16 17:06:48 浏览: 83
短作业优先调度算法.pdf
假设每个作业的信息包括作业编号、作业提交时间、作业运行时间,可以按照以下方式建立作业队列:
```python
class Job:
def __init__(self, job_id, submit_time, run_time):
self.job_id = job_id
self.submit_time = submit_time
self.run_time = run_time
job_list = [
Job(1, 0, 3),
Job(2, 2, 6),
Job(3, 4, 4),
Job(4, 6, 2),
Job(5, 8, 5)
]
queue = sorted(job_list, key=lambda j: j.run_time)
```
以上程序段中,我们定义了一个 Job 类来存储作业的信息,并将所有作业存储在 job_list 中。我们使用 sorted 函数将作业队列按照作业运行时间从小到大排序,以便后续调度使用。
接下来,我们可以编写一个短作业优先调度算法的作业调度函数:
```python
def sjf_scheduling(queue):
current_time = 0
waiting_time = 0
for job in queue:
waiting_time += current_time - job.submit_time
current_time += job.run_time
average_waiting_time = waiting_time / len(queue)
return average_waiting_time
```
以上程序段中,我们首先定义变量 current_time 和 waiting_time,分别用于记录当前时间和所有作业的等待时间之和。然后,我们遍历作业队列中的所有作业,并根据短作业优先调度算法,依次执行每个作业。在执行每个作业时,我们更新当前时间和等待时间。最后,我们计算平均等待时间并返回。
阅读全文