计算2线程CPU的执行时间?
问题描述:
给定3个程序P0,P1,P2和两个CPU,每个CPU有2个线程。节目的运行时间分别为5,10和20毫秒。执行所有3个程序需要多长时间?假设它们不改变CPU并且在执行期间不阻塞。计算2线程CPU的执行时间?
我的答案是20毫秒,因为无论我们如何组织CPU上的程序,它们将以最慢程序(P2)的速度完成,因此20毫秒。然而,解决方案手册给出了答案20,25和30.谁能告诉我答案是怎么回事?
它说
如果P0,P2的安排同一个CPU和P1预计其它的CPU上,将需要25毫秒
的问题是,为什么不过,应该不是第一个CPU需要P2时间(20毫秒),第二个P1比P2需要更长时间,并且两个CPU同时运行也不应该是20毫秒。
答
p0 - 5 ms
p1 - 10 ms
p2 - 20 ms
方案1:
| P0 | | |
| P1 | | p2 |
\_____/ \____/
CPU0 CPU1
这将需要CPU0
15ms
完成两个作业,而CPU1
将运行20ms
P2完成之前,它们并行运行,所以这两个作业将完成在20ms
。
方案2:
| P2 | | |
| P0 | | p1 |
\_____/ \____/
CPU0 CPU1
这将需要CPU0
25ms
完成两个作业,而CPU1
将运行10ms
他们并行运行,而CPU1
将10ms
后进入空闲状态,这将需要CPU0
额外15ms
完成。因此,25ms
。
方案3:
| P2 | | |
| P1 | | p0 |
\_____/ \____/
CPU0 CPU1
这将需要CPU0
30ms
完成两个作业,而CPU1
将运行5ms
同样,他们并行运行,因此,尽管CPU1
5ms
后会进入空闲状态,这将需要CPU0
额外25ms
完成。因此,30ms
。
注意,根据您的问题,作业保留在它们计划运行的相同CPU上。如果一个作业需要20 ms运行,另一个需要10 ms运行,则需要30 ms来完成它们。如果你的工作可以在同一个CPU的不同内核上运行,那么无论如何这将是20毫秒(这是最好的情况),但这不是一种情况。
顺便说一句:CPU的复数是CPU,而不是CPU。 –
谢谢,它是固定的。 – CupOfCoffee