HOME»基本情報技術者試験掲示板»平成30年秋期 午後問2設問1
投稿する
平成30年秋期 午後問2設問1 [1682]
タロウさん(No.1)
平成30年秋期 午後問2「プロセスのスケジュールリング」の設問1に関して質問です。
CPUにタスクを割り当てるのにウンドロビン方式を利用していますが、問題のプロセスXの処理1を処理する際、30ミリ秒の処理1を処理するのに20ミリ秒のタイムクォンタムが経過して、処理1が残りの10ミリ秒を残して、実行可能状態になってから再び処理されています。
これは、問題の図2にある「プロセスXの処理順序」の通りに処理1完了後に入力待ち1を実行という風に、逐次実行をしているということでしょうか?(つまり、処理1が終わらないと次の処理の実行に進まない)
キューの構造を使ったラウンドロビン方式では、一定時間をもとに順番に処理を実行するので、処理1でタイムクォンタムが経過したら残りの処理1の処理をキューの最後に格納して、次に入出力待ち1を実行すると考えていたのですが、もしかして私のラウンドロビン方式の認識が間違っているのでしょうか?(これだと、解答だとまるで逐次実行をしているようで、タイムクォンタムを設けている意味が少し理解できませんでした)
長文失礼しました。
CPUにタスクを割り当てるのにウンドロビン方式を利用していますが、問題のプロセスXの処理1を処理する際、30ミリ秒の処理1を処理するのに20ミリ秒のタイムクォンタムが経過して、処理1が残りの10ミリ秒を残して、実行可能状態になってから再び処理されています。
これは、問題の図2にある「プロセスXの処理順序」の通りに処理1完了後に入力待ち1を実行という風に、逐次実行をしているということでしょうか?(つまり、処理1が終わらないと次の処理の実行に進まない)
キューの構造を使ったラウンドロビン方式では、一定時間をもとに順番に処理を実行するので、処理1でタイムクォンタムが経過したら残りの処理1の処理をキューの最後に格納して、次に入出力待ち1を実行すると考えていたのですが、もしかして私のラウンドロビン方式の認識が間違っているのでしょうか?(これだと、解答だとまるで逐次実行をしているようで、タイムクォンタムを設けている意味が少し理解できませんでした)
長文失礼しました。
2019.03.05 16:52
助け人さん(No.2)
★FE ゴールドマイスター
図2にある「プロセスXの処理順序」の通りに処理1完了後に入力待ち1を実行という風に、逐次実行をしているということでしょうか?(つまり、処理1が終わらないと次の処理の実行に進まない)
→ その通りです。処理1は2回に分割して実行されているだけですから、2回目が終わった後に入出力待ち1へ移ります。
キューの構造を使ったラウンドロビン方式では、一定時間をもとに順番に処理を実行するので、処理1でタイムクォンタムが経過したら残りの処理1の処理をキューの最後に格納して、次に入出力待ち1を実行すると考えていたのですが、もしかして私のラウンドロビン方式の認識が間違っているのでしょうか?
→ ちょっとした勘違いだと思います。例えば、処理1の代わりにタスク1到着、その後の入出力待ち1の代わりにタスク2到着の場合は、タスク1のタイムクォンタムが経過してタスク1をキューの最後に格納したとき、タスク2がキューの先頭で待っていますから、次にタスク2を実行します。この問題では、同一のプロセスの中での処理1→入出力待ち1ですから、処理1が終了しないと入出力待ち1へ移れません。
長文失礼しました。
→ その通りです。処理1は2回に分割して実行されているだけですから、2回目が終わった後に入出力待ち1へ移ります。
キューの構造を使ったラウンドロビン方式では、一定時間をもとに順番に処理を実行するので、処理1でタイムクォンタムが経過したら残りの処理1の処理をキューの最後に格納して、次に入出力待ち1を実行すると考えていたのですが、もしかして私のラウンドロビン方式の認識が間違っているのでしょうか?
→ ちょっとした勘違いだと思います。例えば、処理1の代わりにタスク1到着、その後の入出力待ち1の代わりにタスク2到着の場合は、タスク1のタイムクォンタムが経過してタスク1をキューの最後に格納したとき、タスク2がキューの先頭で待っていますから、次にタスク2を実行します。この問題では、同一のプロセスの中での処理1→入出力待ち1ですから、処理1が終了しないと入出力待ち1へ移れません。
長文失礼しました。
2019.03.05 19:48
タロウさん(No.3)
詳しい回答ありがとうございます。
助かります。
確認させてほしいのですが、勘違いとは、「ラウンドロビン方式についての認識」ではなく、「問題文から読み取れる、プロセスX内の処理の実行の順序」でしょうか?
つまり、今回の問題に限り、処理1から入出金待ち1への逐次実行の流れが決まっているが、それを私が勘違いして「ラウンドロビン方式だから処理1はタイムクォンタム経過後にキューの最後に移動するはず」と解釈した、ということでしょうか?
そこが少し不安になってしまって。
重ね重ねすみません。
助かります。
確認させてほしいのですが、勘違いとは、「ラウンドロビン方式についての認識」ではなく、「問題文から読み取れる、プロセスX内の処理の実行の順序」でしょうか?
つまり、今回の問題に限り、処理1から入出金待ち1への逐次実行の流れが決まっているが、それを私が勘違いして「ラウンドロビン方式だから処理1はタイムクォンタム経過後にキューの最後に移動するはず」と解釈した、ということでしょうか?
そこが少し不安になってしまって。
重ね重ねすみません。
2019.03.06 12:54
助け人さん(No.4)
★FE ゴールドマイスター
言葉足らずだったかもしれません。
(No.1)にある「処理1でタイムクォンタムが経過したら残りの処理1の処理をキューの最後に格納して、次に入出力待ち1を実行すると考えていた」を見て、処理1があるタスク(この問題ではプロセス)、入出力待ち1が別のタスク(この問題ではプロセス)であるかのような解釈をされていると思いました。
「残りの処理1の処理をキューの最後に格納」ではなく、「処理1の続きから実行できるようにプロセスXをキューの最後に格納」です。入出力待ち1は、プロセスX内の残りの処理1の次の処理であり、これ単独でプロセスではありませんので、残りの処理1より先に実行するわけにはいきません。
(No.1)にある「処理1でタイムクォンタムが経過したら残りの処理1の処理をキューの最後に格納して、次に入出力待ち1を実行すると考えていた」を見て、処理1があるタスク(この問題ではプロセス)、入出力待ち1が別のタスク(この問題ではプロセス)であるかのような解釈をされていると思いました。
「残りの処理1の処理をキューの最後に格納」ではなく、「処理1の続きから実行できるようにプロセスXをキューの最後に格納」です。入出力待ち1は、プロセスX内の残りの処理1の次の処理であり、これ単独でプロセスではありませんので、残りの処理1より先に実行するわけにはいきません。
2019.03.06 18:23
タロウさん(No.5)
回答ありがとうございます。
なるほど!
確かに問題文には、ラウンドロビン方式でキューの出し入れの対象となるのはそれぞれの「プロセス内の処理」ではなく、「プロセス」と書いてあるのを見落としていました。
ラウンドロビン方式で処理するという文章から、プロセス内のそれぞれの処理がそのように処理されると勝手に早とちりしていました。
キューの出し入れの対象になっているのはプロセス自体で、プロセスXに番が回ってきたら残っている処理をタイムクォンタムまで順次行う、という意図だったのですね。
完全に問題文の意図を読み違えていことに気が付きました。
こちらの理解力が足らずすみません。
丁寧な解説ありがとうございます。
スッキリしました。
なるほど!
確かに問題文には、ラウンドロビン方式でキューの出し入れの対象となるのはそれぞれの「プロセス内の処理」ではなく、「プロセス」と書いてあるのを見落としていました。
ラウンドロビン方式で処理するという文章から、プロセス内のそれぞれの処理がそのように処理されると勝手に早とちりしていました。
キューの出し入れの対象になっているのはプロセス自体で、プロセスXに番が回ってきたら残っている処理をタイムクォンタムまで順次行う、という意図だったのですね。
完全に問題文の意図を読み違えていことに気が付きました。
こちらの理解力が足らずすみません。
丁寧な解説ありがとうございます。
スッキリしました。
2019.03.06 19:27