这个结果是怎么算的呢

在单CPU 多道程序系统中并发运行两道程序P1和P2,它们的执行轨迹如下:
P1:输入机 (80ms)、CPU Crorns)、磁带机1 (30ms〉
P2:磁带机2 (20ms)、 CPU (20ms)、行式打印机( 100 ms);
两道程序所需设备均为可用状态。系统接照非抢占调度方式调度两道程序,《1)绘制各道程序、各硬件工作时序因:《2〉计算每个程序从投入到完成分别所需的时间〈周转时间》;《3〉计算两道程序从投入到完成CPU的利用率:《4)如果单道运行,则两道程序运行完牛需要多长时间?

以下内容部分参考ChatGPT模型:


这个结果是通过计算每个程序在系统中的执行时间得出的。具体来说,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
这是文字识别的?什么乱七八糟的。提问都这么潦草,说明你根本不关心知识,只是找个工具人应付老师。