一尘不染

计算(非抢占式)FCFS队列中的等待时间和周转时间

algorithm

我有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是当前系统的正常运行时间,而arrivalTime是相对于当前的系统正常运行时间。即:到达时间为0表示进程在系统启动时开始;130的到达时间表示系统启动后130个单位开始处理。

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

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

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

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


阅读 3104

收藏
2020-07-28

共1个答案

一尘不染

对于非抢占式系统,

waitingTime = startTime - arrivalTime

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime

startTime =进程开始执行的时间

finishTime =进程完成执行的时间

您可以跟踪system(timeElapsed)中当前经过的时间。首先将所有处理器分配给一个进程,然后执行直到最短的进程完成为止。然后,将这个空闲的处理器分配给队列中的下一个进程。这样做直到队列为空,
并且
所有进程都已执行完毕。另外,每当一个进程开始执行时,便对其进行重新startTime记录,并在完成时记录其finishTime(与相同timeElapsed)。这样,您就可以计算出所需的内容。

2020-07-28