【问题标题】:Calculating Waiting Time and Turnaround Time in (non-preemptive) FCFS queue计算(非抢占式)FCFS 队列中的等待时间和周转时间
【发布时间】:2012-10-17 04:04:14
【问题描述】:

我有6个流程如下:

-- P0 --
  arrival time = 0 
  burst time = 10  

-- P1 --
  arrival time = 110 
  burst time = 210  

-- P2 --
  arrival time = 130 
  burst time = 70  

-- P3 --
  arrival time = 130 
  burst time = 70

-- P4 --
  arrival time = 130 
  burst time = 90

-- P5 --
  arrival time = 130 
  burst time = 50

如何计算每个流程的等待时间和周转时间?系统应该是非抢占式的(进程在完成之前获取 CPU)。另外:这个系统中有 4 个逻辑处理器。

假设 systemTime 是当前系统的正常运行时间,到达时间是相对的。即:到达时间为 0 表示进程在系统启动时开始;到达时间为 130 表示进程在系统启动后 130 个单位启动。

这是正确的:waitingTime = (systemTime - arrivalTime) 吗?

我认为这是因为systemTime - arrivalTime 是进程在 fcfs 队列中等待使用 CPU 的时间(或者这是错误的吗?)

对于周转时间,我在想:turnaroundTime = burstTime + waitingTime,因为等待时间和突发时间应该是完成该过程的总时间。虽然我不知道我的直觉是否正确。

任何和所有的阅读都将不胜感激!

【问题讨论】:

    标签: algorithm operating-system queue scheduler


    【解决方案1】:

    对于非抢占式系统,

    waitingTime = startTime - arrivalTime
    
    turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime
    

    startTime = 进程开始执行的时间

    finishTime = 进程完成执行的时间

    您可以跟踪系统中当前经过的时间(timeElapsed)。一开始将所有处理器分配给一个进程,然后执行直到最短的进程执行完毕。然后将这个空闲的处理器分配给队列中的下一个进程。这样做直到队列为空并且所有进程都执行完毕。此外,每当一个进程开始执行时,记录它的startTime,当完成时,记录它的finishTime(都与timeElapsed 相同)。这样你就可以计算出你需要什么。

    【讨论】:

    • 对问题的补充:如何计算平均 CPU 利用率?
    【解决方案2】:
    wt = tt - cpu tm.
    Tt = cpu tm + wt.
    

    wt 是等待时间,tt 是周转时间。 cpu时间也叫突发时间。

    【讨论】:

      猜你喜欢
      • 2015-07-09
      • 1970-01-01
      • 2015-03-06
      • 2020-05-04
      • 2018-09-16
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      相关资源
      最近更新 更多