【问题标题】:How to scheduling the processes如何调度进程
【发布时间】:2019-04-10 22:44:55
【问题描述】:

我在安排流程作业时遇到问题,我需要帮助。

过程 P1 P2 P3 P4 P5 服务时间 120 60 180 50 300

Draw a Gantt chart that shows the completion times for each process using 

以下CPU调度:

  1. 先到先得的 CPU

  2. 最短作业优先

  3. 时间片为 60 的循环。

    优先到达时间服务时间 P0 1 3 5 P1 2 2 6 P2 1 4 7 P3 2 1 3

  4. 使用以下每种 CPU 调度技术(非抢占式)绘制甘特图,显示每个进程的完成时间。然后计算每个案例的平均等待时间和平均周转时间。 a) 先到先得 b) 最短工作优先 c) 优先级调度 d) 循环调度 (q = 5)

【问题讨论】:

  • 任何 I/O、任何对 'sleep()` 的调用等都会修改输出的顺序,
  • 这些数字到底是什么意思并不太清楚。
  • stackoverflow 不是免费的编码服务,也不是免费的软件设计服务。向我们展示您尝试过的内容并解释其输出与您预期的 I.E. 有何不同。发布minimal reproducible example,以便我们重现问题并帮助您调试。

标签: c operating-system scheduled-tasks


【解决方案1】:

假设有时间。在“time=0”处,您可以确定(对于每个调度程序,可能除了轮询)哪个进程将首先获得 CPU 时间,然后确定它将运行多长时间(对于每个调度程序,包括轮询),然后绘制甘特图上的一条线显示进程使用 CPU 的时间。然后你会有一个新的“时间”值(从第一个进程停止使用 CPU 时间开始,在你刚刚绘制的行的末尾),所以你会重复相同的步骤来确定哪个进程获得 CPU 时间接下来画另一条线;并且您将继续(针对每个调度程序)执行此操作,直到所有进程都完成为止。

您可以/应该在一张纸上试一试 - 比如草稿。如果您了解每种调度算法的工作原理,这并不难(如果您不知道某些调度算法的工作原理,很容易找到 - 例如,找到一个搜索引擎......)。

我能看到的唯一问题是没有为循环指定进程获得 CPU 时间的顺序。您可以说(对于循环法)P1 首先获得 CPU 时间,或者 P2 首先获得 CPU 时间,或者......我很想假设他们按数字顺序获得 CPU 时间(P1 首先获得 CPU 时间,然后P2,然后是 P3,..);但我也会陈述我所做的任何假设。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 2017-02-05
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多