エンベデッドシステムスペシャリスト 2023年 午前2 問08
問題文
スケジューリングアルゴリズムにおける、リソーススタベーションに関する記述として、適切なものはどれか。
選択肢
ア:実行中の処理を中断して、強制的に指定された処理を実行すること
イ:タイムスライス方式においてプロセスを切り替える一定時間のこと
ウ:プロセスがリソースを利用している間、他のプロセスの利用を制限すること
エ:優先度の低いプロセスが、必要とするリソースを獲得できないこと(正解)
🔒 解説は解答すると表示されます
リソーススタベーション【午前2解説】
正解の理由
リソーススタベーションとは、プロセスが必要とするリソースを長時間、または事実上いつまでも獲得できず、処理が進まなくなる状態です。
たとえば、優先度の高いプロセスが次々と実行されるために、優先度の低いプロセスへCPUが割り当てられない場合があります。設問の「優先度の低いプロセスが、必要とするリソースを獲得できない」という説明は、この状態を表しているため、エが適切です。
解法ステップ
- 「スタベーション」を「飢餓状態」と結び付けます。
- プロセスが必要なリソースを獲得できず、待ち続ける状態を選びます。
- リソースの利用制限や、処理の強制中断、切替え時間といった別の概念と区別します。
選択肢別の誤答解説
- ア:実行中の処理を中断し、別の処理を実行することです。これはプリエンプション(横取り)に関する説明です。
- イ:タイムスライス方式でプロセスに割り当てる時間、またはプロセスを切り替える時間間隔に関する説明です。
- ウ:あるプロセスがリソースを利用している間、他のプロセスの利用を制限することです。相互排除に関する説明です。
- エ:優先度の低いプロセスなどが必要なリソースを獲得できず、処理を進められない状態です。リソーススタベーションを表しています。
よくある誤解
- スタベーションは、プロセスが完全に停止した状態とは限りません。処理の実行機会や必要なリソースを得られず、待ち続ける状態です。
- デッドロックと混同しがちです。デッドロックは複数のプロセスが互いに相手のリソース解放を待つ状態ですが、スタベーションは特定のプロセスがリソースを得られない状態です。
- 優先度の低いプロセスに限った現象ではありません。リソースの割当て方によって、特定のプロセスが長時間待たされる場合にも起こります。
補足コラム
優先度の高い処理を優先し続ける方式では、低優先度のプロセスが実行されない状態が続くことがあります。これを防ぐ方法の一つが、待ち時間に応じてプロセスの優先度を徐々に上げる「エージング」です。待ち続けたプロセスがいずれ実行される可能性を高められます。
FAQ
スタベーションとデッドロックの違いは何ですか?
スタベーションは、特定のプロセスが必要なリソースを得られず、長時間待つ状態です。デッドロックは、複数のプロセスが互いに相手のリソース解放を待ち、どのプロセスも進めなくなる状態です。
スタベーションはCPU以外のリソースでも起こりますか?
はい。メモリや入出力装置など、プロセスが必要とするさまざまなリソースで起こり得ます。
関連キーワード: リソーススタベーション、飢餓状態、プロセススケジューリング、優先度スケジューリング、エージング

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

