平成30年秋 問16
広告
nnaさん
(No.1)
https://www.ap-siken.com/s/kakomon/30_aki/q16.html
3つのジョブを同時並列処理と書いてあるのに、解説を見ると3ジョブ×5分+2ジョブ×5分といった計算をしています。
並列なのだから全て合わせて15分で処理が終わるといったイメージなのですが、間違いなのでしょうか?
3つのジョブを同時並列処理と書いてあるのに、解説を見ると3ジョブ×5分+2ジョブ×5分といった計算をしています。
並列なのだから全て合わせて15分で処理が終わるといったイメージなのですが、間違いなのでしょうか?
2020.10.17 05:43
あさん
(No.2)
「並列」と「並行」は似ていますが意味が違います。
並列:高速化のため、1つの処理を複数のコアで分散処理する。
並行:同時進行のため、1つのコアで処理を切替えながら進める。解説に出てきたのはこちら。
CPU(コア)がある瞬間にできる処理は1つだけです。「同時並行的」は「1ミリ秒ずつ区切って切替えながら処理すれば、人間の目には同時進行しているように見える」と解釈してください。
単純に処理するとAの完了は最速で5分後、最遅で30分後ですが、今回のようなスケジューリング処理をすれば安定的に15分くらいで終わります。
並列:高速化のため、1つの処理を複数のコアで分散処理する。
並行:同時進行のため、1つのコアで処理を切替えながら進める。解説に出てきたのはこちら。
CPU(コア)がある瞬間にできる処理は1つだけです。「同時並行的」は「1ミリ秒ずつ区切って切替えながら処理すれば、人間の目には同時進行しているように見える」と解釈してください。
単純に処理するとAの完了は最速で5分後、最遅で30分後ですが、今回のようなスケジューリング処理をすれば安定的に15分くらいで終わります。
2020.10.17 09:47
あいういおさん
(No.3)
ジョブA、ジョブB、ジョブCがそれぞれ処理時間が違うことに着目する必要があります。
また、スケジューリング方式として一定時間事に実行するジョブを変更すると記載があるので、
ジョブA→ジョブB→ジョブC→ジョブA→ジョブB→ジョブC→(繰り返し)
を一定時間に切り替えてジョブを実行していきます(ここでいう一定時間は非常に短いので数秒くらいと考える)
仮に10秒ごとにジョブの切替をするとして、
ジョブA(10s)→ジョブB(10s)→ジョブC(10s)→(繰り返し)
と実行していくと、ジョブAが5分実行したタイミングで完了するため、
ジョブAが完了する周回までに5分×3=15分
同様に残ったB,Cにおいても同様の計算をすると、
ジョブB(10s)→ジョブC(10s)→(繰り返し)
のようになり、5分×2=10分
問題ではジョブBが完了するまでの時間を問われているので、
15分+10分=25分 これが答えになるわけです。
また、スケジューリング方式として一定時間事に実行するジョブを変更すると記載があるので、
ジョブA→ジョブB→ジョブC→ジョブA→ジョブB→ジョブC→(繰り返し)
を一定時間に切り替えてジョブを実行していきます(ここでいう一定時間は非常に短いので数秒くらいと考える)
仮に10秒ごとにジョブの切替をするとして、
ジョブA(10s)→ジョブB(10s)→ジョブC(10s)→(繰り返し)
と実行していくと、ジョブAが5分実行したタイミングで完了するため、
ジョブAが完了する周回までに5分×3=15分
同様に残ったB,Cにおいても同様の計算をすると、
ジョブB(10s)→ジョブC(10s)→(繰り返し)
のようになり、5分×2=10分
問題ではジョブBが完了するまでの時間を問われているので、
15分+10分=25分 これが答えになるわけです。
2020.10.17 09:53
nnaさん
(No.4)
みなさん回答ありがとうございます。
理解できました。
理解できました。
2020.10.18 17:20
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。