2017-08-03 43 views
3

给定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毫秒。

+0

顺便说一句:CPU的复数是CPU,而不是CPU。 –

+1

谢谢,它是固定的。 – CupOfCoffee

回答

3
p0 - 5 ms 
p1 - 10 ms 
p2 - 20 ms 

方案1:

| P0 |    | | 
| P1 |    | p2 | 
\_____/    \____/ 
CPU0    CPU1 

这将需要CPU015ms完成两个作业,而CPU1将运行20ms P2完成之前,它们并行运行,所以这两个作业将完成在20ms


方案2:

| P2 |    | | 
| P0 |    | p1 | 
\_____/    \____/ 
CPU0    CPU1 

这将需要CPU025ms完成两个作业,而CPU1将运行10ms他们并行运行,而CPU110ms后进入空闲状态,这将需要CPU0额外15ms完成。因此,25ms


方案3:

| P2 |    | | 
| P1 |    | p0 | 
\_____/    \____/ 
CPU0    CPU1 

这将需要CPU030ms完成两个作业,而CPU1将运行5ms同样,他们并行运行,因此,尽管CPU15ms后会进入空闲状态,这将需要CPU0额外25ms完成。因此,30ms


注意,根据您的问题,作业保留在它们计划运行的相同CPU上。如果一个作业需要20 ms运行,另一个需要10 ms运行,则需要30 ms来完成它们。如果你的工作可以在同一个CPU的不同内核上运行,那么无论如何这将是20毫秒(这是最好的情况),但这不是一种情况。