在单CPU和两台输入/输出设备I1,I2的多道程序设计环境下,同时投入三个作业Job1,Job2,Job3运行。这三个作业对CPU和输入/输出设备的使用顺序和时间: Job1:I2(30ms);CPU(10ms);I1(30ms);CPU(10ms);I2(20ms) Job2:I1(20ms);CPU(20ms);I2(40ms) Job3:CPU(30ms);I1(20ms);CPU(10ms);I1(10ms)
时间: 2023-08-12 13:03:59 浏览: 171
这是一个典型的多道程序设计环境下的作业调度问题。根据题目给出的作业执行顺序和时间,我们可以画出它们的执行流程图如下:
```
Job1: I2(30ms) -> CPU(10ms) -> I1(30ms) -> CPU(10ms) -> I2(20ms)
Job2: I1(20ms) -> CPU(20ms) -> I2(40ms)
Job3: CPU(30ms) -> I1(20ms) -> CPU(10ms) -> I1(10ms)
```
根据流程图,我们可以得到每个作业的完成时间:
```
Job1: 100ms
Job2: 80ms
Job3: 70ms
```
因此,作业的完成顺序为:Job3 -> Job2 -> Job1。
相关问题
在一个只支持4道程序同时运行的多道程序系统中,若在一段时间内先后到达6个作业,其提交时刻和估计运行时间由下表给出。
提交时间 | 运行时间
---|---
1 | 5
2 | 2
3 | 1
4 | 6
5 | 3
6 | 4
先来一个比较直观的思路,假设每次都选最短作业优先(SJF,Shortest Job First)算法。
在 t=1 时,有 3 个作业可选,分别是 1、2、3,选择运行时间最短的 3 号作业,同时加入等待队列中的作业是 1 号作业。
在 t=4 时,有 4 个作业可选,分别是 1、2、4、5,选择运行时间最短的 5 号作业,同时加入等待队列中的作业是 2 号作业。
在 t=7 时,有 4 个作业可选,分别是 1、2、4、6,选择运行时间最短的 1 号作业,同时加入等待队列中的作业是 4 号作业。
在 t=12 时仍然有 3 个作业可选,分别是 1、2、6,选择运行时间最短的 2 号作业,同时加入等待队列中的作业是 6 号作业。
最终的结果是:
作业 | 提交时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间
---|---|---|---|---|---|---
1 | 1 | 5 | 1 | 6 | 5 | 1.000
2 | 2 | 2 | 4 | 6 | 4 | 2.000
3 | 3 | 1 | 2 | 3 | 1 | 1.000
4 | 4 | 6 | 7 | 13 | 9 | 1.500
5 | 5 | 3 | 12 | 15 | 10 | 3.333
6 | 6 | 4 | 17 | 21 | 15 | 3.750
其中,开始时间、完成时间、周转时间和带权周转时间的计算方法可以参考之前的解答。
job1和jib2在同一个五秒钟运行
非常抱歉,我之前的回答还是有误。如果您想要使job1和job2在同一个五秒钟运行,您可以使用`Cron`调度程序,它可以在指定的时间运行任务。以下是一个示例,展示如何在一个调度器中添加两个任务,使它们在同一个五秒钟运行:
```python
from apscheduler.schedulers.blocking import BlockingScheduler
def job1():
print("I'm job1...")
def job2():
print("I'm job2...")
scheduler = BlockingScheduler()
# job1和job2都在每分钟的第5秒运行
scheduler.add_job(job1, 'cron', second=5)
scheduler.add_job(job2, 'cron', second=5)
scheduler.start()
```
在这个示例中,我们使用`Cron`调度程序,它可以在指定的时间运行任务。我们使用`add_job()`方法将`job1`和`job2`添加到调度程序中,并指定它们都在每分钟的第5秒运行。这意味着它们将在同一个五秒钟运行。您可以根据自己的需求更改`Cron`表达式以指定不同的时间间隔。