在单CPU 多道程序系统中并发运行两道程序P1和P2,它们的执行轨迹如下:
P1:输入机 (80ms)、CPU Crorns)、磁带机1 (30ms〉
P2:磁带机2 (20ms)、 CPU (20ms)、行式打印机( 100 ms);
两道程序所需设备均为可用状态。系统接照非抢占调度方式调度两道程序,《1)绘制各道程序、各硬件工作时序因:《2〉计算每个程序从投入到完成分别所需的时间〈周转时间》;《3〉计算两道程序从投入到完成CPU的利用率:《4)如果单道运行,则两道程序运行完牛需要多长时间?
这个结果是通过计算每个程序在系统中的执行时间得出的。具体来说,P1在输入机上花费了80ms,在CPU上花费了一段时间,然后在磁带机1上花费了30ms。而P2在磁带机2上花费了20ms,在CPU上花费了20ms。因为是单CPU多道程序系统,所以这两个程序在CPU上的执行时间是交替进行的,直到它们完成为止。通过计算每个程序在系统中的执行时间,我们可以得出它们的执行轨迹。
代码示例:
int p1_input_time = 80;
int p1_cpu_time = 50; //假设P1在CPU上执行了50ms
int p1_tape1_time = 30;
int p1_total_time = p1_input_time + p1_cpu_time + p1_tape1_time;
int p2_tape2_time = 20;
int p2_cpu_time = 20;
int p2_total_time = p2_tape2_time + p2_cpu_time;
//假设P1和P2交替执行,计算它们的执行轨迹
int current_time = 0;
while (p1_total_time > 0 || p2_total_time > 0) {
if (p1_total_time > 0) {
if (p1_input_time > 0) {
//P1在输入机上运行
p1_input_time--;
current_time++;
} else if (p1_cpu_time > 0) {
//P1在CPU上运行
p1_cpu_time--;
current_time++;
} else if (p1_tape1_time > 0) {
//P1在磁带机1上运行
p1_tape1_time--;
current_time++;
}
p1_total_time--;
}
if (p2_total_time > 0) {
if (p2_tape2_time > 0) {
//P2在磁带机2上运行
p2_tape2_time--;
current_time++;
} else if (p2_cpu_time > 0) {
//P2在CPU上运行
p2_cpu_time--;
current_time++;
}
p2_total_time--;
}
}
//输出P1和P2的执行轨迹
printf("P1: 输入机->CPU->磁带机1\n");
printf("P2: 磁带机2->CPU\n");
CPU Crorns
这是文字识别的?什么乱七八糟的。提问都这么潦草,说明你根本不关心知识,只是找个工具人应付老师。