计算给定具有 1 ms 时间量、CPU 密集型和 I/O 密集型任务以及上下文切换时间损失的循环调度程序的 CPU 利用率

计算给定具有 1 ms 时间量、CPU 密集型和 I/O 密集型任务以及上下文切换时间损失的循环调度程序的 CPU 利用率

考虑一个运行 10 个 I/O 密集型任务和 1 个 CPU 密集型任务的系统。假设 I/O 密集型任务在 CPU 计算中每毫秒发出一次 I/O 操作,并且每个 I/O 操作需要 10 毫秒才能完成。还假设上下文切换开销为 0.1 毫秒,并且所有进程都是长时间运行的任务。

如果我们使用循环调度程序,并且时间片为 1 毫秒,那么如何计算 CPU 利用率?


我已经剧透了,我不知道如何计算 CPU 利用率。我试图推理下面的执行和时间安排,希望能走上正确的轨道。

假设 CPU 密集型任务启动,那么我们将执行如下所示的操作

[CPUB] -> [CS] -> [IO1] -> [CS] -> [IO2] -> ... -> [IO10] -> [CS] -> [CPUB]
1         0.1     1        0.1     1               1         0.1     1

从 CPU 密集型任务完成一次到再次开始执行所需的时间为1 ms for CPU-bound task+ 10 CS, each 0.1 ms+ 10 I/O-bound tasks, each 1 ms= 1 + 10*0.1 + 10*1 = 12 ms。在这 12 毫秒中,有 11 毫秒用于空闲(在每个 CS 期间和每个 I/O 密集型任务执行期间,运行任务的线程将被阻塞等待 IO,因此 CPU 将空闲)。

这一切都是正确的吗?我该如何继续?

相关内容