题目
设有3道程序A、B、C,它们按照优先次序(A→B→C) 顺序执行,它们的计算时间和I/O操作时间如表1-1所示, 假设3道程序以串行方式使用相同的设备进行I/O操作,试 画出单道程序运行和多道程序[1]运行的时间关系图,并计算 完成这3道程序所须花费的时间。 表1-1 时间表 时间(ms) 程序 计算 I/O操作 计算 A 30 40 10 B 60 30 10 C 20 40 20
设有3道程序A、B、C,它们按照优先次序(A→B→C) 顺序执行,它们的计算时间和I/O操作时间如表1-1所示, 假设3道程序以串行方式使用相同的设备进行I/O操作,试 画出单道程序运行和多道程序[1]运行的时间关系图,并计算 完成这3道程序所须花费的时间。 表1-1 时间表 时间(ms) 程序 计算 I/O操作 计算 A 30 40 10 B 60 30 10 C 20 40 20
题目解答
答案
**单道程序运行时间关系图及总时间:**
```
0 30 70 80 140 170 180 200 240 260
|---A计算---|---A I/O---|---A计算---|
|---B计算---|---B I/O---|---B计算---|
|---C计算---|---C I/O---|---C计算---|
```
总时间为260ms。
**多道程序运行时间关系图及总时间:**
```
0 30 70 80 90 110 120 130 150 170
|---A计算---|---A I/O---|---A计算---|
|---B计算---|---B I/O---|---B计算---|
|---C计算---|---C I/O---|---C计算---|
```
总时间为170ms。
**最终答案:**
- 单道程序运行的总时间为260ms。
- 多道程序运行的总时间为170ms。
解析
本题主要考察单道程序和多道道程序的运行时间计算及时间关系图绘制,核心是理解两种程序运行方式下CPU计算与I/O操作的资源分配差异。
一、单道程序运行分析
单道程序串行执行,即一个程序完成所有阶段(计算→I/O→计算)后,下一个程序才开始。
- 程序A:计算30ms→I/O40ms→计算10ms,总耗时=30+40+10=80ms(时间轴:0-30计算,30-70I/O70-80计算)。
- 程序B:紧接A之后,计算60ms→I/O30ms→计算10ms,总耗时=60+30+10=100ms(时间轴:80-30计算30-70I/O70-80计算)。
- 程序C:紧接B之后,计算20ms→I/O40ms→计算20ms,总耗时=20+40+20=80ms(时间轴:80-100计算100-140I/O140-160计算)。
**-30计算30-70I/O70-80计算)。
- 总时间:80(A)++100(B)+80(C)=260ms。
二、多道程序运行分析
多道程序并发执行,CPU和I/O设备可并行工作(串行共享I/O设备)。关键是前序程序的I/O操作与后续程序的计算重叠:
-
程序A:0-30计算→30-70I/O→70-80计算(完成(总80ms)。
-
程序B:在前序程序I/O时启动计算:A计算结束后立即开始(30-30?不,题目优先次序A→B→C,B需在A开始后?不,根据答案,B在A计算结束计算后立即计算:A计算30ms结束(30ms时),B开始计算(30-90,60ms),但A的I/O是30-70,B的计算与A的I/O重叠(30-70),70-30计算30-70I/O70-80计算)。
-
程序C:同理,B计算结束后立即计算:B计算结束(90ms),C开始计算(90-110,20ms),与B的I/O(90-120?不,答案中C的I/O是110-150,计算150-170),且与B的计算结束后衔接。
-
总时间:从0到最后一个程序完成(170ms),总耗时170ms。