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

时间:2012-10-26 21:17:51

标签: algorithm operating-system queue scheduler

我有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,因为等待时间和爆发时间应该是完成整个过程的总时间。虽然我再一次不知道我的直觉是否正确。

非常感谢任何和所有读物!

2 个答案:

答案 0 :(得分:17)

对于非抢占式系统,

waitingTime = startTime - arrivalTime

turnaroundTime = burstTime + waitingTime = finishTime- arrivalTime

startTime =流程开始执行的时间

finishTime =流程执行完毕的时间

您可以跟踪系统中当前经过的时间(timeElapsed)。在开始时将所有处理器分配给进程,并执行直到最短进程完成执行。然后将此处理器分配给队列中的下一个进程。执行此操作直到队列为空所有进程都执行完毕。此外,无论何时进程开始执行,都会在完成时记录其startTime,并记录其finishTime(两者都与timeElapsed相同)。这样你就可以计算出你需要的东西。

答案 1 :(得分:-4)

wt = tt - cpu tm.
Tt = cpu tm + wt.

wt是等待时间,tt是周转时间。 Cpu时间也称为突发时间。