题目
在有一台输入设备和一台输出设备的计算机系统上,运行着两个程序。两个程序投入运行情况如下。 程序1先开始运行,其运行轨迹为:计算50ms、输出100ms、计算50ms、输出100ms、结束。 程序2后开始运行,其运行轨迹为:计算50ms、输入100ms、计算100ms、结束。 (1)忽略调度时间,指出两个程序运行时,CPU是否空闲?在哪一部分空闲? (2)指出程序1和程序2有无等待CPU的情况,如果有,发生在哪一部分?
在有一台输入设备和一台输出设备的计算机系统上,运行着两个程序。两个程序投入运行情况如下。 程序1先开始运行,其运行轨迹为:计算50ms、输出100ms、计算50ms、输出100ms、结束。 程序2后开始运行,其运行轨迹为:计算50ms、输入100ms、计算100ms、结束。 (1)忽略调度时间,指出两个程序运行时,CPU是否空闲?在哪一部分空闲? (2)指出程序1和程序2有无等待CPU的情况,如果有,发生在哪一部分?
题目解答
答案
( 1 ) CPU 有空闲,在 100ms~150ms 时间段是空闲的。 ( 2 )程序 1 无等待时间,而程序 2 在一开始的 0ms~50ms 时间段会等待。
解析
步骤 1:分析程序1的运行轨迹
程序1的运行轨迹为:计算50ms、输出100ms、计算50ms、输出100ms、结束。这意味着程序1在计算时需要CPU,而在输出时不需要CPU。
步骤 2:分析程序2的运行轨迹
程序2的运行轨迹为:计算50ms、输入100ms、计算100ms、结束。这意味着程序2在计算时需要CPU,而在输入时不需要CPU。
步骤 3:确定CPU空闲时间段
程序1在输出时(100ms~150ms和250ms~300ms)不需要CPU,而程序2在输入时(50ms~150ms)不需要CPU。因此,CPU在100ms~150ms时间段是空闲的。
步骤 4:确定程序等待CPU的时间段
程序1在计算时需要CPU,而程序2在计算时也需要CPU。由于程序1先开始运行,程序2在开始时(0ms~50ms)会等待CPU。
程序1的运行轨迹为:计算50ms、输出100ms、计算50ms、输出100ms、结束。这意味着程序1在计算时需要CPU,而在输出时不需要CPU。
步骤 2:分析程序2的运行轨迹
程序2的运行轨迹为:计算50ms、输入100ms、计算100ms、结束。这意味着程序2在计算时需要CPU,而在输入时不需要CPU。
步骤 3:确定CPU空闲时间段
程序1在输出时(100ms~150ms和250ms~300ms)不需要CPU,而程序2在输入时(50ms~150ms)不需要CPU。因此,CPU在100ms~150ms时间段是空闲的。
步骤 4:确定程序等待CPU的时间段
程序1在计算时需要CPU,而程序2在计算时也需要CPU。由于程序1先开始运行,程序2在开始时(0ms~50ms)会等待CPU。