题目
一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A先开始做,程序B后开始运行.程序A的运行轨迹为:计算50ms,打印100ms,再计算50 ms,打印100 ms,结束.程序B的运行轨迹为:计算50 ms,输入80 ms,再计算100 ms,结束.试说明(1)两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?(2)程序A,B有无等待CPU的情况?若有,指出发生等待的时刻.
一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A先开始做,程序B后开始运行.程序A的运行轨迹为:计算50ms,打印100ms,再计算50 ms,打印100 ms,结束.程序B的运行轨迹为:计算50 ms,输入80 ms,再计算100 ms,结束.试说明(1)两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?(2)程序A,B有无等待CPU的情况?若有,指出发生等待的时刻.
题目解答
答案
答:(1)两道程序运行期间,CPU存在空闲等待,时间为100至150ms之间(2)程序A无等待现象,但程序B有等待.程序B有等待时间段为180ms至200ms间.
解析
步骤 1:分析程序A的运行轨迹
程序A的运行轨迹为:计算50ms,打印100ms,再计算50ms,打印100ms,结束。这意味着程序A在计算时需要CPU,而在打印时需要打印机。程序A的总运行时间为50ms + 100ms + 50ms + 100ms = 300ms。
步骤 2:分析程序B的运行轨迹
程序B的运行轨迹为:计算50ms,输入80ms,再计算100ms,结束。这意味着程序B在计算时需要CPU,而在输入时需要输入机。程序B的总运行时间为50ms + 80ms + 100ms = 230ms。
步骤 3:分析CPU的空闲等待时间
程序A在计算50ms后开始打印,此时CPU空闲,打印机工作。程序A打印100ms后,CPU再次工作50ms,然后再次打印100ms。程序B在程序A开始打印100ms后开始计算50ms,然后输入80ms,此时CPU空闲,输入机工作。程序B输入80ms后,CPU再次工作100ms。因此,CPU在程序A打印100ms后到程序B开始计算50ms前这段时间内空闲等待,即100ms至150ms之间。
步骤 4:分析程序A和程序B等待CPU的情况
程序A在计算和打印之间没有等待CPU的情况,因为打印机和CPU可以同时工作。程序B在输入80ms后需要CPU工作100ms,但此时程序A还在打印,因此程序B需要等待CPU,等待时间为180ms至200ms之间。
程序A的运行轨迹为:计算50ms,打印100ms,再计算50ms,打印100ms,结束。这意味着程序A在计算时需要CPU,而在打印时需要打印机。程序A的总运行时间为50ms + 100ms + 50ms + 100ms = 300ms。
步骤 2:分析程序B的运行轨迹
程序B的运行轨迹为:计算50ms,输入80ms,再计算100ms,结束。这意味着程序B在计算时需要CPU,而在输入时需要输入机。程序B的总运行时间为50ms + 80ms + 100ms = 230ms。
步骤 3:分析CPU的空闲等待时间
程序A在计算50ms后开始打印,此时CPU空闲,打印机工作。程序A打印100ms后,CPU再次工作50ms,然后再次打印100ms。程序B在程序A开始打印100ms后开始计算50ms,然后输入80ms,此时CPU空闲,输入机工作。程序B输入80ms后,CPU再次工作100ms。因此,CPU在程序A打印100ms后到程序B开始计算50ms前这段时间内空闲等待,即100ms至150ms之间。
步骤 4:分析程序A和程序B等待CPU的情况
程序A在计算和打印之间没有等待CPU的情况,因为打印机和CPU可以同时工作。程序B在输入80ms后需要CPU工作100ms,但此时程序A还在打印,因此程序B需要等待CPU,等待时间为180ms至200ms之间。