ラウンドロビンスケジューリングによってデッドロックが発生することはありますか?CPUスケジューリングがラウンドロビンに基づいており、スケジュールのある時点で2つの異なるプロセスが、プロセスが所有していない同じファイルを要求した場合はどうなりますか?それはデッドロックを引き起こしますか、それともファイルはスケジュールの次のステップで実行されることになっているプロセスに渡されますか?
2 に答える
あなたが説明するケースはデッドロックを引き起こしません。ロックはアトミックであるため、一度に1つのプロセスのみが保持できます。したがって、その時点で制御されているプロセスはいずれもロックを取得し、2番目のプロセスは失敗します。
ただし、より一般的なケースでは、RRスケジューリングでデッドロックが発生する可能性があります。2つのプロセスと2つのロックについて考えてみます。プロセスAはロック1を取得してから、プロセッサをプロセスBに渡します。プロセスBはロック2を取得し、ロック1を取得しようとします。ロック1はプロセスAに属するため、プロセスBはスリープ状態になります。プロセスAが起動し、ロック2を取得しようとします。ロック2はまだプロセスBに属しているため、どちらのプロセスも先に進むことができず、デッドロックが発生します。
rrスケジューリングは、デッドロックを引き起こす可能性があります。たとえば、プロセスAがプリンタを要求して取得したが、そのタイムクォンタムを超え、プロセスBの通常のCPUバースト時間がタイムクォンタムと等しい場合、実行が完了します。プロセスAがまだ保持しているプリンタへの要求..キューテールでプロセスBによってまだ保留されているメモリへのエントリを待機している間..その後、デッドロックが発生しました