私はこの質問をされました
10個のI/0バウンドタスクと1個のCpUバウンドタスクを実行しているシステムについて考えてみます。I / Oバウンドタスクが発行され、CPUコンピューティングのミリ秒ごとに1回I / O操作が行われ、各I/O操作が完了するまでに10ミリ秒かかると想定します。また、コンテキスト切り替えのオーバーヘッドが.1ミリ秒であり、すべてのプロセスが長時間実行されるタスクであると想定します。次の場合のラウンドロビンスケジューラのCPU使用率を説明します。
a。タイムクォンタムは1ミリ秒です
b。タイムクォンタムは10ミリ秒です
そして私はそれに対する答えを見つけました
タイムクォンタムは1ミリ秒です。スケジュールされているプロセスに関係なく、スケジューラーはすべてのコンテキストスイッチに対して0.1ミリ秒のコンテキスト切り替えコストを負担します。これにより、CPU使用率は1 / 1.1 * 100 = 91%になります。
タイムクォンタムは10ミリ秒です。I/Oバウンドタスクでは、タイムクォンタムのわずか1ミリ秒を使用した後、コンテキストスイッチが発生します。したがって、すべてのプロセスを循環するのに必要な時間は10 * 1.1 + 10.1です(各I / Oバウンドタスクは1ミリ秒実行されてからコンテキストスイッチタスクが発生しますが、CPUバウンドタスクはコンテキストが発生する前に10ミリ秒実行されます)スイッチ)。したがって、CPU使用率は20 / 21.1 * 100 = 94%です。
私の唯一の質問は、この人がCPU使用率の式をどのように導き出しているのですか?20 / 21.1 * 100 = 94%、1 / 1.1 * 100 = 91%という数字がどこにあるのか理解できないようです。