平成20年秋期 午前問32
天丼饅さん
(No.1)
平成20年秋期 午前問32-------------------------------------------------------------------
処理はすべてCPU処理である三つのジョブ A,B,C がある。それらを単独で実行したときの処理時間は,ジョブAが5分,ジョブBが10分,ジョブCは15分である。この三つのジョブを次のスケジューリング方式に基づいて同時に実行すると,ジョブBが終了するまでの経過時間はおよそ何分か。
〔スケジューリング方式〕
(1)一定時間(これをタイムクウォンタムと呼ぶ)内に処理が終了しなければ,処理を中断させて,待ち行列の最後尾へ回す。
待ち行列に並んだ順に実行する。
(2)タイムクウォンタムは,ジョブの処理時間に比べて十分に小さい値とする。
(3)ジョブの切替え時間は考慮しないものとする。
---------------------------------------------------------------------------------------
解説にて、
〔スケジューリング方式〕の説明から3つのジョブは同時並行的に実行されていくことがわかります。
処理時間が5分と最も短いジョブAが完了したときは、ジョブBおよびジョブCも全体のうち5分間の処理が完了していることになり、開始からこの時点までの経過時間は3ジョブ×5分で15分となります。
となりますが、並列して実行しているのに3ジョブ×5分=15分というのが分かりません。
ジョブAが終わったときの経過時間はそのまま5分(並列処理されているので、ジョブB残5分、ジョブC残10分)となる認識なのですが。。
どなたか、解説をお願いいたします。
処理はすべてCPU処理である三つのジョブ A,B,C がある。それらを単独で実行したときの処理時間は,ジョブAが5分,ジョブBが10分,ジョブCは15分である。この三つのジョブを次のスケジューリング方式に基づいて同時に実行すると,ジョブBが終了するまでの経過時間はおよそ何分か。
〔スケジューリング方式〕
(1)一定時間(これをタイムクウォンタムと呼ぶ)内に処理が終了しなければ,処理を中断させて,待ち行列の最後尾へ回す。
待ち行列に並んだ順に実行する。
(2)タイムクウォンタムは,ジョブの処理時間に比べて十分に小さい値とする。
(3)ジョブの切替え時間は考慮しないものとする。
---------------------------------------------------------------------------------------
解説にて、
〔スケジューリング方式〕の説明から3つのジョブは同時並行的に実行されていくことがわかります。
処理時間が5分と最も短いジョブAが完了したときは、ジョブBおよびジョブCも全体のうち5分間の処理が完了していることになり、開始からこの時点までの経過時間は3ジョブ×5分で15分となります。
となりますが、並列して実行しているのに3ジョブ×5分=15分というのが分かりません。
ジョブAが終わったときの経過時間はそのまま5分(並列処理されているので、ジョブB残5分、ジョブC残10分)となる認識なのですが。。
どなたか、解説をお願いいたします。
2024.02.22 09:16
電タックさん
★FE ブロンズマイスター
(No.2)
ABC3つの物を同時に進めているので、1個の物を進めている時よりも進行度合いが3倍かかる(3分の1しか進まない)ということです。
ちなみにすごい細かいことになってしまいますが、今あるほとんどのCPU1個では完全な並列処理は出来ません。
すごい細かくCPU時間を割いて擬似的に並行して動いているように見せているだけで一瞬の状態では1つしか処理していません。
興味が合ったら
「プリエンプティブ方式/ノンプリエンプティブ方式」とかで検索するとタスク遷移のお話がたくさん出ると思います。
ちなみにすごい細かいことになってしまいますが、今あるほとんどのCPU1個では完全な並列処理は出来ません。
すごい細かくCPU時間を割いて擬似的に並行して動いているように見せているだけで一瞬の状態では1つしか処理していません。
興味が合ったら
「プリエンプティブ方式/ノンプリエンプティブ方式」とかで検索するとタスク遷移のお話がたくさん出ると思います。
2024.02.22 09:55
天丼饅さん
(No.3)
電タック様、ありがとうございます。
A終了までかかる時間=5÷3分の1=15(分);
B(残5分)終了までにかかる時間=5÷2分の1=10分;
上記足して、B終了までに25分かかるということですね。
タスク管理やパイプラインなどのお話は、参考書インプット時からかなり抜け落ちているようなのでおっしゃる通りもう一度よく調べてみます。
ありがとうございました。
A終了までかかる時間=5÷3分の1=15(分);
B(残5分)終了までにかかる時間=5÷2分の1=10分;
上記足して、B終了までに25分かかるということですね。
タスク管理やパイプラインなどのお話は、参考書インプット時からかなり抜け落ちているようなのでおっしゃる通りもう一度よく調べてみます。
ありがとうございました。
2024.02.22 10:23
テストさん
(No.4)
「同時並行的」とありますが
・処理を中断させて
・待ち行列
・ジョブの切替え
などから、CPUはどれか1つのジョブしか実行できないことが読み取れます。
たとえ話がへたくそですがよろしくお願いします。
A=目玉焼き5分
B=オムレツ10分
C=卵とじ丼15分
CPU=キッチン1か所
A,B,Cがキッチンを奪い合いながら調理します。
1分経過時点
Aが1分間調理できましたが、BとCはまだ何もできていません。ここでBがキッチンに入ってきた(ジョブの切替え)ので、Aは外に出ます(待ち行列の最後尾へ回す)。
2分経過時点
Cがキッチンに入ってきたので、Bは外に出ます。
こうしてABCが1分ごと(タイムクウォンタム)にキッチンを入れ替わり立ち代わりで調理をしていきます。15分経過時点で、Aが5分間の調理ができて完了となります。
残りBとCが同じようにぐるぐる調理をしていき、Bが完了するのはおよそ25分経過時点となります。
1分ごとにぐるぐる回した図
・処理を中断させて
・待ち行列
・ジョブの切替え
などから、CPUはどれか1つのジョブしか実行できないことが読み取れます。
たとえ話がへたくそですがよろしくお願いします。
A=目玉焼き5分
B=オムレツ10分
C=卵とじ丼15分
CPU=キッチン1か所
A,B,Cがキッチンを奪い合いながら調理します。
1分経過時点
Aが1分間調理できましたが、BとCはまだ何もできていません。ここでBがキッチンに入ってきた(ジョブの切替え)ので、Aは外に出ます(待ち行列の最後尾へ回す)。
2分経過時点
Cがキッチンに入ってきたので、Bは外に出ます。
こうしてABCが1分ごと(タイムクウォンタム)にキッチンを入れ替わり立ち代わりで調理をしていきます。15分経過時点で、Aが5分間の調理ができて完了となります。
残りBとCが同じようにぐるぐる調理をしていき、Bが完了するのはおよそ25分経過時点となります。
1分ごとにぐるぐる回した図
頭の数字は分です
_________111111111122222222223
123456789012345678901234567890
A__A__A__A__A
_B__B__B__B__B_B_B_B_B_B
__C__C__C__C__C_C_C_C_C_CCCCCC
この問題の場合において、間違いであろう並列処理の図_________111111111122222222223
123456789012345678901234567890
A__A__A__A__A
_B__B__B__B__B_B_B_B_B_B
__C__C__C__C__C_C_C_C_C_CCCCCC
_________111111
123456789012345
AAAAA
BBBBBBBBBB
CCCCCCCCCCCCCCC
123456789012345
AAAAA
BBBBBBBBBB
CCCCCCCCCCCCCCC
2024.02.22 10:25
天丼饅さん
(No.5)
テスト様
具体例および図での解説ありがとうございます。
示していただいた図だと私の間違い(完全並列になっている=3タスクをOSのマルチタスク処理ではなく本当の意味で同時実行している)がわかりやすく、理解の助けになりました。
ありがとうございました。
具体例および図での解説ありがとうございます。
示していただいた図だと私の間違い(完全並列になっている=3タスクをOSのマルチタスク処理ではなく本当の意味で同時実行している)がわかりやすく、理解の助けになりました。
ありがとうございました。
2024.02.22 13:33
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告