2017-08-03 14 views
3

3つのプログラムP0、P1、P2と2つのCPUと各CPUが2つのスレッドを持つと仮定すると、プログラムの実行時間はそれぞれ5,10,20msecです。どの3つのプログラムを実行するのにどれくらい時間がかかりますか? CPUを変更せず、実行中にブロックしないと仮定します。2スレッドCPUの実行時間の計算?

私の答えは20msecです。なぜなら、CPU上でプログラムをどのように編成しても、最も遅いプログラム(P2)ほど速く完了するため、20msecです。しかし、ソリューションのマニュアルは20,25、および30の回答を示しています。誰かがその答えがどのようになったか教えていただけますか?

P0、P2が同じCPU上でスケジュールされており、P1は、他のCPU上でスケジュールされている場合それはなぜしかし、いけない問題がある25ミリ秒

がかかります

を語ります最初のCPUはP2時間(20ミリ秒)をとり、もう1つのP1はP2よりも長くかかり、両方のCPUが同時に実行されても20ミリ秒で答えるべきではないでしょうか?

+0

BTW:複数のCPUはCPUであり、CPUではありません。 –

+1

ありがとう、それは修正されています。 – CupOfCoffee

答えて

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

シナリオ1:

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

P2は、それらが並列で実行、実行されるので、両方のジョブが実行される前にCPU120msを実行する一方でそれは、両方のジョブを完了するためにCPU015msがかかります20ms


シナリオ2:

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

それはCPU110ms後のアイドル行くながらCPU1が、彼らは並列で実行10msを実行する一方で、それはかかりますが、両方のジョブを完了するためにCPU025msがかかりますCPU0追加15msが終了します。従って、25ms


シナリオ3:

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

CPU1が再び5msを実行する一方でそれは、両方のジョブを完了するためにCPU030msがかかりますCPU15ms後のアイドルになりますしばらくして、彼らは、並列で実行25msを追加すると、CPU0が終了します。従って、30ms


ジョブは、あなたの質問に従って実行予定の同じCPU上に残ります。 1つのジョブが実行に20ミリ秒を必要とし、もう1つのジョブが実行に10ミリ秒を必要とする場合は、両方を完了するのに30ミリ秒かかります。あなたの仕事が同じCPUの異なるコアで動くことができるなら、それはとにかく(最高のケースですが)20ミリ秒になりますが、それは状況に当てはまるものではありません。

関連する問題